good morning!!!!

Skip to content
Snippets Groups Projects
Commit 5b3d4fae authored by Jeffrey Wilcke's avatar Jeffrey Wilcke
Browse files

Work in progress external test runner

parent 61d67f2a
Branches
Tags
No related merge requests found
......@@ -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])
......
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)
}
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")
}
})
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment