| 
					
				 | 
			
			
				@@ -4,6 +4,7 @@ import ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"testing" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"github.com/stretchr/testify/assert" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"gopkg.in/src-d/hercules.v2/rbtree" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func updateStatusFile( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -367,3 +368,64 @@ func TestBug5File(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	dump = file.Dump() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	assert.Equal(t, "0 0\n14 157\n16 -1\n", dump) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func TestMinMaxAbs64Funcs(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var a int64 = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var b int64 = -1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, min64(a, b), b) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, max64(a, b), a) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, min64(b, a), b) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, max64(b, a), a) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, abs64(a), a) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, abs64(b), a) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func TestNewFileFromTreeInvalidSize(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	keys := [...]int{1, 2, 3} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	vals := [...]int{4, 5} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Panics(t, func() {NewFileFromTree(keys[:], vals[:])}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func TestUpdatePanic(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  keys := [...]int{0} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	vals := [...]int{-1} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	file := NewFileFromTree(keys[:], vals[:]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	file.tree.DeleteWithKey(0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	file.tree.Insert(rbtree.Item{-1, -1}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var paniced interface{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	func() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		defer func() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      paniced = recover() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		file.Update(1, 0, 1, 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  assert.Contains(t, paniced, "invalid tree state") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func TestFileStatus(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	f, _ := fixtureFile() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Panics(t, func() {f.Status(1)}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.NotNil(t, f.Status(0)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func TestFileValidate(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	keys := [...]int{0} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	vals := [...]int{-1} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	file := NewFileFromTree(keys[:], vals[:]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	file.tree.DeleteWithKey(0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	file.tree.Insert(rbtree.Item{-1, -1}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Panics(t, func() {file.Validate()}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	file.tree.DeleteWithKey(-1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	file.tree.Insert(rbtree.Item{0, -1}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	file.Validate() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	file.tree.DeleteWithKey(0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	file.tree.Insert(rbtree.Item{0, 0}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Panics(t, func() {file.Validate()}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	file.tree.DeleteWithKey(0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	file.tree.Insert(rbtree.Item{0, 1}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	file.tree.Insert(rbtree.Item{1, 1}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	file.tree.Insert(rbtree.Item{2, -1}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	file.Validate() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	file.tree.FindGE(2).Item().Key = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Panics(t, func() {file.Validate()}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |