|
|
|
@ -444,3 +444,59 @@ func TestRndCase(t *testing.T) { |
|
|
|
|
fmt.Printf("%x\n", trie.Get(string(ethutil.Hex2Bytes("0000000000000000000000000000000000000000000000000000000000000001")))) |
|
|
|
|
} |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
func TestOtherSomething(t *testing.T) { |
|
|
|
|
_, trie := NewTrie() |
|
|
|
|
|
|
|
|
|
vals := []struct{ k, v string }{ |
|
|
|
|
{"do", "verb"}, |
|
|
|
|
{"ether", "wookiedoo"}, |
|
|
|
|
{"horse", "stallion"}, |
|
|
|
|
{"shaman", "horse"}, |
|
|
|
|
{"doge", "coin"}, |
|
|
|
|
{"ether", ""}, |
|
|
|
|
{"dog", "puppy"}, |
|
|
|
|
{"shaman", ""}, |
|
|
|
|
} |
|
|
|
|
for _, val := range vals { |
|
|
|
|
trie.Update(val.k, val.v) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
exp := ethutil.Hex2Bytes("5991bb8c6514148a29db676a14ac506cd2cd5775ace63c30a4fe457715e9ac84") |
|
|
|
|
hash := trie.Root.([]byte) |
|
|
|
|
if !bytes.Equal(hash, exp) { |
|
|
|
|
t.Errorf("expected %x got %x", exp, hash) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func BenchmarkGets(b *testing.B) { |
|
|
|
|
_, trie := NewTrie() |
|
|
|
|
vals := []struct{ k, v string }{ |
|
|
|
|
{"do", "verb"}, |
|
|
|
|
{"ether", "wookiedoo"}, |
|
|
|
|
{"horse", "stallion"}, |
|
|
|
|
{"shaman", "horse"}, |
|
|
|
|
{"doge", "coin"}, |
|
|
|
|
{"ether", ""}, |
|
|
|
|
{"dog", "puppy"}, |
|
|
|
|
{"shaman", ""}, |
|
|
|
|
{"somethingveryoddindeedthis is", "myothernodedata"}, |
|
|
|
|
} |
|
|
|
|
for _, val := range vals { |
|
|
|
|
trie.Update(val.k, val.v) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
b.ResetTimer() |
|
|
|
|
for i := 0; i < b.N; i++ { |
|
|
|
|
trie.Get("horse") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func BenchmarkUpdate(b *testing.B) { |
|
|
|
|
_, trie := NewTrie() |
|
|
|
|
|
|
|
|
|
b.ResetTimer() |
|
|
|
|
for i := 0; i < b.N; i++ { |
|
|
|
|
trie.Update(fmt.Sprintf("aaaaaaaaaaaaaaa%d", j), "value") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|