package utils

import (
	"os"
	"path/filepath"
	"testing"
)

func TestFindFiles(t *testing.T) {
	dir := t.TempDir()

	// Write dummy files
	os.WriteFile(filepath.Join(dir, "1.wav"), []byte("data"), 0644)
	os.WriteFile(filepath.Join(dir, "2.WAV"), []byte("data"), 0644)
	os.WriteFile(filepath.Join(dir, ".hidden.wav"), []byte("data"), 0644)
	os.WriteFile(filepath.Join(dir, "1.txt"), []byte("data"), 0644)

	subDir := filepath.Join(dir, "sub")
	os.Mkdir(subDir, 0755)
	os.WriteFile(filepath.Join(subDir, "3.wav"), []byte("data"), 0644)

	clipsDir := filepath.Join(dir, "Clips_1")
	os.Mkdir(clipsDir, 0755)
	os.WriteFile(filepath.Join(clipsDir, "4.wav"), []byte("data"), 0644)

	opts := FindFilesOptions{
		Extension:    ".wav",
		Recursive:    true,
		SkipHidden:   true,
		SkipPrefixes: []string{"Clips_"},
		MinSize:      1,
	}

	files, err := FindFiles(dir, opts)
	if err != nil {
		t.Fatal(err)
	}

	if len(files) != 3 { // Should find 1.wav, 2.WAV, sub/3.wav
		t.Errorf("expected 3 files, got %d", len(files))
	}
}