package restorer

import (
	"io/ioutil"
	"testing"

	rtest "github.com/restic/restic/internal/test"
)

func TestFilesWriterBasic(t *testing.T) {
	dir, cleanup := rtest.TempDir(t)
	defer cleanup()

	w := newFilesWriter(1)

	f1 := dir + "/f1"
	f2 := dir + "/f2"

	rtest.OK(t, w.writeToFile(f1, []byte{1}))
	rtest.Equals(t, 1, len(w.cache))
	rtest.Equals(t, 1, len(w.inprogress))

	rtest.OK(t, w.writeToFile(f2, []byte{2}))
	rtest.Equals(t, 1, len(w.cache))
	rtest.Equals(t, 2, len(w.inprogress))

	rtest.OK(t, w.writeToFile(f1, []byte{1}))
	w.close(f1)
	rtest.Equals(t, 0, len(w.cache))
	rtest.Equals(t, 1, len(w.inprogress))

	rtest.OK(t, w.writeToFile(f2, []byte{2}))
	w.close(f2)
	rtest.Equals(t, 0, len(w.cache))
	rtest.Equals(t, 0, len(w.inprogress))

	buf, err := ioutil.ReadFile(f1)
	rtest.OK(t, err)
	rtest.Equals(t, []byte{1, 1}, buf)

	buf, err = ioutil.ReadFile(f2)
	rtest.OK(t, err)
	rtest.Equals(t, []byte{2, 2}, buf)
}
