124 lines
2.9 KiB
Go
124 lines
2.9 KiB
Go
package source
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestNewMigrations(t *testing.T) {
|
|
// TODO
|
|
}
|
|
|
|
func TestAppend(t *testing.T) {
|
|
// TODO
|
|
}
|
|
|
|
func TestInterleavedAppendReads(t *testing.T) {
|
|
m := NewMigrations()
|
|
|
|
if !m.Append(&Migration{Version: 10, Direction: Up}) {
|
|
t.Fatal("expected append version 10 up to succeed")
|
|
}
|
|
if !m.Append(&Migration{Version: 10, Direction: Down}) {
|
|
t.Fatal("expected append version 10 down to succeed")
|
|
}
|
|
if !m.Append(&Migration{Version: 30, Direction: Up}) {
|
|
t.Fatal("expected append version 30 up to succeed")
|
|
}
|
|
|
|
if v, ok := m.First(); !ok || v != 10 {
|
|
t.Fatalf("expected first version 10, got %v, %v", v, ok)
|
|
}
|
|
if v, ok := m.Next(10); !ok || v != 30 {
|
|
t.Fatalf("expected next version after 10 to be 30, got %v, %v", v, ok)
|
|
}
|
|
if v, ok := m.Prev(30); !ok || v != 10 {
|
|
t.Fatalf("expected previous version before 30 to be 10, got %v, %v", v, ok)
|
|
}
|
|
|
|
if !m.Append(&Migration{Version: 20, Direction: Up}) {
|
|
t.Fatal("expected append version 20 up to succeed")
|
|
}
|
|
if !m.Append(&Migration{Version: 20, Direction: Down}) {
|
|
t.Fatal("expected append version 20 down to succeed")
|
|
}
|
|
if !m.Append(&Migration{Version: 5, Direction: Up}) {
|
|
t.Fatal("expected append version 5 up to succeed")
|
|
}
|
|
|
|
if v, ok := m.First(); !ok || v != 5 {
|
|
t.Fatalf("expected first version 5, got %v, %v", v, ok)
|
|
}
|
|
if v, ok := m.Next(10); !ok || v != 20 {
|
|
t.Fatalf("expected next version after 10 to be 20, got %v, %v", v, ok)
|
|
}
|
|
if v, ok := m.Next(20); !ok || v != 30 {
|
|
t.Fatalf("expected next version after 20 to be 30, got %v, %v", v, ok)
|
|
}
|
|
if v, ok := m.Prev(20); !ok || v != 10 {
|
|
t.Fatalf("expected previous version before 20 to be 10, got %v, %v", v, ok)
|
|
}
|
|
}
|
|
|
|
func TestBuildIndex(t *testing.T) {
|
|
// TODO
|
|
}
|
|
|
|
func TestFirst(t *testing.T) {
|
|
// TODO
|
|
}
|
|
|
|
func TestPrev(t *testing.T) {
|
|
// TODO
|
|
}
|
|
|
|
func TestUp(t *testing.T) {
|
|
// TODO
|
|
}
|
|
|
|
func TestDown(t *testing.T) {
|
|
// TODO
|
|
}
|
|
|
|
func TestFindPos(t *testing.T) {
|
|
m := Migrations{index: uintSlice{1, 2, 3}}
|
|
if p := m.findPos(0); p != -1 {
|
|
t.Errorf("expected -1, got %v", p)
|
|
}
|
|
if p := m.findPos(1); p != 0 {
|
|
t.Errorf("expected 0, got %v", p)
|
|
}
|
|
if p := m.findPos(3); p != 2 {
|
|
t.Errorf("expected 2, got %v", p)
|
|
}
|
|
}
|
|
|
|
func BenchmarkAppend100(b *testing.B) {
|
|
benchmarkAppend(b, 100)
|
|
}
|
|
|
|
func BenchmarkAppend1000(b *testing.B) {
|
|
benchmarkAppend(b, 1000)
|
|
}
|
|
|
|
func BenchmarkAppend5000(b *testing.B) {
|
|
benchmarkAppend(b, 5000)
|
|
}
|
|
|
|
func benchmarkAppend(b *testing.B, n int) {
|
|
for i := 0; i < b.N; i++ {
|
|
m := NewMigrations()
|
|
for version := 1; version <= n; version++ {
|
|
v := uint(version)
|
|
if !m.Append(&Migration{Version: v, Direction: Up}) {
|
|
b.Fatalf("expected append version %d up to succeed", version)
|
|
}
|
|
if !m.Append(&Migration{Version: v, Direction: Down}) {
|
|
b.Fatalf("expected append version %d down to succeed", version)
|
|
}
|
|
}
|
|
if _, ok := m.First(); !ok {
|
|
b.Fatal("expected first version")
|
|
}
|
|
}
|
|
}
|