shithub: furgit

Download patch

ref: 8dcbe65d1f2258eb44e5905d6a9b1eecbc22c444
parent: dae52d718f51f9a90d15d48fc80d9674346721c8
author: Runxi Yu <me@runxiyu.org>
date: Thu Jan 29 17:19:23 EST 2026

tree: Add simple unit tests for entry Insert/Remove

--- a/obj_tree_test.go
+++ b/obj_tree_test.go
@@ -294,3 +294,60 @@
 		}
 	}
 }
+
+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")
+	}
+}
--