package nori import ( "bytes" "fmt" "os" "strings" "testing" "gitlab.com/gfxlabs/gfximg/apng" ) func TestParseFile1(t *testing.T) { nori, err := FromFile("./render_test/test1.nri") if err != nil { t.Errorf("decode: %s", err) } t.Logf("\n nori: %+v\n gawi: %+v", nori, nori.Gawi) err = writeApng(nori, "test1") if err != nil { t.Errorf("export: %s", err) } } func TestParseFile2(t *testing.T) { nori, err := FromFile("./render_test/test2.nri") if err != nil { t.Errorf("decode: %s", err) } t.Logf("\n nori: %+v\n gawi: %+v", nori, nori.Gawi) err = writeApng(nori, "test2") if err != nil { t.Errorf("export: %s", err) } } func TestParsePalette(t *testing.T) { nori, err := FromFile("./render_test/palette.nri") if err != nil { t.Errorf("decode: %s", err) } t.Logf("\n nori: %+v\n gawi: %+v\n palette: %+v\n", nori, nori.Gawi, nori.Gawi.Palette) err = writeApng(nori, "palette") if err != nil { t.Errorf("export: %s", err) } } func writeApng(nori *Nori, name string) error { postfix := ".example" out := new(bytes.Buffer) os.MkdirAll(fmt.Sprintf("./render_test/%s%s", name, postfix), 0740) for i := range nori.Animations { a, err := RenderAnimation(nori, i) if err != nil { if strings.Contains(err.Error(), "no frame") { continue } return err } err = apng.Encode(out, *a) if err != nil { return err } err = os.WriteFile(fmt.Sprintf("./render_test/%s%s/animation_%d.png", name, postfix, i), out.Bytes(), 0740) if err != nil { return err } out.Reset() } return nil }