package git

import "testing"

func TestTreeEntryById(t *testing.T) {
	repo := createTestRepo(t)
	defer cleanupTestRepo(t, repo)

	_, treeID := seedTestRepo(t, repo)

	tree, err := repo.LookupTree(treeID)
	checkFatal(t, err)

	id, err := NewOid("257cc5642cb1a054f08cc83f2d943e56fd3ebe99")
	checkFatal(t, err)

	entry := tree.EntryById(id)

	if entry == nil {
		t.Fatalf("entry id %v was not found", id)
	}
}

func TestTreeBuilderInsert(t *testing.T) {
	repo := createTestRepo(t)
	defer cleanupTestRepo(t, repo)

	subTree, err := repo.TreeBuilder()
	if err != nil {
		t.Fatalf("TreeBuilder: %v", err)
	}
	defer subTree.Free()

	odb, err := repo.Odb()
	if err != nil {
		t.Fatalf("repo.Odb: %v", err)
	}
	blobId, err := odb.Write([]byte("hello"), ObjectBlob)
	if err != nil {
		t.Fatalf("odb.Write: %v", err)
	}
	if err = subTree.Insert("subfile", blobId, FilemodeBlobExecutable); err != nil {
		t.Fatalf("TreeBuilder.Insert: %v", err)
	}
	treeID, err := subTree.Write()
	if err != nil {
		t.Fatalf("TreeBuilder.Write: %v", err)
	}

	tree, err := repo.LookupTree(treeID)
	if err != nil {
		t.Fatalf("LookupTree: %v", err)
	}

	entry, err := tree.EntryByPath("subfile")
	if err != nil {
		t.Fatalf("tree.EntryByPath(%q): %v", "subfile", err)
	}

	if !entry.Id.Equal(blobId) {
		t.Fatalf("got oid %v, want %v", entry.Id, blobId)
	}
}
