slicerdicer/slice_test.go

93 lines
2.5 KiB
Go

package main
import (
"fmt"
"io"
"os"
"testing"
"github.com/stretchr/testify/assert"
)
type testWriteCloser struct {
written int
closed bool
}
func (twc *testWriteCloser) Close() error {
twc.closed = true
return nil
}
func (twc *testWriteCloser) Write(b []byte) (int, error) {
twc.written += len(b)
return len(b), nil
}
type testOutputter struct {
closers map[string]*testWriteCloser
}
func (to *testOutputter) CreatePathAndFile(fn string) (io.WriteCloser, error) {
to.closers[fn] = &testWriteCloser{}
return to.closers[fn], nil
}
func (to *testOutputter) Dump() string {
out := ""
for k, v := range to.closers {
out += fmt.Sprintf("%20s: %6d/%t\n", k, v.written, v.closed)
}
return out
}
func NewTestOutputter() *testOutputter {
to := testOutputter{}
to.closers = make(map[string]*testWriteCloser)
return &to
}
func TestXxx(t *testing.T) {
// testdata/gold.jpg: JPEG image data, JFIF standard 1.01, 794x447
f, err := os.Open("testdata/gold.jpg")
if err != nil {
panic(err)
}
// with a tile size larger than the image itself, we should
// get a single image at zoom level 0
testOutputter := NewTestOutputter()
processImage(f, "indy", defaultPathTemplate, "jpg", 1000, 1, testOutputter)
t.Log(testOutputter.Dump())
assert.Equal(t, 1, len(testOutputter.closers))
assert.Equal(t, 28082, testOutputter.closers["indy-0-0-0.jpg"].written)
f, _ = os.Open("testdata/gold.jpg")
// with a tilesize smaller than *one* of the dimensions, 3 tiles
// 1@zoom 0, 2@zoom 1
testOutputter = NewTestOutputter()
processImage(f, "indy", defaultPathTemplate, "jpg", 500, 1, testOutputter)
t.Log(testOutputter.Dump())
assert.Equal(t, 3, len(testOutputter.closers))
assert.Equal(t, 10304, testOutputter.closers["indy-0-0-0.jpg"].written)
assert.Equal(t, 18014, testOutputter.closers["indy-1-0-0.jpg"].written)
assert.Equal(t, 10749, testOutputter.closers["indy-1-1-0.jpg"].written)
f, _ = os.Open("testdata/gold.jpg")
// with a tilesize smaller than *both* of the dimensions, 5 tiles
// zoom 0, zoom 1 x 4
testOutputter = NewTestOutputter()
processImage(f, "indy", defaultPathTemplate, "jpg", 400, 1, testOutputter)
t.Log(testOutputter.Dump())
assert.Equal(t, 5, len(testOutputter.closers))
assert.Equal(t, 10304, testOutputter.closers["indy-0-0-0.jpg"].written)
assert.Equal(t, 12607, testOutputter.closers["indy-1-0-0.jpg"].written)
assert.Equal(t, 12050, testOutputter.closers["indy-1-1-0.jpg"].written)
assert.Equal(t, 2722, testOutputter.closers["indy-1-0-1.jpg"].written)
assert.Equal(t, 2477, testOutputter.closers["indy-1-1-1.jpg"].written)
}