commit of code
This commit is contained in:
+147
@@ -0,0 +1,147 @@
|
||||
package kvrepl
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestParse(t *testing.T) {
|
||||
var tests = []struct {
|
||||
cmds []string
|
||||
db *DB
|
||||
expected string
|
||||
}{
|
||||
{
|
||||
cmds: []string{
|
||||
"write a b",
|
||||
"start",
|
||||
"write a c",
|
||||
"abort",
|
||||
"read a",
|
||||
},
|
||||
db: &DB{
|
||||
KV1: map[string]string{},
|
||||
KV2: map[string]string{},
|
||||
PKV: true,
|
||||
},
|
||||
expected: "b",
|
||||
},
|
||||
{
|
||||
cmds: []string{
|
||||
"write a b",
|
||||
"start",
|
||||
"write a hello-again",
|
||||
"start",
|
||||
"delete a",
|
||||
"commit",
|
||||
"write a once-more",
|
||||
"abort",
|
||||
"read a",
|
||||
},
|
||||
db: &DB{
|
||||
KV1: map[string]string{},
|
||||
KV2: map[string]string{},
|
||||
PKV: true,
|
||||
},
|
||||
expected: "b",
|
||||
},
|
||||
{
|
||||
cmds: []string{
|
||||
"write a b",
|
||||
"start",
|
||||
"write a hello-again",
|
||||
"start",
|
||||
"delete a",
|
||||
"commit",
|
||||
"write a once-more",
|
||||
"start",
|
||||
"write a foo",
|
||||
"abort",
|
||||
"read a",
|
||||
},
|
||||
db: &DB{
|
||||
KV1: map[string]string{},
|
||||
KV2: map[string]string{},
|
||||
PKV: true,
|
||||
},
|
||||
expected: "b",
|
||||
},
|
||||
{
|
||||
cmds: []string{
|
||||
"write a b",
|
||||
"start",
|
||||
"write a c",
|
||||
"commit",
|
||||
"read a",
|
||||
},
|
||||
db: &DB{
|
||||
KV1: map[string]string{},
|
||||
KV2: map[string]string{},
|
||||
PKV: true,
|
||||
},
|
||||
expected: "c",
|
||||
},
|
||||
{
|
||||
cmds: []string{
|
||||
"write a b",
|
||||
"start",
|
||||
"write a c",
|
||||
"start",
|
||||
"delete a",
|
||||
"write a d",
|
||||
"commit",
|
||||
"read a",
|
||||
},
|
||||
db: &DB{
|
||||
KV1: map[string]string{},
|
||||
KV2: map[string]string{},
|
||||
PKV: true,
|
||||
},
|
||||
expected: "d",
|
||||
},
|
||||
{
|
||||
cmds: []string{
|
||||
"write a b",
|
||||
"start",
|
||||
"write a c",
|
||||
"start",
|
||||
"delete a",
|
||||
"write a d",
|
||||
"abort",
|
||||
"read a",
|
||||
},
|
||||
db: &DB{
|
||||
KV1: map[string]string{},
|
||||
KV2: map[string]string{},
|
||||
PKV: true,
|
||||
},
|
||||
expected: "b",
|
||||
},
|
||||
{
|
||||
cmds: []string{
|
||||
"write a b",
|
||||
"start",
|
||||
"delete a",
|
||||
"commit",
|
||||
"read a",
|
||||
},
|
||||
db: &DB{
|
||||
KV1: map[string]string{},
|
||||
KV2: map[string]string{},
|
||||
PKV: true,
|
||||
},
|
||||
expected: "",
|
||||
},
|
||||
}
|
||||
|
||||
for _, rt := range tests {
|
||||
actual := ""
|
||||
for _, c := range rt.cmds {
|
||||
actual, _ = Parse(c, rt.db)
|
||||
}
|
||||
if actual != rt.expected {
|
||||
t.Errorf(
|
||||
"failed parse:\n\texpected: %v\n\t actual: %v",
|
||||
rt.expected,
|
||||
actual,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user