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)))
|
fmt.Println(hex.EncodeToString([]byte(i.trie.root)))
|
||||||
case "get":
|
case "get":
|
||||||
fmt.Println(i.trie.Get(tokens[1]))
|
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":
|
case "exit", "quit", "q":
|
||||||
return false
|
return false
|
||||||
case "help":
|
case "help":
|
||||||
fmt.Println(`query commands:
|
fmt.Printf(`QUERY COMMANDS:
|
||||||
update KEY VALUE
|
update KEY VALUE - Updates/Creates a new value for the given key
|
||||||
get KEY
|
get KEY - Retrieves the given key
|
||||||
|
root - Prints the hex encoded merkle root
|
||||||
|
rawroot - Prints the raw merkle root
|
||||||
`)
|
`)
|
||||||
default:
|
default:
|
||||||
fmt.Println("Unknown command:", tokens[0])
|
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