package mypkg

import (
	"io/ioutil"
	"os"
	"path/filepath"
	"reflect"
	"testing"
)

func TestDirwalk(t *testing.T) {
	baseDir := filepath.Join("testdata")
	os.MkdirAll(baseDir, 0755)
	tempDir, err := ioutil.TempDir(baseDir, "temp")
	if err != nil {
		t.Errorf("create tempDir: %v", err)
	}
	t.Cleanup(func() { os.RemoveAll(baseDir) })

	os.MkdirAll(filepath.Join(tempDir, "dir_b"), 0755)
	os.MkdirAll(filepath.Join(tempDir, "dir_c"), 0755)

	f, _ := os.Create(filepath.Join(tempDir, "file_a"))
	f.Close()
	f, _ = os.Create(filepath.Join(tempDir, "dir_b", "file_b"))
	f.Close()
	f, _ = os.Create(filepath.Join(tempDir, "dir_c", "file_c"))
	f.Close()

	got, err := Dirwalk(baseDir)
	if err != nil {
		t.Errorf("dirwalk: %v", err)
	}
	want := []string{
		filepath.Join(tempDir, "dir_b", "file_b"),
		filepath.Join(tempDir, "dir_c", "file_c"),
		filepath.Join(tempDir, "file_a"),
	}
	if !reflect.DeepEqual(got, want) {
		t.Errorf("Dirwalk():\ngot  %v\nwant %v", got, want)
	}
}