diff options
| author | 2026-01-29 22:19:23 +0100 | |
|---|---|---|
| committer | 2026-01-29 22:19:23 +0100 | |
| commit | 8dcbe65d1f2258eb44e5905d6a9b1eecbc22c444 (patch) | |
| tree | 0e0403c7efd6bb60a547a4c3af4dc36e623c9f8a | |
| parent | tree: Document TreeEntryNameCompare (diff) | |
| signature | No signature | |
tree: Add simple unit tests for entry Insert/Remove
| -rw-r--r-- | obj_tree_test.go | 57 |
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") + } +} |
