package main

import (
	"context"
	"os"
	"path"
	"testing"
)

func TestRun(t *testing.T) {
	d := path.Join(t.TempDir(), "record")
	if err := os.MkdirAll(d, os.ModePerm); err != nil {
		t.Fatal(err)
	}
	if a, err := os.ReadFile(path.Join("testdata", "a.jpg")); err != nil {
		t.Fatal(err)
	} else if b, err := os.ReadFile(path.Join("testdata", "b.jpg")); err != nil {
		t.Fatal(err)
	} else if err := os.WriteFile(path.Join(d, "series.0.jpg"), a, os.ModePerm); err != nil {
		t.Fatal(err)
	} else if err := os.WriteFile(path.Join(d, "series.1.jpg"), a, os.ModePerm); err != nil {
		t.Fatal(err)
	} else if err := os.WriteFile(path.Join(d, "series.2.jpg"), b, os.ModePerm); err != nil {
		t.Fatal(err)
	} else if err := os.WriteFile(path.Join(d, "series.3.jpg"), b, os.ModePerm); err != nil {
		t.Fatal(err)
	} else if err := os.WriteFile(path.Join(d, "zlast.0.jpg"), b, os.ModePerm); err != nil {
		t.Fatal(err)
	}

	if err := Run(context.Background(), []string{path.Dir(d)}); err != nil {
		t.Fatal(err)
	}

	if results, err := lsf(path.Join(path.Dir(d), "movement")); err != nil {
		t.Fatal("failed to lsf for results:", err)
	} else if len(results) < 3 {
		t.Fatal(results)
	} else if path.Base(results[0]) != "series.0.jpg" {
		t.Fatal(results)
	} else if path.Base(results[1]) != "series.1.jpg" {
		t.Fatal(results)
	} else if path.Base(results[2]) != "series.2.jpg" {
		t.Fatal(results)
	}
	// TODO assert originals deleted
}
