Esempio n. 1
0
func testCodec(t *testing.T, codec pkm.Codec) {
	if len(codec.Name()) == 0 {
		t.Errorf("Name: expected non-empty name")
	}

	size := 1024
	err := errors.New("reader error")

	testIO(t, codec, "real size", &dummyIO{buf: make([]byte, 12), now: false, err: nil})
	testIO(t, codec, "real size; now", &dummyIO{buf: make([]byte, 12), now: true, err: nil})
	testIO(t, codec, "real size; error", &dummyIO{buf: make([]byte, 12), now: false, err: err})
	testIO(t, codec, "real size; error now", &dummyIO{buf: make([]byte, 12), now: true, err: err})

	testIO(t, codec, "half size", &dummyIO{buf: make([]byte, size/2), now: false, err: nil})
	testIO(t, codec, "half size; now", &dummyIO{buf: make([]byte, size/2), now: true, err: nil})
	testIO(t, codec, "half size; error", &dummyIO{buf: make([]byte, size/2), now: false, err: err})
	testIO(t, codec, "half size; error now", &dummyIO{buf: make([]byte, size/2), now: true, err: err})

	testIO(t, codec, "full size", &dummyIO{buf: make([]byte, size), now: false, err: nil})
	testIO(t, codec, "full size; now", &dummyIO{buf: make([]byte, size), now: true, err: nil})
	testIO(t, codec, "full size; error", &dummyIO{buf: make([]byte, size), now: false, err: err})
	testIO(t, codec, "full size; error now", &dummyIO{buf: make([]byte, size), now: true, err: err})

	testIO(t, codec, "full+half size", &dummyIO{buf: make([]byte, size+size/2), now: false, err: nil})
	testIO(t, codec, "full+half size; now", &dummyIO{buf: make([]byte, size+size/2), now: true, err: nil})
	testIO(t, codec, "full+half size; error", &dummyIO{buf: make([]byte, size+size/2), now: false, err: err})
	testIO(t, codec, "full+half size; error now", &dummyIO{buf: make([]byte, size+size/2), now: true, err: err})

	testIO(t, codec, "double size", &dummyIO{buf: make([]byte, size*2), now: false, err: nil})
	testIO(t, codec, "double size; now", &dummyIO{buf: make([]byte, size*2), now: true, err: nil})
	testIO(t, codec, "double size; error", &dummyIO{buf: make([]byte, size*2), now: false, err: err})
	testIO(t, codec, "double size; error now", &dummyIO{buf: make([]byte, size*2), now: true, err: err})

	content := []byte("Test Data 1234 \uF000\uF080\uF0FF")
	testIO(t, codec, "real content", &dummyIO{buf: content, now: false, err: nil})
	testIO(t, codec, "real content; now", &dummyIO{buf: content, now: true, err: nil})
	testIO(t, codec, "real content; error", &dummyIO{buf: content, now: false, err: err})
	testIO(t, codec, "real content; error now", &dummyIO{buf: content, now: true, err: err})
}