Work in progress external test runner
This commit is contained in:
parent
61d67f2ae9
commit
5b3d4fae6e
|
@ -68,12 +68,18 @@ func (i *DbInterface) ParseInput(input string) bool {
|
|||
fmt.Println(hex.EncodeToString([]byte(i.trie.root)))
|
||||
case "get":
|
||||
fmt.Println(i.trie.Get(tokens[1]))
|
||||
case "root":
|
||||
fmt.Println(hex.EncodeToString([]byte(i.trie.root)))
|
||||
case "rawroot":
|
||||
fmt.Println(i.trie.root)
|
||||
case "exit", "quit", "q":
|
||||
return false
|
||||
case "help":
|
||||
fmt.Println(`query commands:
|
||||
update KEY VALUE
|
||||
get KEY
|
||||
fmt.Printf(`QUERY COMMANDS:
|
||||
update KEY VALUE - Updates/Creates a new value for the given key
|
||||
get KEY - Retrieves the given key
|
||||
root - Prints the hex encoded merkle root
|
||||
rawroot - Prints the raw merkle root
|
||||
`)
|
||||
default:
|
||||
fmt.Println("Unknown command:", tokens[0])
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
type TestSource struct {
|
||||
Inputs map[string]string
|
||||
Expectation string
|
||||
}
|
||||
|
||||
func NewTestSource(source string) *TestSource {
|
||||
s := &TestSource{}
|
||||
err := json.Unmarshal([]byte(source), s)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
||||
return s
|
||||
}
|
||||
|
||||
type TestRunner struct {
|
||||
source *TestSource
|
||||
}
|
||||
|
||||
func NewTestRunner(t *testing.T) *TestRunner {
|
||||
return &TestRunner{}
|
||||
}
|
||||
|
||||
func (runner *TestRunner) RunFromString(input string, Cb func(*TestSource)) {
|
||||
source := NewTestSource(input)
|
||||
Cb(source)
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
_"fmt"
|
||||
"testing"
|
||||
"encoding/hex"
|
||||
)
|
||||
|
||||
var testsource = `{"Inputs":{
|
||||
"doe": "reindeer",
|
||||
"dog": "puppy",
|
||||
"dogglesworth": "cat"
|
||||
},
|
||||
"Expectation":"e378927bfc1bd4f01a2e8d9f59bd18db8a208bb493ac0b00f93ce51d4d2af76c"
|
||||
}`
|
||||
|
||||
func TestTestRunner(t *testing.T) {
|
||||
db, _ := NewMemDatabase()
|
||||
trie := NewTrie(db, "")
|
||||
|
||||
runner := NewTestRunner(t)
|
||||
runner.RunFromString(testsource, func(source *TestSource) {
|
||||
for key, value := range source.Inputs {
|
||||
trie.Update(key, value)
|
||||
}
|
||||
|
||||
if hex.EncodeToString([]byte(trie.root)) != source.Expectation {
|
||||
t.Error("trie root did not match")
|
||||
}
|
||||
})
|
||||
}
|
Loading…
Reference in New Issue