Work in progress external test runner

pull/2/head
obscuren 11 years ago
parent 61d67f2ae9
commit 5b3d4fae6e
  1. 12
      db_query_interface.go
  2. 35
      test_runner.go
  3. 31
      test_runner_test.go

@ -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…
Cancel
Save