nori/common/nori/nori_test.go
2022-03-25 14:24:52 -05:00

86 lines
1.8 KiB
Go

package nori
import (
"bytes"
"fmt"
"os"
"strings"
"testing"
"gitlab.com/gfxlabs/gfximg/apng"
)
func TestParseFile1(t *testing.T) {
rd, err := os.OpenFile("./nori_test/test1.nri", os.O_RDONLY, 0666)
if err != nil {
t.Errorf("open file: %s", err)
}
nori, err := NewReader(rd).Decode()
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) {
rd, err := os.OpenFile("./nori_test/test2.nri", os.O_RDONLY, 0666)
if err != nil {
t.Errorf("open file: %s", err)
}
nori, err := NewReader(rd).Decode()
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) {
rd, err := os.OpenFile("./nori_test/palette.nri", os.O_RDONLY, 0666)
if err != nil {
t.Errorf("open file: %s", err)
}
nori, err := NewReader(rd).Decode()
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("./nori_test/%s%s", name, postfix), 0740)
for i := range nori.Animations {
a, err := nori.ExportAnimation(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("./nori_test/%s%s/animation_%d.png", name, postfix, i), out.Bytes(), 0740)
if err != nil {
return err
}
out.Reset()
}
return nil
}