84 lines
2.7 KiB
Go
84 lines
2.7 KiB
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"os"
|
|
"path"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestRun(t *testing.T) {
|
|
d := path.Join(t.TempDir(), "record")
|
|
if err := os.MkdirAll(d, os.ModePerm); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
a, err := os.ReadFile(path.Join("testdata", "a.jpg"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
b, err := os.ReadFile(path.Join("testdata", "b.jpg"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
now := time.Now()
|
|
if err := os.WriteFile(path.Join(d, "series.0.jpg"), a, os.ModePerm); err != nil {
|
|
t.Fatal(err)
|
|
} else if err := os.Chtimes(path.Join(d, "series.0.jpg"), now, now.Add(-4000*time.Millisecond)); 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.Chtimes(path.Join(d, "series.1.jpg"), now, now.Add(-3500*time.Millisecond)); 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.Chtimes(path.Join(d, "series.2.jpg"), now, now.Add(-3000*time.Millisecond)); 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.Chtimes(path.Join(d, "series.3.jpg"), now, now.Add(-2500*time.Millisecond)); err != nil {
|
|
t.Fatal(err)
|
|
} else if err := os.WriteFile(path.Join(d, "zlast.0.jpg"), b, os.ModePerm); err != nil {
|
|
t.Fatal(err)
|
|
} else if err := os.Chtimes(path.Join(d, "zlast.0.jpg"), now, now.Add(-2000*time.Millisecond)); 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) != 4 {
|
|
t.Fatal(results)
|
|
} else if path.Base(results[0]) != "series.0.jpg" {
|
|
t.Fatal(results)
|
|
} else if b0, err := os.ReadFile(results[0]); err != nil || !bytes.Equal(a, b0) {
|
|
t.Fatal("series.0.jpg changed", err)
|
|
} else if path.Base(results[1]) != "series.1.jpg" {
|
|
t.Fatal(results)
|
|
} else if b1, err := os.ReadFile(results[1]); err != nil || !bytes.Equal(a, b1) {
|
|
t.Fatal("series.1.jpg changed", err)
|
|
} else if path.Base(results[2]) != "series.2.jpg" {
|
|
t.Fatal(results)
|
|
} else if b2, err := os.ReadFile(results[2]); err != nil || !bytes.Equal(b, b2) {
|
|
t.Fatal("series.2.jpg changed", err)
|
|
} else if path.Base(results[3]) != "series.3.jpg" {
|
|
t.Fatal(results)
|
|
} else if b3, err := os.ReadFile(results[3]); err != nil || !bytes.Equal(b, b3) {
|
|
t.Fatal("series.3.jpg changed", err)
|
|
}
|
|
|
|
if records, err := lsf(d); err != nil {
|
|
t.Fatal(err)
|
|
} else if len(records) != 1 {
|
|
t.Fatal(err)
|
|
} else if path.Base(records[0]) != "zlast.0.jpg" {
|
|
t.Fatal(err)
|
|
}
|
|
}
|