93 lines
2.5 KiB
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)
|
||
|
|
||
|
}
|