80 lines
1.5 KiB
Go
80 lines
1.5 KiB
Go
package housekeeper
|
|
|
|
import (
|
|
"bytes"
|
|
"reflect"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
var testBeatmaps = []*CachedBeatmap{
|
|
&CachedBeatmap{
|
|
isDownloaded: true,
|
|
},
|
|
&CachedBeatmap{
|
|
ID: 851,
|
|
NoVideo: true,
|
|
isDownloaded: true,
|
|
},
|
|
&CachedBeatmap{
|
|
ID: 1337777,
|
|
fileSize: 58111,
|
|
isDownloaded: true,
|
|
},
|
|
&CachedBeatmap{
|
|
ID: 851,
|
|
LastUpdate: time.Date(2017, 9, 21, 11, 11, 50, 0, time.UTC),
|
|
lastRequested: time.Date(2017, 9, 21, 22, 11, 50, 0, time.UTC),
|
|
isDownloaded: true,
|
|
},
|
|
}
|
|
|
|
func TestEncodeDecode(t *testing.T) {
|
|
buf := &bytes.Buffer{}
|
|
|
|
start := time.Now()
|
|
err := writeBeatmaps(buf, testBeatmaps)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Logf("Write took %v", time.Since(start))
|
|
|
|
start = time.Now()
|
|
readBMs, err := readBeatmaps(buf)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Logf("Read took %v", time.Since(start))
|
|
|
|
if !reflect.DeepEqual(readBMs, testBeatmaps) {
|
|
t.Fatalf("original %v read %v", testBeatmaps, readBMs)
|
|
}
|
|
}
|
|
|
|
func BenchmarkWriteBinaryState(b *testing.B) {
|
|
for i := 0; i < b.N; i++ {
|
|
writeBeatmaps(fakeWriter{}, testBeatmaps)
|
|
}
|
|
}
|
|
|
|
func BenchmarkReadBinaryState(b *testing.B) {
|
|
buf := &bytes.Buffer{}
|
|
err := writeBeatmaps(buf, testBeatmaps)
|
|
if err != nil {
|
|
b.Fatal(err)
|
|
}
|
|
bufBytes := buf.Bytes()
|
|
bReader := bytes.NewReader(bufBytes)
|
|
b.ResetTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
readBeatmaps(bReader)
|
|
bReader.Reset(bufBytes)
|
|
}
|
|
}
|
|
|
|
type fakeWriter struct{}
|
|
|
|
func (fakeWriter) Write(b []byte) (int, error) {
|
|
return len(b), nil
|
|
}
|