浏览代码

Add sortable tests in renames

Vadim Markovtsev 7 年之前
父节点
当前提交
7daf62e12e
共有 2 个文件被更改,包括 33 次插入5 次删除
  1. 1 5
      renames.go
  2. 32 0
      renames_test.go

+ 1 - 5
renames.go

@@ -1,7 +1,6 @@
 package hercules
 
 import (
-	"fmt"
 	"sort"
 	"unicode/utf8"
 
@@ -66,8 +65,6 @@ func (ra *RenameAnalysis) Consume(deps map[string]interface{}) (map[string]inter
 			deleted = append(deleted, sortableChange{change, change.From.TreeEntry.Hash})
 		case merkletrie.Modify:
 			reduced_changes = append(reduced_changes, change)
-		default:
-			panic(fmt.Sprintf("unsupported action: %d", change.Action))
 		}
 	}
 	sort.Sort(deleted)
@@ -81,8 +78,7 @@ func (ra *RenameAnalysis) Consume(deps map[string]interface{}) (map[string]inter
 			reduced_changes = append(
 				reduced_changes,
 				&object.Change{From: deleted[d].change.From, To: added[a].change.To})
-			a++
-			d++
+			a++; d++
 		} else if added[a].Less(&deleted[d]) {
 			still_added = append(still_added, added[a].change)
 			a++

+ 32 - 0
renames_test.go

@@ -109,3 +109,35 @@ func TestRenameAnalysisConsume(t *testing.T) {
 	renamed = res["renamed_changes"].(object.Changes)
 	assert.Equal(t, len(renamed), 3)
 }
+
+func TestSortableChanges(t *testing.T) {
+	changes := sortableChanges{
+		sortableChange{
+			nil, plumbing.NewHash("0000000000000000000000000000000000000000"),
+		}, sortableChange{
+			nil, plumbing.NewHash("ffffffffffffffffffffffffffffffffffffffff"),
+		},
+	}
+	assert.True(t, changes.Less(0, 1))
+	assert.False(t, changes.Less(1, 0))
+	assert.False(t, changes.Less(0, 0))
+	changes.Swap(0, 1)
+	assert.Equal(t, changes[0].hash.String(), "ffffffffffffffffffffffffffffffffffffffff")
+	assert.Equal(t, changes[1].hash.String(), "0000000000000000000000000000000000000000")
+}
+
+func TestSortableBlobs(t *testing.T) {
+	blobs := sortableBlobs{
+		sortableBlob{
+			nil, int64(0),
+		}, sortableBlob{
+			nil, int64(1),
+		},
+	}
+	assert.True(t, blobs.Less(0, 1))
+	assert.False(t, blobs.Less(1, 0))
+	assert.False(t, blobs.Less(0, 0))
+	blobs.Swap(0, 1)
+	assert.Equal(t, blobs[0].size, int64(1))
+	assert.Equal(t, blobs[1].size, int64(0))
+}