mirror of
https://source.quilibrium.com/quilibrium/ceremonyclient.git
synced 2024-11-14 04:05:17 +00:00
67 lines
1.6 KiB
Go
67 lines
1.6 KiB
Go
|
// Copyright 2019 The LevelDB-Go and Pebble Authors. All rights reserved. Use
|
||
|
// of this source code is governed by a BSD-style license that can be found in
|
||
|
// the LICENSE file.
|
||
|
|
||
|
package metamorphic
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/cockroachdb/datadriven"
|
||
|
"github.com/cockroachdb/pebble/internal/randvar"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
func TestParser(t *testing.T) {
|
||
|
datadriven.RunTest(t, "testdata/parser", func(t *testing.T, d *datadriven.TestData) string {
|
||
|
switch d.Cmd {
|
||
|
case "parse":
|
||
|
ops, err := parse([]byte(d.Input), parserOpts{})
|
||
|
if err != nil {
|
||
|
return err.Error()
|
||
|
}
|
||
|
return formatOps(ops)
|
||
|
default:
|
||
|
return fmt.Sprintf("unknown command: %s", d.Cmd)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestParserRandom(t *testing.T) {
|
||
|
cfgs := []string{"default", "multiInstance"}
|
||
|
for i := range cfgs {
|
||
|
t.Run(fmt.Sprintf("config=%s", cfgs[i]), func(t *testing.T) {
|
||
|
cfg := defaultConfig()
|
||
|
if cfgs[i] == "multiInstance" {
|
||
|
cfg = multiInstanceConfig()
|
||
|
cfg.numInstances = 2
|
||
|
}
|
||
|
ops := generate(randvar.NewRand(), 10000, cfg, newKeyManager(cfg.numInstances))
|
||
|
src := formatOps(ops)
|
||
|
|
||
|
parsedOps, err := parse([]byte(src), parserOpts{})
|
||
|
if err != nil {
|
||
|
t.Fatalf("%s\n%s", err, src)
|
||
|
}
|
||
|
require.Equal(t, ops, parsedOps)
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestParserNilBounds(t *testing.T) {
|
||
|
formatted := formatOps([]op{
|
||
|
&newIterOp{
|
||
|
readerID: makeObjID(dbTag, 1),
|
||
|
iterID: makeObjID(iterTag, 1),
|
||
|
iterOpts: iterOpts{},
|
||
|
},
|
||
|
})
|
||
|
parsedOps, err := parse([]byte(formatted), parserOpts{})
|
||
|
require.NoError(t, err)
|
||
|
require.Equal(t, 1, len(parsedOps))
|
||
|
v := parsedOps[0].(*newIterOp)
|
||
|
require.Nil(t, v.lower)
|
||
|
require.Nil(t, v.upper)
|
||
|
}
|