package utils

import (
	"bytes"
	"fmt"
	"git.tuxpa.in/a/nori/renderer"
	"os"
	"testing"

	"git.tuxpa.in/a/nori"
)

func TestParseFile1(t *testing.T) {
	nori, err := nori.FromFile("./zip_test/test1.nri")
	if err != nil {
		t.Errorf("decode: %s", err)
	}
	t.Logf("\n nori: %+v\n gawi: %+v", nori, nori.Gawi)

	err = writeZip(nori, "test1")
	if err != nil {
		t.Errorf("export: %s", err)
	}
}

func TestParseFile2(t *testing.T) {
	nori, err := nori.FromFile("./zip_test/test2.nri")
	if err != nil {
		t.Errorf("decode: %s", err)
	}
	t.Logf("\n nori: %+v\n gawi: %+v", nori, nori.Gawi)
	err = writeZip(nori, "test2")
	if err != nil {
		t.Errorf("export: %s", err)
	}
}

func TestParsePalette(t *testing.T) {
	nori, err := nori.FromFile("./zip_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 = writeZip(nori, "palette")
	if err != nil {
		t.Errorf("export: %s", err)
	}
}

func writeZip(n *nori.Nori, name string) error {
	out := new(bytes.Buffer)
	frames, err := renderer.RenderAnimationsApng(n)
	if err != nil {
		return err
	}
	if err := ZipApngs(out, frames); err != nil {
		return err
	}
	os.WriteFile(fmt.Sprintf("./zip_test/%s.zip", name), out.Bytes(), 0740)
	return nil
}
