new tests show one case fails

main
bel 2023-11-05 20:42:32 -07:00
parent 6856882ba8
commit 2d30ee39af
1 changed files with 159 additions and 16 deletions

View File

@ -17,7 +17,8 @@ func testDriver(t *testing.T, d Driver) {
defer can()
key := Key{Namespace: "x/y", Key: "z"}
value := ValueVersion{Value: []byte(t.Name()), Version: []byte("1")}
version := TimeAsVersion(time.Now())
value := Value([]byte(t.Name()))
t.Run("get does not exist", func(t *testing.T) {
v, err := d.Get(ctx, key)
@ -30,7 +31,7 @@ func testDriver(t *testing.T, d Driver) {
})
t.Run("404 set get", func(t *testing.T) {
if err := d.Set(ctx, key, value.Value, value.Version); err != nil {
if err := d.Set(ctx, key, value, version); err != nil {
t.Fatal(err)
}
@ -38,11 +39,11 @@ func testDriver(t *testing.T, d Driver) {
if err != nil {
t.Errorf("getting key returned an err: %v", err)
}
if !bytes.Equal(v.Value, value.Value) {
t.Errorf("value didnt match set-get: want %q, got %q", value.Value, v.Value)
if !bytes.Equal(v.Value, value) {
t.Errorf("value didnt match set-get: want %q, got %q", value, v.Value)
}
if !bytes.Equal(v.Version, value.Version) {
t.Errorf("version didnt match set-get: want %q, got %q", value.Version, v.Version)
if !bytes.Equal(v.Version, version) {
t.Errorf("version didnt match set-get: want %q, got %q", version, v.Version)
}
if err := d.Del(ctx, key, nil); err != nil {
@ -61,7 +62,7 @@ func testDriver(t *testing.T, d Driver) {
})
t.Run("keys of one key", func(t *testing.T) {
if err := d.Set(ctx, key, value.Value, value.Version); err != nil {
if err := d.Set(ctx, key, value, version); err != nil {
t.Fatal(err)
}
defer d.Del(ctx, key, nil)
@ -72,7 +73,7 @@ func testDriver(t *testing.T, d Driver) {
n += 1
if got.Key != key {
t.Error(got)
} else if !bytes.Equal(got.Version, value.Version) {
} else if !bytes.Equal(got.Version, version) {
t.Error(got)
}
}
@ -85,34 +86,176 @@ func testDriver(t *testing.T, d Driver) {
})
t.Run("conditional set vs nothing", func(t *testing.T) {
t.Error("not impl")
if err := d.Set(ctx, key, value, version); err != nil {
t.Fatal(err)
}
defer d.Del(ctx, key, nil)
if got, err := d.Get(ctx, key); err != nil {
t.Fatal(err)
} else if !bytes.Equal(got.Value, value) {
t.Error(got)
} else if !bytes.Equal(got.Version, version) {
t.Error(got)
}
})
t.Run("conditional set vs older", func(t *testing.T) {
t.Error("not impl")
oldValue := []byte("teehee")
oldVersion := TimeAsVersion(time.Now().Add(-1 * time.Minute))
if err := d.Set(ctx, key, oldValue, oldVersion); err != nil {
t.Fatal(err)
}
defer d.Del(ctx, key, nil)
if got, err := d.Get(ctx, key); err != nil {
t.Fatal(err)
} else if !bytes.Equal(got.Value, oldValue) {
t.Error(got)
} else if !bytes.Equal(got.Version, oldVersion) {
t.Error(got)
}
if err := d.Set(ctx, key, value, version); err != nil {
t.Fatal(err)
}
if got, err := d.Get(ctx, key); err != nil {
t.Fatal(err)
} else if !bytes.Equal(got.Value, value) {
t.Error(got)
} else if !bytes.Equal(got.Version, version) {
t.Error(got)
}
})
t.Run("conditional set vs equal", func(t *testing.T) {
t.Error("not impl")
oldValue := []byte("teehee")
oldVersion := TimeAsVersion(time.Now().Add(-1 * time.Minute))
if err := d.Set(ctx, key, oldValue, oldVersion); err != nil {
t.Fatal(err)
}
defer d.Del(ctx, key, nil)
if got, err := d.Get(ctx, key); err != nil {
t.Fatal(err)
} else if !bytes.Equal(got.Value, oldValue) {
t.Error(got)
} else if !bytes.Equal(got.Version, oldVersion) {
t.Error(got)
}
if err := d.Set(ctx, key, value, oldVersion); err != nil {
t.Fatal(err)
}
if got, err := d.Get(ctx, key); err != nil {
t.Fatal(err)
} else if !bytes.Equal(got.Value, value) {
t.Error(got)
} else if !bytes.Equal(got.Version, oldVersion) {
t.Error(got)
}
})
t.Run("conditional set vs newer", func(t *testing.T) {
t.Error("not impl")
oldValue := []byte("teehee")
oldVersion := TimeAsVersion(time.Now().Add(-1 * time.Minute))
if err := d.Set(ctx, key, value, version); err != nil {
t.Fatal(err)
}
defer d.Del(ctx, key, nil)
if got, err := d.Get(ctx, key); err != nil {
t.Fatal(err)
} else if !bytes.Equal(got.Value, value) {
t.Error(got)
} else if !bytes.Equal(got.Version, version) {
t.Error(got)
}
if err := d.Set(ctx, key, oldValue, oldVersion); err != nil {
t.Fatal(err)
}
if got, err := d.Get(ctx, key); err != nil {
t.Fatal(err)
} else if !bytes.Equal(got.Value, value) {
t.Error(got)
} else if !bytes.Equal(got.Version, version) {
t.Error(got)
}
})
t.Run("conditional del vs nothing", func(t *testing.T) {
t.Error("not impl")
if err := d.Del(ctx, key, version); err != nil {
t.Fatal(err)
}
})
t.Run("conditional del vs older", func(t *testing.T) {
t.Error("not impl")
oldValue := []byte("teehee")
oldVersion := TimeAsVersion(time.Now().Add(-1 * time.Minute))
if err := d.Set(ctx, key, oldValue, oldVersion); err != nil {
t.Fatal(err)
}
defer d.Del(ctx, key, nil)
if err := d.Del(ctx, key, version); err != nil {
t.Fatal(err)
}
if got, err := d.Get(ctx, key); err != nil {
t.Fatal(err)
} else if got.Value != nil {
t.Error(got)
} else if got.Version != nil {
t.Error(got)
}
})
t.Run("conditional del vs equal", func(t *testing.T) {
t.Error("not impl")
if err := d.Set(ctx, key, value, version); err != nil {
t.Fatal(err)
}
defer d.Del(ctx, key, nil)
if err := d.Del(ctx, key, version); err != nil {
t.Fatal(err)
}
if got, err := d.Get(ctx, key); err != nil {
t.Fatal(err)
} else if got.Value != nil {
t.Error(got)
} else if got.Version != nil {
t.Error(got)
}
})
t.Run("conditional del vs newer", func(t *testing.T) {
t.Error("not impl")
oldVersion := TimeAsVersion(time.Now().Add(-1 * time.Minute))
if err := d.Set(ctx, key, value, version); err != nil {
t.Fatal(err)
}
defer d.Del(ctx, key, nil)
if got, err := d.Get(ctx, key); err != nil {
t.Fatal(err)
} else if !bytes.Equal(got.Value, value) {
t.Error(got)
} else if !bytes.Equal(got.Version, version) {
t.Error(got)
}
if err := d.Del(ctx, key, oldVersion); err != nil {
t.Fatal(err)
}
if got, err := d.Get(ctx, key); err != nil {
t.Fatal(err)
} else if !bytes.Equal(got.Value, value) {
t.Error(got)
} else if !bytes.Equal(got.Version, version) {
t.Error(got)
}
})
}