aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-01-29 22:19:23 +0100
committerGravatar Runxi Yu2026-01-29 22:19:23 +0100
commit8dcbe65d1f2258eb44e5905d6a9b1eecbc22c444 (patch)
tree0e0403c7efd6bb60a547a4c3af4dc36e623c9f8a
parenttree: Document TreeEntryNameCompare (diff)
signatureNo signature
tree: Add simple unit tests for entry Insert/Remove
-rw-r--r--obj_tree_test.go57
1 files changed, 57 insertions, 0 deletions
diff --git a/obj_tree_test.go b/obj_tree_test.go
index 3314a1b4..562db795 100644
--- a/obj_tree_test.go
+++ b/obj_tree_test.go
@@ -294,3 +294,60 @@ func TestTreeLarge(t *testing.T) {
}
}
}
+
+func TestTreeInsertEntry(t *testing.T) {
+ tree := &Tree{
+ Entries: []TreeEntry{
+ {Mode: FileModeRegular, Name: []byte("alpha"), ID: Hash{}},
+ {Mode: FileModeRegular, Name: []byte("gamma"), ID: Hash{}},
+ },
+ }
+
+ if err := tree.InsertEntry(TreeEntry{Mode: FileModeRegular, Name: []byte("beta"), ID: Hash{}}); err != nil {
+ t.Fatalf("InsertEntry failed: %v", err)
+ }
+ if len(tree.Entries) != 3 {
+ t.Fatalf("entries count: got %d, want 3", len(tree.Entries))
+ }
+ if string(tree.Entries[1].Name) != "beta" {
+ t.Fatalf("inserted order mismatch: got %q, want %q", tree.Entries[1].Name, "beta")
+ }
+
+ if err := tree.InsertEntry(TreeEntry{Mode: FileModeRegular, Name: []byte("beta"), ID: Hash{}}); err == nil {
+ t.Fatal("expected duplicate insert error")
+ }
+
+ var nilTree *Tree
+ if err := nilTree.InsertEntry(TreeEntry{Mode: FileModeRegular, Name: []byte("x"), ID: Hash{}}); err == nil {
+ t.Fatal("expected error for nil tree")
+ }
+}
+
+func TestTreeRemoveEntry(t *testing.T) {
+ tree := &Tree{
+ Entries: []TreeEntry{
+ {Mode: FileModeRegular, Name: []byte("alpha"), ID: Hash{}},
+ {Mode: FileModeRegular, Name: []byte("beta"), ID: Hash{}},
+ {Mode: FileModeRegular, Name: []byte("gamma"), ID: Hash{}},
+ },
+ }
+
+ if err := tree.RemoveEntry([]byte("beta")); err != nil {
+ t.Fatalf("RemoveEntry failed: %v", err)
+ }
+ if len(tree.Entries) != 2 {
+ t.Fatalf("entries count: got %d, want 2", len(tree.Entries))
+ }
+ if string(tree.Entries[0].Name) != "alpha" || string(tree.Entries[1].Name) != "gamma" {
+ t.Fatalf("remove order mismatch: got %q, %q", tree.Entries[0].Name, tree.Entries[1].Name)
+ }
+
+ if err := tree.RemoveEntry([]byte("beta")); err == nil {
+ t.Fatal("expected ErrNotFound for missing entry")
+ }
+
+ var nilTree *Tree
+ if err := nilTree.RemoveEntry([]byte("alpha")); err == nil {
+ t.Fatal("expected error for nil tree")
+ }
+}