forked from mirror/go-ethereum
commit
675ba4d7eb
@ -1,4 +1,27 @@ |
|||||||
before_install: sudo apt-get install libgmp3-dev |
|
||||||
language: go |
language: go |
||||||
go: |
go: |
||||||
- 1.3 |
- 1.3 |
||||||
|
before_install: |
||||||
|
- sudo add-apt-repository ppa:ubuntu-sdk-team/ppa -y |
||||||
|
- sudo apt-get update -qq |
||||||
|
- sudo apt-get install -yqq libgmp3-dev qtbase5-private-dev qtdeclarative5-private-dev libqt5opengl5-dev libreadline6-dev |
||||||
|
install: |
||||||
|
- go get code.google.com/p/go.tools/cmd/goimports |
||||||
|
- go get github.com/golang/lint/golint |
||||||
|
# - go get code.google.com/p/go.tools/cmd/vet |
||||||
|
- go get code.google.com/p/go.tools/cmd/cover |
||||||
|
- go get github.com/mattn/goveralls |
||||||
|
- ./install_deps.sh |
||||||
|
before_script: |
||||||
|
- gofmt -l -w . |
||||||
|
- goimports -l -w . |
||||||
|
- golint . |
||||||
|
# - go vet ./... |
||||||
|
# - go test -race ./... |
||||||
|
script: |
||||||
|
- ./gocoverage.sh |
||||||
|
after_script: |
||||||
|
- goveralls -coverprofile=profile.cov -service=travis-ci -repotoken $COVERALLS_TOKEN |
||||||
|
env: |
||||||
|
- secure: "U2U1AmkU4NJBgKR/uUAebQY87cNL0+1JHjnLOmmXwxYYyj5ralWb1aSuSH3qSXiT93qLBmtaUkuv9fberHVqrbAeVlztVdUsKAq7JMQH+M99iFkC9UiRMqHmtjWJ0ok4COD1sRYixxi21wb/JrMe3M1iL4QJVS61iltjHhVdM64=" |
||||||
|
|
||||||
|
@ -1,7 +1,7 @@ |
|||||||
package chain |
package chain |
||||||
|
|
||||||
import "testing" |
// import "testing"
|
||||||
|
|
||||||
func TestFilter(t *testing.T) { |
// func TestFilter(t *testing.T) {
|
||||||
NewFilter(NewTestManager()) |
// NewFilter(NewTestManager())
|
||||||
} |
// }
|
||||||
|
@ -1,115 +1,118 @@ |
|||||||
package rle |
package rle |
||||||
|
|
||||||
import ( |
import ( |
||||||
"bytes" |
|
||||||
"testing" |
"testing" |
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/crypto" |
checker "gopkg.in/check.v1" |
||||||
) |
) |
||||||
|
|
||||||
func TestDecompressSimple(t *testing.T) { |
func Test(t *testing.T) { checker.TestingT(t) } |
||||||
|
|
||||||
|
type CompressionRleSuite struct{} |
||||||
|
|
||||||
|
var _ = checker.Suite(&CompressionRleSuite{}) |
||||||
|
|
||||||
|
func (s *CompressionRleSuite) TestDecompressSimple(c *checker.C) { |
||||||
|
exp := []byte{0xc5, 0xd2, 0x46, 0x1, 0x86, 0xf7, 0x23, 0x3c, 0x92, 0x7e, 0x7d, 0xb2, 0xdc, 0xc7, 0x3, 0xc0, 0xe5, 0x0, 0xb6, 0x53, 0xca, 0x82, 0x27, 0x3b, 0x7b, 0xfa, 0xd8, 0x4, 0x5d, 0x85, 0xa4, 0x70} |
||||||
res, err := Decompress([]byte{token, 0xfd}) |
res, err := Decompress([]byte{token, 0xfd}) |
||||||
if err != nil { |
c.Assert(err, checker.IsNil) |
||||||
t.Error(err) |
c.Assert(res, checker.DeepEquals, exp) |
||||||
} |
// if bytes.Compare(res, exp) != 0 {
|
||||||
if bytes.Compare(res, crypto.Sha3([]byte(""))) != 0 { |
// t.Error("empty sha3", res)
|
||||||
t.Error("empty sha3", res) |
// }
|
||||||
} |
|
||||||
|
|
||||||
|
exp = []byte{0x56, 0xe8, 0x1f, 0x17, 0x1b, 0xcc, 0x55, 0xa6, 0xff, 0x83, 0x45, 0xe6, 0x92, 0xc0, 0xf8, 0x6e, 0x5b, 0x48, 0xe0, 0x1b, 0x99, 0x6c, 0xad, 0xc0, 0x1, 0x62, 0x2f, 0xb5, 0xe3, 0x63, 0xb4, 0x21} |
||||||
res, err = Decompress([]byte{token, 0xfe}) |
res, err = Decompress([]byte{token, 0xfe}) |
||||||
if err != nil { |
c.Assert(err, checker.IsNil) |
||||||
t.Error(err) |
c.Assert(res, checker.DeepEquals, exp) |
||||||
} |
// if bytes.Compare(res, exp) != 0 {
|
||||||
if bytes.Compare(res, crypto.Sha3([]byte{0x80})) != 0 { |
// t.Error("0x80 sha3", res)
|
||||||
t.Error("0x80 sha3", res) |
// }
|
||||||
} |
|
||||||
|
|
||||||
res, err = Decompress([]byte{token, 0xff}) |
res, err = Decompress([]byte{token, 0xff}) |
||||||
if err != nil { |
c.Assert(err, checker.IsNil) |
||||||
t.Error(err) |
c.Assert(res, checker.DeepEquals, []byte{token}) |
||||||
} |
// if bytes.Compare(res, []byte{token}) != 0 {
|
||||||
if bytes.Compare(res, []byte{token}) != 0 { |
// t.Error("token", res)
|
||||||
t.Error("token", res) |
// }
|
||||||
} |
|
||||||
|
|
||||||
res, err = Decompress([]byte{token, 12}) |
res, err = Decompress([]byte{token, 12}) |
||||||
if err != nil { |
c.Assert(err, checker.IsNil) |
||||||
t.Error(err) |
c.Assert(res, checker.DeepEquals, make([]byte, 10)) |
||||||
} |
// if bytes.Compare(res, make([]byte, 10)) != 0 {
|
||||||
if bytes.Compare(res, make([]byte, 10)) != 0 { |
// t.Error("10 * zero", res)
|
||||||
t.Error("10 * zero", res) |
// }
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
func TestDecompressMulti(t *testing.T) { |
|
||||||
res, err := Decompress([]byte{token, 0xfd, token, 0xfe, token, 12}) |
|
||||||
if err != nil { |
|
||||||
t.Error(err) |
|
||||||
} |
|
||||||
|
|
||||||
var exp []byte |
|
||||||
exp = append(exp, crypto.Sha3([]byte(""))...) |
|
||||||
exp = append(exp, crypto.Sha3([]byte{0x80})...) |
|
||||||
exp = append(exp, make([]byte, 10)...) |
|
||||||
|
|
||||||
if bytes.Compare(res, res) != 0 { |
|
||||||
t.Error("Expected", exp, "result", res) |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
func TestCompressSimple(t *testing.T) { |
|
||||||
res := Compress([]byte{0, 0, 0, 0, 0}) |
|
||||||
if bytes.Compare(res, []byte{token, 7}) != 0 { |
|
||||||
t.Error("5 * zero", res) |
|
||||||
} |
|
||||||
|
|
||||||
res = Compress(crypto.Sha3([]byte(""))) |
|
||||||
if bytes.Compare(res, []byte{token, emptyShaToken}) != 0 { |
|
||||||
t.Error("empty sha", res) |
|
||||||
} |
|
||||||
|
|
||||||
res = Compress(crypto.Sha3([]byte{0x80})) |
|
||||||
if bytes.Compare(res, []byte{token, emptyListShaToken}) != 0 { |
|
||||||
t.Error("empty list sha", res) |
|
||||||
} |
|
||||||
|
|
||||||
res = Compress([]byte{token}) |
|
||||||
if bytes.Compare(res, []byte{token, tokenToken}) != 0 { |
|
||||||
t.Error("token", res) |
|
||||||
} |
|
||||||
} |
} |
||||||
|
|
||||||
func TestCompressMulti(t *testing.T) { |
// func TestDecompressMulti(t *testing.T) {
|
||||||
in := []byte{0, 0, 0, 0, 0} |
// res, err := Decompress([]byte{token, 0xfd, token, 0xfe, token, 12})
|
||||||
in = append(in, crypto.Sha3([]byte(""))...) |
// if err != nil {
|
||||||
in = append(in, crypto.Sha3([]byte{0x80})...) |
// t.Error(err)
|
||||||
in = append(in, token) |
// }
|
||||||
res := Compress(in) |
|
||||||
|
// var exp []byte
|
||||||
exp := []byte{token, 7, token, emptyShaToken, token, emptyListShaToken, token, tokenToken} |
// exp = append(exp, crypto.Sha3([]byte(""))...)
|
||||||
if bytes.Compare(res, exp) != 0 { |
// exp = append(exp, crypto.Sha3([]byte{0x80})...)
|
||||||
t.Error("expected", exp, "got", res) |
// exp = append(exp, make([]byte, 10)...)
|
||||||
} |
|
||||||
} |
// if bytes.Compare(res, res) != 0 {
|
||||||
|
// t.Error("Expected", exp, "result", res)
|
||||||
func TestCompressDecompress(t *testing.T) { |
// }
|
||||||
var in []byte |
// }
|
||||||
|
|
||||||
for i := 0; i < 20; i++ { |
// func TestCompressSimple(t *testing.T) {
|
||||||
in = append(in, []byte{0, 0, 0, 0, 0}...) |
// res := Compress([]byte{0, 0, 0, 0, 0})
|
||||||
in = append(in, crypto.Sha3([]byte(""))...) |
// if bytes.Compare(res, []byte{token, 7}) != 0 {
|
||||||
in = append(in, crypto.Sha3([]byte{0x80})...) |
// t.Error("5 * zero", res)
|
||||||
in = append(in, []byte{123, 2, 19, 89, 245, 254, 255, token, 98, 233}...) |
// }
|
||||||
in = append(in, token) |
|
||||||
} |
// res = Compress(crypto.Sha3([]byte("")))
|
||||||
|
// if bytes.Compare(res, []byte{token, emptyShaToken}) != 0 {
|
||||||
c := Compress(in) |
// t.Error("empty sha", res)
|
||||||
d, err := Decompress(c) |
// }
|
||||||
if err != nil { |
|
||||||
t.Error(err) |
// res = Compress(crypto.Sha3([]byte{0x80}))
|
||||||
} |
// if bytes.Compare(res, []byte{token, emptyListShaToken}) != 0 {
|
||||||
|
// t.Error("empty list sha", res)
|
||||||
if bytes.Compare(d, in) != 0 { |
// }
|
||||||
t.Error("multi failed\n", d, "\n", in) |
|
||||||
} |
// res = Compress([]byte{token})
|
||||||
} |
// if bytes.Compare(res, []byte{token, tokenToken}) != 0 {
|
||||||
|
// t.Error("token", res)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// func TestCompressMulti(t *testing.T) {
|
||||||
|
// in := []byte{0, 0, 0, 0, 0}
|
||||||
|
// in = append(in, crypto.Sha3([]byte(""))...)
|
||||||
|
// in = append(in, crypto.Sha3([]byte{0x80})...)
|
||||||
|
// in = append(in, token)
|
||||||
|
// res := Compress(in)
|
||||||
|
|
||||||
|
// exp := []byte{token, 7, token, emptyShaToken, token, emptyListShaToken, token, tokenToken}
|
||||||
|
// if bytes.Compare(res, exp) != 0 {
|
||||||
|
// t.Error("expected", exp, "got", res)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// func TestCompressDecompress(t *testing.T) {
|
||||||
|
// var in []byte
|
||||||
|
|
||||||
|
// for i := 0; i < 20; i++ {
|
||||||
|
// in = append(in, []byte{0, 0, 0, 0, 0}...)
|
||||||
|
// in = append(in, crypto.Sha3([]byte(""))...)
|
||||||
|
// in = append(in, crypto.Sha3([]byte{0x80})...)
|
||||||
|
// in = append(in, []byte{123, 2, 19, 89, 245, 254, 255, token, 98, 233}...)
|
||||||
|
// in = append(in, token)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// c := Compress(in)
|
||||||
|
// d, err := Decompress(c)
|
||||||
|
// if err != nil {
|
||||||
|
// t.Error(err)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if bytes.Compare(d, in) != 0 {
|
||||||
|
// t.Error("multi failed\n", d, "\n", in)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
@ -1,122 +1,122 @@ |
|||||||
package crypto |
package crypto |
||||||
|
|
||||||
import ( |
// import (
|
||||||
"github.com/ethereum/go-ethereum/ethdb" |
// "github.com/ethereum/go-ethereum/ethdb"
|
||||||
// "io/ioutil"
|
// // "io/ioutil"
|
||||||
"fmt" |
// "fmt"
|
||||||
"os" |
// "os"
|
||||||
"path" |
// "path"
|
||||||
"testing" |
// "testing"
|
||||||
) |
// )
|
||||||
|
|
||||||
// test if persistence layer works
|
// // test if persistence layer works
|
||||||
func TestDBKeyManager(t *testing.T) { |
// func TestDBKeyManager(t *testing.T) {
|
||||||
memdb, _ := ethdb.NewMemDatabase() |
// memdb, _ := ethdb.NewMemDatabase()
|
||||||
keyManager0 := NewDBKeyManager(memdb) |
// keyManager0 := NewDBKeyManager(memdb)
|
||||||
err := keyManager0.Init("", 0, false) |
// err := keyManager0.Init("", 0, false)
|
||||||
if err != nil { |
// if err != nil {
|
||||||
t.Error("Unexpected error: ", err) |
// t.Error("Unexpected error: ", err)
|
||||||
} |
// }
|
||||||
keyManager1 := NewDBKeyManager(memdb) |
// keyManager1 := NewDBKeyManager(memdb)
|
||||||
err = keyManager1.Init("", 0, false) |
// err = keyManager1.Init("", 0, false)
|
||||||
if err != nil { |
// if err != nil {
|
||||||
t.Error("Unexpected error: ", err) |
// t.Error("Unexpected error: ", err)
|
||||||
} |
// }
|
||||||
if string(keyManager0.PrivateKey()) != string(keyManager1.PrivateKey()) { |
// if string(keyManager0.PrivateKey()) != string(keyManager1.PrivateKey()) {
|
||||||
t.Error("Expected private keys %x, %x, to be identical via db persistence", keyManager0.PrivateKey(), keyManager1.PrivateKey()) |
// t.Error("Expected private keys %x, %x, to be identical via db persistence", keyManager0.PrivateKey(), keyManager1.PrivateKey())
|
||||||
} |
// }
|
||||||
err = keyManager1.Init("", 0, true) |
// err = keyManager1.Init("", 0, true)
|
||||||
if err != nil { |
// if err != nil {
|
||||||
t.Error("Unexpected error: ", err) |
// t.Error("Unexpected error: ", err)
|
||||||
} |
// }
|
||||||
if string(keyManager0.PrivateKey()) == string(keyManager1.PrivateKey()) { |
// if string(keyManager0.PrivateKey()) == string(keyManager1.PrivateKey()) {
|
||||||
t.Error("Expected private keys %x, %x, to be be different despite db persistence if force generate", keyManager0.PrivateKey(), keyManager1.PrivateKey()) |
// t.Error("Expected private keys %x, %x, to be be different despite db persistence if force generate", keyManager0.PrivateKey(), keyManager1.PrivateKey())
|
||||||
} |
// }
|
||||||
} |
// }
|
||||||
|
|
||||||
func TestFileKeyManager(t *testing.T) { |
// func TestFileKeyManager(t *testing.T) {
|
||||||
basedir0 := "/tmp/ethtest0" |
// basedir0 := "/tmp/ethtest0"
|
||||||
os.RemoveAll(basedir0) |
// os.RemoveAll(basedir0)
|
||||||
os.Mkdir(basedir0, 0777) |
// os.Mkdir(basedir0, 0777)
|
||||||
|
|
||||||
keyManager0 := NewFileKeyManager(basedir0) |
// keyManager0 := NewFileKeyManager(basedir0)
|
||||||
err := keyManager0.Init("", 0, false) |
// err := keyManager0.Init("", 0, false)
|
||||||
if err != nil { |
// if err != nil {
|
||||||
t.Error("Unexpected error: ", err) |
// t.Error("Unexpected error: ", err)
|
||||||
} |
// }
|
||||||
|
|
||||||
keyManager1 := NewFileKeyManager(basedir0) |
// keyManager1 := NewFileKeyManager(basedir0)
|
||||||
|
|
||||||
err = keyManager1.Init("", 0, false) |
// err = keyManager1.Init("", 0, false)
|
||||||
if err != nil { |
// if err != nil {
|
||||||
t.Error("Unexpected error: ", err) |
// t.Error("Unexpected error: ", err)
|
||||||
} |
// }
|
||||||
if string(keyManager0.PrivateKey()) != string(keyManager1.PrivateKey()) { |
// if string(keyManager0.PrivateKey()) != string(keyManager1.PrivateKey()) {
|
||||||
t.Error("Expected private keys %x, %x, to be identical via db persistence", keyManager0.PrivateKey(), keyManager1.PrivateKey()) |
// t.Error("Expected private keys %x, %x, to be identical via db persistence", keyManager0.PrivateKey(), keyManager1.PrivateKey())
|
||||||
} |
// }
|
||||||
|
|
||||||
err = keyManager1.Init("", 0, true) |
// err = keyManager1.Init("", 0, true)
|
||||||
if err != nil { |
// if err != nil {
|
||||||
t.Error("Unexpected error: ", err) |
// t.Error("Unexpected error: ", err)
|
||||||
} |
// }
|
||||||
if string(keyManager0.PrivateKey()) == string(keyManager1.PrivateKey()) { |
// if string(keyManager0.PrivateKey()) == string(keyManager1.PrivateKey()) {
|
||||||
t.Error("Expected private keys %x, %x, to be be different despite db persistence if force generate", keyManager0.PrivateKey(), keyManager1.PrivateKey()) |
// t.Error("Expected private keys %x, %x, to be be different despite db persistence if force generate", keyManager0.PrivateKey(), keyManager1.PrivateKey())
|
||||||
} |
// }
|
||||||
} |
// }
|
||||||
|
|
||||||
// cursor errors
|
// // cursor errors
|
||||||
func TestCursorErrors(t *testing.T) { |
// func TestCursorErrors(t *testing.T) {
|
||||||
memdb, _ := ethdb.NewMemDatabase() |
// memdb, _ := ethdb.NewMemDatabase()
|
||||||
keyManager0 := NewDBKeyManager(memdb) |
// keyManager0 := NewDBKeyManager(memdb)
|
||||||
err := keyManager0.Init("", 0, false) |
// err := keyManager0.Init("", 0, false)
|
||||||
err = keyManager0.Init("", 1, false) |
// err = keyManager0.Init("", 1, false)
|
||||||
if err == nil { |
// if err == nil {
|
||||||
t.Error("Expected cursor error") |
// t.Error("Expected cursor error")
|
||||||
} |
// }
|
||||||
err = keyManager0.SetCursor(1) |
// err = keyManager0.SetCursor(1)
|
||||||
if err == nil { |
// if err == nil {
|
||||||
t.Error("Expected cursor error") |
// t.Error("Expected cursor error")
|
||||||
} |
// }
|
||||||
} |
// }
|
||||||
|
|
||||||
func TestExportImport(t *testing.T) { |
// func TestExportImport(t *testing.T) {
|
||||||
memdb, _ := ethdb.NewMemDatabase() |
// memdb, _ := ethdb.NewMemDatabase()
|
||||||
keyManager0 := NewDBKeyManager(memdb) |
// keyManager0 := NewDBKeyManager(memdb)
|
||||||
err := keyManager0.Init("", 0, false) |
// err := keyManager0.Init("", 0, false)
|
||||||
basedir0 := "/tmp/ethtest0" |
// basedir0 := "/tmp/ethtest0"
|
||||||
os.RemoveAll(basedir0) |
// os.RemoveAll(basedir0)
|
||||||
os.Mkdir(basedir0, 0777) |
// os.Mkdir(basedir0, 0777)
|
||||||
keyManager0.Export(basedir0) |
// keyManager0.Export(basedir0)
|
||||||
|
|
||||||
keyManager1 := NewFileKeyManager(basedir0) |
// keyManager1 := NewFileKeyManager(basedir0)
|
||||||
err = keyManager1.Init("", 0, false) |
// err = keyManager1.Init("", 0, false)
|
||||||
if err != nil { |
// if err != nil {
|
||||||
t.Error("Unexpected error: ", err) |
// t.Error("Unexpected error: ", err)
|
||||||
} |
// }
|
||||||
fmt.Printf("keyRing: %v\n", keyManager0.KeyPair()) |
// fmt.Printf("keyRing: %v\n", keyManager0.KeyPair())
|
||||||
fmt.Printf("keyRing: %v\n", keyManager1.KeyPair()) |
// fmt.Printf("keyRing: %v\n", keyManager1.KeyPair())
|
||||||
if string(keyManager0.PrivateKey()) != string(keyManager1.PrivateKey()) { |
// if string(keyManager0.PrivateKey()) != string(keyManager1.PrivateKey()) {
|
||||||
t.Error("Expected private keys %x, %x, to be identical via export to filestore basedir", keyManager0.PrivateKey(), keyManager1.PrivateKey()) |
// t.Error("Expected private keys %x, %x, to be identical via export to filestore basedir", keyManager0.PrivateKey(), keyManager1.PrivateKey())
|
||||||
} |
// }
|
||||||
path.Join("") |
// path.Join("")
|
||||||
|
|
||||||
// memdb, _ = ethdb.NewMemDatabase()
|
// // memdb, _ = ethdb.NewMemDatabase()
|
||||||
// keyManager2 := NewDBKeyManager(memdb)
|
// // keyManager2 := NewDBKeyManager(memdb)
|
||||||
// err = keyManager2.InitFromSecretsFile("", 0, path.Join(basedir0, "default.prv"))
|
// // err = keyManager2.InitFromSecretsFile("", 0, path.Join(basedir0, "default.prv"))
|
||||||
// if err != nil {
|
// // if err != nil {
|
||||||
// t.Error("Unexpected error: ", err)
|
// // t.Error("Unexpected error: ", err)
|
||||||
// }
|
// // }
|
||||||
// if string(keyManager0.PrivateKey()) != string(keyManager2.PrivateKey()) {
|
// // if string(keyManager0.PrivateKey()) != string(keyManager2.PrivateKey()) {
|
||||||
// t.Error("Expected private keys %s, %s, to be identical via export/import prv", keyManager0.PrivateKey(), keyManager1.PrivateKey())
|
// // t.Error("Expected private keys %s, %s, to be identical via export/import prv", keyManager0.PrivateKey(), keyManager1.PrivateKey())
|
||||||
// }
|
// // }
|
||||||
|
|
||||||
// memdb, _ = ethdb.NewMemDatabase()
|
// // memdb, _ = ethdb.NewMemDatabase()
|
||||||
// keyManager3 := NewDBKeyManager(memdb)
|
// // keyManager3 := NewDBKeyManager(memdb)
|
||||||
// err = keyManager3.InitFromSecretsFile("", 0, path.Join(basedir0, "default.mne"))
|
// // err = keyManager3.InitFromSecretsFile("", 0, path.Join(basedir0, "default.mne"))
|
||||||
// if err != nil {
|
// // if err != nil {
|
||||||
// t.Error("Unexpected error: ", err)
|
// // t.Error("Unexpected error: ", err)
|
||||||
// }
|
// // }
|
||||||
// if string(keyManager0.PrivateKey()) != string(keyManager3.PrivateKey()) {
|
// // if string(keyManager0.PrivateKey()) != string(keyManager3.PrivateKey()) {
|
||||||
// t.Error("Expected private keys %s, %s, to be identical via export/import mnemonic file", keyManager0.PrivateKey(), keyManager1.PrivateKey())
|
// // t.Error("Expected private keys %s, %s, to be identical via export/import mnemonic file", keyManager0.PrivateKey(), keyManager1.PrivateKey())
|
||||||
// }
|
// // }
|
||||||
} |
// }
|
||||||
|
@ -0,0 +1,73 @@ |
|||||||
|
package ethutil |
||||||
|
|
||||||
|
import ( |
||||||
|
"bytes" |
||||||
|
"testing" |
||||||
|
) |
||||||
|
|
||||||
|
func TestMisc(t *testing.T) { |
||||||
|
a := Big("10") |
||||||
|
b := Big("57896044618658097711785492504343953926634992332820282019728792003956564819968") |
||||||
|
c := []byte{1, 2, 3, 4} |
||||||
|
z := BitTest(a, 1) |
||||||
|
|
||||||
|
if z != true { |
||||||
|
t.Error("Expected true got", z) |
||||||
|
} |
||||||
|
|
||||||
|
U256(a) |
||||||
|
S256(a) |
||||||
|
|
||||||
|
U256(b) |
||||||
|
S256(b) |
||||||
|
|
||||||
|
BigD(c) |
||||||
|
} |
||||||
|
|
||||||
|
func TestBigMax(t *testing.T) { |
||||||
|
a := Big("10") |
||||||
|
b := Big("5") |
||||||
|
|
||||||
|
max1 := BigMax(a, b) |
||||||
|
if max1 != a { |
||||||
|
t.Errorf("Expected %d got %d", a, max1) |
||||||
|
} |
||||||
|
|
||||||
|
max2 := BigMax(b, a) |
||||||
|
if max2 != a { |
||||||
|
t.Errorf("Expected %d got %d", a, max2) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func TestBigMin(t *testing.T) { |
||||||
|
a := Big("10") |
||||||
|
b := Big("5") |
||||||
|
|
||||||
|
min1 := BigMin(a, b) |
||||||
|
if min1 != b { |
||||||
|
t.Errorf("Expected %d got %d", b, min1) |
||||||
|
} |
||||||
|
|
||||||
|
min2 := BigMin(b, a) |
||||||
|
if min2 != b { |
||||||
|
t.Errorf("Expected %d got %d", b, min2) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func TestBigCopy(t *testing.T) { |
||||||
|
a := Big("10") |
||||||
|
b := BigCopy(a) |
||||||
|
c := Big("1000000000000") |
||||||
|
y := BigToBytes(b, 16) |
||||||
|
ybytes := []byte{0, 10} |
||||||
|
z := BigToBytes(c, 16) |
||||||
|
zbytes := []byte{232, 212, 165, 16, 0} |
||||||
|
|
||||||
|
if bytes.Compare(y, ybytes) != 0 { |
||||||
|
t.Error("Got", ybytes) |
||||||
|
} |
||||||
|
|
||||||
|
if bytes.Compare(z, zbytes) != 0 { |
||||||
|
t.Error("Got", zbytes) |
||||||
|
} |
||||||
|
} |
@ -1,14 +1,193 @@ |
|||||||
package ethutil |
package ethutil |
||||||
|
|
||||||
import ( |
import ( |
||||||
"bytes" |
checker "gopkg.in/check.v1" |
||||||
"testing" |
|
||||||
) |
) |
||||||
|
|
||||||
func TestParseData(t *testing.T) { |
type BytesSuite struct{} |
||||||
data := ParseData("hello", "world", "0x0106") |
|
||||||
exp := "68656c6c6f000000000000000000000000000000000000000000000000000000776f726c640000000000000000000000000000000000000000000000000000000106000000000000000000000000000000000000000000000000000000000000" |
var _ = checker.Suite(&BytesSuite{}) |
||||||
if bytes.Compare(data, Hex2Bytes(exp)) != 0 { |
|
||||||
t.Error("Error parsing data") |
func (s *BytesSuite) TestByteString(c *checker.C) { |
||||||
} |
var data Bytes |
||||||
|
data = []byte{102, 111, 111} |
||||||
|
exp := "foo" |
||||||
|
res := data.String() |
||||||
|
|
||||||
|
c.Assert(res, checker.Equals, exp) |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
func (s *BytesSuite) TestDeleteFromByteSlice(c *checker.C) { |
||||||
|
data := []byte{1, 2, 3, 4} |
||||||
|
slice := []byte{1, 2, 3, 4} |
||||||
|
exp := []byte{1, 4} |
||||||
|
res := DeleteFromByteSlice(data, slice) |
||||||
|
|
||||||
|
c.Assert(res, checker.DeepEquals, exp) |
||||||
|
} |
||||||
|
|
||||||
|
*/ |
||||||
|
func (s *BytesSuite) TestNumberToBytes(c *checker.C) { |
||||||
|
// data1 := int(1)
|
||||||
|
// res1 := NumberToBytes(data1, 16)
|
||||||
|
// c.Check(res1, checker.Panics)
|
||||||
|
|
||||||
|
var data2 float64 = 3.141592653 |
||||||
|
exp2 := []byte{0xe9, 0x38} |
||||||
|
res2 := NumberToBytes(data2, 16) |
||||||
|
c.Assert(res2, checker.DeepEquals, exp2) |
||||||
|
} |
||||||
|
|
||||||
|
func (s *BytesSuite) TestBytesToNumber(c *checker.C) { |
||||||
|
datasmall := []byte{0xe9, 0x38, 0xe9, 0x38} |
||||||
|
datalarge := []byte{0xe9, 0x38, 0xe9, 0x38, 0xe9, 0x38, 0xe9, 0x38} |
||||||
|
|
||||||
|
var expsmall uint64 = 0xe938e938 |
||||||
|
var explarge uint64 = 0x0 |
||||||
|
|
||||||
|
ressmall := BytesToNumber(datasmall) |
||||||
|
reslarge := BytesToNumber(datalarge) |
||||||
|
|
||||||
|
c.Assert(ressmall, checker.Equals, expsmall) |
||||||
|
c.Assert(reslarge, checker.Equals, explarge) |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
func (s *BytesSuite) TestReadVarInt(c *checker.C) { |
||||||
|
data8 := []byte{1, 2, 3, 4, 5, 6, 7, 8} |
||||||
|
data4 := []byte{1, 2, 3, 4} |
||||||
|
data2 := []byte{1, 2} |
||||||
|
data1 := []byte{1} |
||||||
|
|
||||||
|
exp8 := uint64(72623859790382856) |
||||||
|
exp4 := uint64(16909060) |
||||||
|
exp2 := uint64(258) |
||||||
|
exp1 := uint64(1) |
||||||
|
|
||||||
|
res8 := ReadVarInt(data8) |
||||||
|
res4 := ReadVarInt(data4) |
||||||
|
res2 := ReadVarInt(data2) |
||||||
|
res1 := ReadVarInt(data1) |
||||||
|
|
||||||
|
c.Assert(res8, checker.Equals, exp8) |
||||||
|
c.Assert(res4, checker.Equals, exp4) |
||||||
|
c.Assert(res2, checker.Equals, exp2) |
||||||
|
c.Assert(res1, checker.Equals, exp1) |
||||||
|
} |
||||||
|
|
||||||
|
func (s *BytesSuite) TestBinaryLength(c *checker.C) { |
||||||
|
data1 := 0 |
||||||
|
data2 := 920987656789 |
||||||
|
|
||||||
|
exp1 := 0 |
||||||
|
exp2 := 5 |
||||||
|
|
||||||
|
res1 := BinaryLength(data1) |
||||||
|
res2 := BinaryLength(data2) |
||||||
|
|
||||||
|
c.Assert(res1, checker.Equals, exp1) |
||||||
|
c.Assert(res2, checker.Equals, exp2) |
||||||
|
} |
||||||
|
|
||||||
|
func (s *BytesSuite) TestCopyBytes(c *checker.C) { |
||||||
|
data1 := []byte{1, 2, 3, 4} |
||||||
|
exp1 := []byte{1, 2, 3, 4} |
||||||
|
res1 := CopyBytes(data1) |
||||||
|
c.Assert(res1, checker.DeepEquals, exp1) |
||||||
|
} |
||||||
|
|
||||||
|
func (s *BytesSuite) TestIsHex(c *checker.C) { |
||||||
|
data1 := "a9e67e" |
||||||
|
exp1 := false |
||||||
|
res1 := IsHex(data1) |
||||||
|
c.Assert(res1, checker.DeepEquals, exp1) |
||||||
|
|
||||||
|
data2 := "0xa9e67e00" |
||||||
|
exp2 := true |
||||||
|
res2 := IsHex(data2) |
||||||
|
c.Assert(res2, checker.DeepEquals, exp2) |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
func (s *BytesSuite) TestParseDataString(c *checker.C) { |
||||||
|
res1 := ParseData("hello", "world", "0x0106") |
||||||
|
data := "68656c6c6f000000000000000000000000000000000000000000000000000000776f726c640000000000000000000000000000000000000000000000000000000106000000000000000000000000000000000000000000000000000000000000" |
||||||
|
exp1 := Hex2Bytes(data) |
||||||
|
c.Assert(res1, checker.DeepEquals, exp1) |
||||||
|
} |
||||||
|
|
||||||
|
func (s *BytesSuite) TestParseDataBytes(c *checker.C) { |
||||||
|
data1 := []byte{232, 212, 165, 16, 0} |
||||||
|
exp1 := []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 212, 165, 16, 0} |
||||||
|
|
||||||
|
res1 := ParseData(data1) |
||||||
|
c.Assert(res1, checker.DeepEquals, exp1) |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
func (s *BytesSuite) TestLeftPadBytes(c *checker.C) { |
||||||
|
val1 := []byte{1, 2, 3, 4} |
||||||
|
exp1 := []byte{0, 0, 0, 0, 1, 2, 3, 4} |
||||||
|
|
||||||
|
res1 := LeftPadBytes(val1, 8) |
||||||
|
res2 := LeftPadBytes(val1, 2) |
||||||
|
|
||||||
|
c.Assert(res1, checker.DeepEquals, exp1) |
||||||
|
c.Assert(res2, checker.DeepEquals, val1) |
||||||
|
} |
||||||
|
|
||||||
|
func (s *BytesSuite) TestFormatData(c *checker.C) { |
||||||
|
data1 := "" |
||||||
|
data2 := "0xa9e67e00" |
||||||
|
data3 := "a9e67e" |
||||||
|
data4 := "\"a9e67e00\"" |
||||||
|
|
||||||
|
// exp1 := []byte{}
|
||||||
|
exp2 := []byte{00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0xa9, 0xe6, 0x7e, 00} |
||||||
|
exp3 := []byte{00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00} |
||||||
|
exp4 := []byte{0x61, 0x39, 0x65, 0x36, 0x37, 0x65, 0x30, 0x30, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00} |
||||||
|
|
||||||
|
res1 := FormatData(data1) |
||||||
|
res2 := FormatData(data2) |
||||||
|
res3 := FormatData(data3) |
||||||
|
res4 := FormatData(data4) |
||||||
|
|
||||||
|
c.Assert(res1, checker.IsNil) |
||||||
|
c.Assert(res2, checker.DeepEquals, exp2) |
||||||
|
c.Assert(res3, checker.DeepEquals, exp3) |
||||||
|
c.Assert(res4, checker.DeepEquals, exp4) |
||||||
|
} |
||||||
|
|
||||||
|
func (s *BytesSuite) TestRightPadBytes(c *checker.C) { |
||||||
|
val := []byte{1, 2, 3, 4} |
||||||
|
exp := []byte{1, 2, 3, 4, 0, 0, 0, 0} |
||||||
|
|
||||||
|
resstd := RightPadBytes(val, 8) |
||||||
|
resshrt := RightPadBytes(val, 2) |
||||||
|
|
||||||
|
c.Assert(resstd, checker.DeepEquals, exp) |
||||||
|
c.Assert(resshrt, checker.DeepEquals, val) |
||||||
|
} |
||||||
|
|
||||||
|
func (s *BytesSuite) TestLeftPadString(c *checker.C) { |
||||||
|
val := "test" |
||||||
|
exp := "\x30\x30\x30\x30" + val |
||||||
|
|
||||||
|
resstd := LeftPadString(val, 8) |
||||||
|
resshrt := LeftPadString(val, 2) |
||||||
|
|
||||||
|
c.Assert(resstd, checker.Equals, exp) |
||||||
|
c.Assert(resshrt, checker.Equals, val) |
||||||
|
} |
||||||
|
|
||||||
|
func (s *BytesSuite) TestRightPadString(c *checker.C) { |
||||||
|
val := "test" |
||||||
|
exp := val + "\x30\x30\x30\x30" |
||||||
|
|
||||||
|
resstd := RightPadString(val, 8) |
||||||
|
resshrt := RightPadString(val, 2) |
||||||
|
|
||||||
|
c.Assert(resstd, checker.Equals, exp) |
||||||
|
c.Assert(resshrt, checker.Equals, val) |
||||||
} |
} |
||||||
|
@ -0,0 +1,9 @@ |
|||||||
|
package ethutil |
||||||
|
|
||||||
|
import ( |
||||||
|
"testing" |
||||||
|
|
||||||
|
checker "gopkg.in/check.v1" |
||||||
|
) |
||||||
|
|
||||||
|
func Test(t *testing.T) { checker.TestingT(t) } |
@ -0,0 +1,51 @@ |
|||||||
|
package ethutil |
||||||
|
|
||||||
|
import ( |
||||||
|
// "os"
|
||||||
|
"testing" |
||||||
|
) |
||||||
|
|
||||||
|
func TestGoodFile(t *testing.T) { |
||||||
|
goodpath := "~/goethereumtest.pass" |
||||||
|
path := ExpandHomePath(goodpath) |
||||||
|
contentstring := "3.14159265358979323846" |
||||||
|
|
||||||
|
err := WriteFile(path, []byte(contentstring)) |
||||||
|
if err != nil { |
||||||
|
t.Error("Could not write file") |
||||||
|
} |
||||||
|
|
||||||
|
if !FileExist(path) { |
||||||
|
t.Error("File not found at", path) |
||||||
|
} |
||||||
|
|
||||||
|
v, err := ReadAllFile(path) |
||||||
|
if err != nil { |
||||||
|
t.Error("Could not read file", path) |
||||||
|
} |
||||||
|
if v != contentstring { |
||||||
|
t.Error("Expected", contentstring, "Got", v) |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
func TestBadFile(t *testing.T) { |
||||||
|
badpath := "/this/path/should/not/exist/goethereumtest.fail" |
||||||
|
path := ExpandHomePath(badpath) |
||||||
|
contentstring := "3.14159265358979323846" |
||||||
|
|
||||||
|
err := WriteFile(path, []byte(contentstring)) |
||||||
|
if err == nil { |
||||||
|
t.Error("Wrote file, but should not be able to", path) |
||||||
|
} |
||||||
|
|
||||||
|
if FileExist(path) { |
||||||
|
t.Error("Found file, but should not be able to", path) |
||||||
|
} |
||||||
|
|
||||||
|
v, err := ReadAllFile(path) |
||||||
|
if err == nil { |
||||||
|
t.Error("Read file, but should not be able to", v) |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
package ethutil |
||||||
|
|
||||||
|
import ( |
||||||
|
checker "gopkg.in/check.v1" |
||||||
|
) |
||||||
|
|
||||||
|
type RandomSuite struct{} |
||||||
|
|
||||||
|
var _ = checker.Suite(&RandomSuite{}) |
||||||
|
|
||||||
|
func (s *RandomSuite) TestRandomUint64(c *checker.C) { |
||||||
|
res1, _ := RandomUint64() |
||||||
|
res2, _ := RandomUint64() |
||||||
|
c.Assert(res1, checker.NotNil) |
||||||
|
c.Assert(res2, checker.NotNil) |
||||||
|
c.Assert(res1, checker.Not(checker.Equals), res2) |
||||||
|
} |
@ -1,12 +1,23 @@ |
|||||||
package ethutil |
package ethutil |
||||||
|
|
||||||
import ( |
import ( |
||||||
"fmt" |
checker "gopkg.in/check.v1" |
||||||
"testing" |
|
||||||
) |
) |
||||||
|
|
||||||
func TestSize(t *testing.T) { |
type SizeSuite struct{} |
||||||
fmt.Println(StorageSize(2381273)) |
|
||||||
fmt.Println(StorageSize(2192)) |
var _ = checker.Suite(&SizeSuite{}) |
||||||
fmt.Println(StorageSize(12)) |
|
||||||
|
func (s *SizeSuite) TestStorageSizeString(c *checker.C) { |
||||||
|
data1 := 2381273 |
||||||
|
data2 := 2192 |
||||||
|
data3 := 12 |
||||||
|
|
||||||
|
exp1 := "2.38 mB" |
||||||
|
exp2 := "2.19 kB" |
||||||
|
exp3 := "12.00 B" |
||||||
|
|
||||||
|
c.Assert(StorageSize(data1).String(), checker.Equals, exp1) |
||||||
|
c.Assert(StorageSize(data2).String(), checker.Equals, exp2) |
||||||
|
c.Assert(StorageSize(data3).String(), checker.Equals, exp3) |
||||||
} |
} |
||||||
|
@ -1,86 +1,70 @@ |
|||||||
package ethutil |
package ethutil |
||||||
|
|
||||||
import ( |
import ( |
||||||
"bytes" |
|
||||||
"fmt" |
|
||||||
"math/big" |
"math/big" |
||||||
"testing" |
|
||||||
|
checker "gopkg.in/check.v1" |
||||||
) |
) |
||||||
|
|
||||||
func TestValueCmp(t *testing.T) { |
type ValueSuite struct{} |
||||||
|
|
||||||
|
var _ = checker.Suite(&ValueSuite{}) |
||||||
|
|
||||||
|
func (s *ValueSuite) TestValueCmp(c *checker.C) { |
||||||
val1 := NewValue("hello") |
val1 := NewValue("hello") |
||||||
val2 := NewValue("world") |
val2 := NewValue("world") |
||||||
if val1.Cmp(val2) { |
c.Assert(val1.Cmp(val2), checker.Equals, false) |
||||||
t.Error("Expected values not to be equal") |
|
||||||
} |
|
||||||
|
|
||||||
val3 := NewValue("hello") |
val3 := NewValue("hello") |
||||||
val4 := NewValue("hello") |
val4 := NewValue("hello") |
||||||
if !val3.Cmp(val4) { |
c.Assert(val3.Cmp(val4), checker.Equals, true) |
||||||
t.Error("Expected values to be equal") |
|
||||||
} |
|
||||||
} |
} |
||||||
|
|
||||||
func TestValueTypes(t *testing.T) { |
func (s *ValueSuite) TestValueTypes(c *checker.C) { |
||||||
str := NewValue("str") |
str := NewValue("str") |
||||||
num := NewValue(1) |
num := NewValue(1) |
||||||
inter := NewValue([]interface{}{1}) |
inter := NewValue([]interface{}{1}) |
||||||
byt := NewValue([]byte{1, 2, 3, 4}) |
byt := NewValue([]byte{1, 2, 3, 4}) |
||||||
bigInt := NewValue(big.NewInt(10)) |
bigInt := NewValue(big.NewInt(10)) |
||||||
|
|
||||||
if str.Str() != "str" { |
strExp := "str" |
||||||
t.Errorf("expected Str to return 'str', got %s", str.Str()) |
numExp := uint64(1) |
||||||
} |
|
||||||
|
|
||||||
if num.Uint() != 1 { |
|
||||||
t.Errorf("expected Uint to return '1', got %d", num.Uint()) |
|
||||||
} |
|
||||||
|
|
||||||
interExp := []interface{}{1} |
interExp := []interface{}{1} |
||||||
if !NewValue(inter.Interface()).Cmp(NewValue(interExp)) { |
|
||||||
t.Errorf("expected Interface to return '%v', got %v", interExp, num.Interface()) |
|
||||||
} |
|
||||||
|
|
||||||
bytExp := []byte{1, 2, 3, 4} |
bytExp := []byte{1, 2, 3, 4} |
||||||
if bytes.Compare(byt.Bytes(), bytExp) != 0 { |
|
||||||
t.Errorf("expected Bytes to return '%v', got %v", bytExp, byt.Bytes()) |
|
||||||
} |
|
||||||
|
|
||||||
bigExp := big.NewInt(10) |
bigExp := big.NewInt(10) |
||||||
if bigInt.BigInt().Cmp(bigExp) != 0 { |
|
||||||
t.Errorf("expected BigInt to return '%v', got %v", bigExp, bigInt.BigInt()) |
c.Assert(str.Str(), checker.Equals, strExp) |
||||||
} |
c.Assert(num.Uint(), checker.Equals, numExp) |
||||||
|
c.Assert(NewValue(inter.Interface()).Cmp(NewValue(interExp)), checker.Equals, true) |
||||||
|
c.Assert(byt.Bytes(), checker.DeepEquals, bytExp) |
||||||
|
c.Assert(bigInt.BigInt(), checker.DeepEquals, bigExp) |
||||||
} |
} |
||||||
|
|
||||||
func TestIterator(t *testing.T) { |
func (s *ValueSuite) TestIterator(c *checker.C) { |
||||||
value := NewValue([]interface{}{1, 2, 3}) |
value := NewValue([]interface{}{1, 2, 3}) |
||||||
it := value.NewIterator() |
iter := value.NewIterator() |
||||||
values := []uint64{1, 2, 3} |
values := []uint64{1, 2, 3} |
||||||
i := 0 |
i := 0 |
||||||
for it.Next() { |
for iter.Next() { |
||||||
if values[i] != it.Value().Uint() { |
c.Assert(values[i], checker.Equals, iter.Value().Uint()) |
||||||
t.Errorf("Expected %d, got %d", values[i], it.Value().Uint()) |
|
||||||
} |
|
||||||
i++ |
i++ |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
func TestMath(t *testing.T) { |
func (s *ValueSuite) TestMath(c *checker.C) { |
||||||
a := NewValue(1) |
data1 := NewValue(1) |
||||||
a.Add(1).Add(1) |
data1.Add(1).Add(1) |
||||||
|
exp1 := NewValue(3) |
||||||
if !a.DeepCmp(NewValue(3)) { |
data2 := NewValue(2) |
||||||
t.Error("Expected 3, got", a) |
data2.Sub(1).Sub(1) |
||||||
} |
exp2 := NewValue(0) |
||||||
|
|
||||||
a = NewValue(2) |
c.Assert(data1.DeepCmp(exp1), checker.Equals, true) |
||||||
a.Sub(1).Sub(1) |
c.Assert(data2.DeepCmp(exp2), checker.Equals, true) |
||||||
if !a.DeepCmp(NewValue(0)) { |
|
||||||
t.Error("Expected 0, got", a) |
|
||||||
} |
|
||||||
} |
} |
||||||
|
|
||||||
func TestString(t *testing.T) { |
func (s *ValueSuite) TestString(c *checker.C) { |
||||||
a := NewValue("10") |
data := "10" |
||||||
fmt.Println("VALUE WITH STRING:", a.Int()) |
exp := int64(10) |
||||||
|
c.Assert(NewValue(data).Int(), checker.DeepEquals, exp) |
||||||
} |
} |
||||||
|
@ -0,0 +1,40 @@ |
|||||||
|
mode: count |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:41.66,45.17 4 1005 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:63.2,63.12 1 1004 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:45.17,47.3 1 1 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:47.3,48.22 1 1004 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:51.3,51.27 1 1004 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:48.22,50.4 1 5 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:51.27,54.32 3 1006 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:57.4,60.25 4 1005 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:54.32,56.5 1 1 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:68.48,71.17 3 3513 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:75.2,77.27 3 3511 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:80.2,80.12 1 3509 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:71.17,74.3 2 2 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:77.27,79.3 1 2576 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:86.28,88.32 2 5 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:93.2,95.20 3 5 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:88.32,89.28 1 3 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:89.28,91.4 1 3 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:98.36,100.34 2 1001 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:109.2,109.22 1 1001 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:100.34,101.37 1 1001 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:101.37,102.22 1 1001 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:102.22,104.5 1 2 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:104.5,106.5 1 999 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:112.46,113.26 1 2007 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:118.2,118.11 1 1005 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:113.26,114.16 1 181499 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:114.16,116.4 1 1002 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:121.52,126.2 4 999 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:142.35,150.2 2 1005 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:152.44,154.2 1 1003 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:156.32,159.2 2 1001 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:161.30,164.14 3 1004 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:167.2,173.19 6 1003 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:164.14,166.3 1 1 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:176.42,178.9 2 2575 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:182.2,182.20 1 2575 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:179.2,179.21 0 1004 |
||||||
|
github.com/ethereum/go-ethereum/event/event.go:180.2,180.19 0 1571 |
@ -0,0 +1,29 @@ |
|||||||
|
#!/bin/bash |
||||||
|
# The script does automatic checking on a Go package and its sub-packages, including: |
||||||
|
# 6. test coverage (http://blog.golang.org/cover) |
||||||
|
|
||||||
|
set -e |
||||||
|
|
||||||
|
# Run test coverage on each subdirectories and merge the coverage profile. |
||||||
|
|
||||||
|
echo "mode: count" > profile.cov |
||||||
|
|
||||||
|
# Standard go tooling behavior is to ignore dirs with leading underscors |
||||||
|
for dir in $(find . -maxdepth 10 -not -path './.git*' -not -path '*/_*' -type d); |
||||||
|
do |
||||||
|
if ls $dir/*.go &> /dev/null; then |
||||||
|
# echo $dir |
||||||
|
go test -covermode=count -coverprofile=$dir/profile.tmp $dir |
||||||
|
if [ -f $dir/profile.tmp ] |
||||||
|
then |
||||||
|
cat $dir/profile.tmp | tail -n +2 >> profile.cov |
||||||
|
rm $dir/profile.tmp |
||||||
|
fi |
||||||
|
fi |
||||||
|
done |
||||||
|
|
||||||
|
go tool cover -func profile.cov |
||||||
|
|
||||||
|
# To submit the test coverage result to coveralls.io, |
||||||
|
# use goveralls (https://github.com/mattn/goveralls) |
||||||
|
# goveralls -coverprofile=profile.cov -service=travis-ci |
@ -0,0 +1,8 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
set -e |
||||||
|
|
||||||
|
TEST_DEPS=$(go list -f '{{.Imports}} {{.TestImports}} {{.XTestImports}}' github.com/ethereum/go-ethereum/... | sed -e 's/\[//g' | sed -e 's/\]//g' | sed -e 's/C //g') |
||||||
|
if [ "$TEST_DEPS" ]; then |
||||||
|
go get -race $TEST_DEPS |
||||||
|
fi |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,9 @@ |
|||||||
|
package state |
||||||
|
|
||||||
|
import ( |
||||||
|
"testing" |
||||||
|
|
||||||
|
checker "gopkg.in/check.v1" |
||||||
|
) |
||||||
|
|
||||||
|
func Test(t *testing.T) { checker.TestingT(t) } |
@ -1,36 +1,61 @@ |
|||||||
package state |
package state |
||||||
|
|
||||||
import ( |
import ( |
||||||
"testing" |
checker "gopkg.in/check.v1" |
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/ethdb" |
"github.com/ethereum/go-ethereum/ethdb" |
||||||
"github.com/ethereum/go-ethereum/ethutil" |
"github.com/ethereum/go-ethereum/ethutil" |
||||||
"github.com/ethereum/go-ethereum/trie" |
"github.com/ethereum/go-ethereum/trie" |
||||||
) |
) |
||||||
|
|
||||||
var ZeroHash256 = make([]byte, 32) |
type StateSuite struct { |
||||||
|
state *State |
||||||
func TestSnapshot(t *testing.T) { |
} |
||||||
db, _ := ethdb.NewMemDatabase() |
|
||||||
ethutil.ReadConfig(".ethtest", "/tmp/ethtest", "") |
|
||||||
ethutil.Config.Db = db |
|
||||||
|
|
||||||
state := New(trie.New(db, "")) |
|
||||||
|
|
||||||
stateObject := state.GetOrNewStateObject([]byte("aa")) |
|
||||||
|
|
||||||
stateObject.SetStorage(ethutil.Big("0"), ethutil.NewValue(42)) |
var _ = checker.Suite(&StateSuite{}) |
||||||
|
|
||||||
snapshot := state.Copy() |
// var ZeroHash256 = make([]byte, 32)
|
||||||
|
|
||||||
stateObject = state.GetStateObject([]byte("aa")) |
func (s *StateSuite) TestDump(c *checker.C) { |
||||||
stateObject.SetStorage(ethutil.Big("0"), ethutil.NewValue(43)) |
key := []byte{0x01} |
||||||
|
value := "foo" |
||||||
|
node := []interface{}{key, value} |
||||||
|
s.state.Trie.Put(node) |
||||||
|
dump := s.state.Dump() |
||||||
|
c.Assert(dump, checker.NotNil) |
||||||
|
} |
||||||
|
|
||||||
state.Set(snapshot) |
func (s *StateSuite) SetUpTest(c *checker.C) { |
||||||
|
db, _ := ethdb.NewMemDatabase() |
||||||
|
ethutil.ReadConfig(".ethtest", "/tmp/ethtest", "") |
||||||
|
ethutil.Config.Db = db |
||||||
|
s.state = New(trie.New(db, "")) |
||||||
|
} |
||||||
|
|
||||||
stateObject = state.GetStateObject([]byte("aa")) |
func (s *StateSuite) TestSnapshot(c *checker.C) { |
||||||
res := stateObject.GetStorage(ethutil.Big("0")) |
stateobjaddr := []byte("aa") |
||||||
if !res.Cmp(ethutil.NewValue(42)) { |
storageaddr := ethutil.Big("0") |
||||||
t.Error("Expected storage 0 to be 42", res) |
data1 := ethutil.NewValue(42) |
||||||
} |
data2 := ethutil.NewValue(43) |
||||||
|
|
||||||
|
// get state object
|
||||||
|
stateObject := s.state.GetOrNewStateObject(stateobjaddr) |
||||||
|
// set inital state object value
|
||||||
|
stateObject.SetStorage(storageaddr, data1) |
||||||
|
// get snapshot of current state
|
||||||
|
snapshot := s.state.Copy() |
||||||
|
|
||||||
|
// get state object. is this strictly necessary?
|
||||||
|
stateObject = s.state.GetStateObject(stateobjaddr) |
||||||
|
// set new state object value
|
||||||
|
stateObject.SetStorage(storageaddr, data2) |
||||||
|
// restore snapshot
|
||||||
|
s.state.Set(snapshot) |
||||||
|
|
||||||
|
// get state object
|
||||||
|
stateObject = s.state.GetStateObject(stateobjaddr) |
||||||
|
// get state storage value
|
||||||
|
res := stateObject.GetStorage(storageaddr) |
||||||
|
|
||||||
|
c.Assert(data1, checker.DeepEquals, res) |
||||||
} |
} |
||||||
|
@ -1,134 +1,135 @@ |
|||||||
package vm |
package vm |
||||||
|
|
||||||
import ( |
// import (
|
||||||
"bytes" |
// "bytes"
|
||||||
"testing" |
// "testing"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/ethutil" |
// "github.com/ethereum/go-ethereum/ethutil"
|
||||||
"github.com/ethereum/go-ethereum/state" |
// "github.com/ethereum/go-ethereum/state"
|
||||||
"github.com/ethereum/go-ethereum/tests/helper" |
// "github.com/ethereum/go-ethereum/tests/helper"
|
||||||
) |
// )
|
||||||
|
|
||||||
type Account struct { |
// type Account struct {
|
||||||
Balance string |
// Balance string
|
||||||
Code string |
// Code string
|
||||||
Nonce string |
// Nonce string
|
||||||
Storage map[string]string |
// Storage map[string]string
|
||||||
} |
// }
|
||||||
|
|
||||||
func StateObjectFromAccount(addr string, account Account) *state.StateObject { |
// func StateObjectFromAccount(addr string, account Account) *state.StateObject {
|
||||||
obj := state.NewStateObject(ethutil.Hex2Bytes(addr)) |
// obj := state.NewStateObject(ethutil.Hex2Bytes(addr))
|
||||||
obj.SetBalance(ethutil.Big(account.Balance)) |
// obj.SetBalance(ethutil.Big(account.Balance))
|
||||||
|
|
||||||
if ethutil.IsHex(account.Code) { |
// if ethutil.IsHex(account.Code) {
|
||||||
account.Code = account.Code[2:] |
// account.Code = account.Code[2:]
|
||||||
} |
// }
|
||||||
obj.Code = ethutil.Hex2Bytes(account.Code) |
// obj.Code = ethutil.Hex2Bytes(account.Code)
|
||||||
obj.Nonce = ethutil.Big(account.Nonce).Uint64() |
// obj.Nonce = ethutil.Big(account.Nonce).Uint64()
|
||||||
|
|
||||||
return obj |
// return obj
|
||||||
} |
// }
|
||||||
|
|
||||||
type VmTest struct { |
// type VmTest struct {
|
||||||
Callcreates interface{} |
// Callcreates interface{}
|
||||||
Env map[string]string |
// Env map[string]string
|
||||||
Exec map[string]string |
// Exec map[string]string
|
||||||
Gas string |
// Gas string
|
||||||
Out string |
// Out string
|
||||||
Post map[string]Account |
// Post map[string]Account
|
||||||
Pre map[string]Account |
// Pre map[string]Account
|
||||||
} |
// }
|
||||||
|
|
||||||
func RunVmTest(p string, t *testing.T) { |
// func RunVmTest(p string, t *testing.T) {
|
||||||
tests := make(map[string]VmTest) |
// tests := make(map[string]VmTest)
|
||||||
helper.CreateFileTests(t, p, &tests) |
// helper.CreateFileTests(t, p, &tests)
|
||||||
|
|
||||||
for name, test := range tests { |
// for name, test := range tests {
|
||||||
state := state.New(helper.NewTrie()) |
// state := state.New(helper.NewTrie())
|
||||||
for addr, account := range test.Pre { |
// for addr, account := range test.Pre {
|
||||||
obj := StateObjectFromAccount(addr, account) |
// obj := StateObjectFromAccount(addr, account)
|
||||||
state.SetStateObject(obj) |
// state.SetStateObject(obj)
|
||||||
} |
// }
|
||||||
|
|
||||||
ret, gas, err := helper.RunVm(state, test.Env, test.Exec) |
// ret, gas, err := helper.RunVm(state, test.Env, test.Exec)
|
||||||
// When an error is returned it doesn't always mean the tests fails.
|
// // When an error is returned it doesn't always mean the tests fails.
|
||||||
// Have to come up with some conditional failing mechanism.
|
// // Have to come up with some conditional failing mechanism.
|
||||||
if err != nil { |
// if err != nil {
|
||||||
helper.Log.Infoln(err) |
// t.Errorf("%s", err)
|
||||||
} |
// helper.Log.Infoln(err)
|
||||||
|
// }
|
||||||
rexp := helper.FromHex(test.Out) |
|
||||||
if bytes.Compare(rexp, ret) != 0 { |
// rexp := helper.FromHex(test.Out)
|
||||||
t.Errorf("%s's return failed. Expected %x, got %x\n", name, rexp, ret) |
// if bytes.Compare(rexp, ret) != 0 {
|
||||||
} |
// t.Errorf("%s's return failed. Expected %x, got %x\n", name, rexp, ret)
|
||||||
|
// }
|
||||||
gexp := ethutil.Big(test.Gas) |
|
||||||
if gexp.Cmp(gas) != 0 { |
// gexp := ethutil.Big(test.Gas)
|
||||||
t.Errorf("%s's gas failed. Expected %v, got %v\n", name, gexp, gas) |
// if gexp.Cmp(gas) != 0 {
|
||||||
} |
// t.Errorf("%s's gas failed. Expected %v, got %v\n", name, gexp, gas)
|
||||||
|
// }
|
||||||
for addr, account := range test.Post { |
|
||||||
obj := state.GetStateObject(helper.FromHex(addr)) |
// for addr, account := range test.Post {
|
||||||
for addr, value := range account.Storage { |
// obj := state.GetStateObject(helper.FromHex(addr))
|
||||||
v := obj.GetState(helper.FromHex(addr)).Bytes() |
// for addr, value := range account.Storage {
|
||||||
vexp := helper.FromHex(value) |
// v := obj.GetState(helper.FromHex(addr)).Bytes()
|
||||||
|
// vexp := helper.FromHex(value)
|
||||||
if bytes.Compare(v, vexp) != 0 { |
|
||||||
t.Errorf("%s's : (%x: %s) storage failed. Expected %x, got %x (%v %v)\n", name, obj.Address()[0:4], addr, vexp, v, ethutil.BigD(vexp), ethutil.BigD(v)) |
// if bytes.Compare(v, vexp) != 0 {
|
||||||
} |
// t.Errorf("%s's : (%x: %s) storage failed. Expected %x, got %x (%v %v)\n", name, obj.Address()[0:4], addr, vexp, v, ethutil.BigD(vexp), ethutil.BigD(v))
|
||||||
} |
// }
|
||||||
} |
// }
|
||||||
} |
// }
|
||||||
} |
// }
|
||||||
|
// }
|
||||||
// I've created a new function for each tests so it's easier to identify where the problem lies if any of them fail.
|
|
||||||
func TestVMArithmetic(t *testing.T) { |
// // I've created a new function for each tests so it's easier to identify where the problem lies if any of them fail.
|
||||||
//helper.Logger.SetLogLevel(5)
|
// func TestVMArithmetic(t *testing.T) {
|
||||||
const fn = "../files/vmtests/vmArithmeticTest.json" |
// //helper.Logger.SetLogLevel(5)
|
||||||
RunVmTest(fn, t) |
// const fn = "../files/vmtests/vmArithmeticTest.json"
|
||||||
} |
// RunVmTest(fn, t)
|
||||||
|
// }
|
||||||
/* |
|
||||||
deleted? |
// /*
|
||||||
func TestVMSystemOperation(t *testing.T) { |
// deleted?
|
||||||
helper.Logger.SetLogLevel(5) |
// func TestVMSystemOperation(t *testing.T) {
|
||||||
const fn = "../files/vmtests/vmSystemOperationsTest.json" |
// helper.Logger.SetLogLevel(5)
|
||||||
RunVmTest(fn, t) |
// const fn = "../files/vmtests/vmSystemOperationsTest.json"
|
||||||
} |
// RunVmTest(fn, t)
|
||||||
*/ |
// }
|
||||||
|
// */
|
||||||
func TestBitwiseLogicOperation(t *testing.T) { |
|
||||||
const fn = "../files/vmtests/vmBitwiseLogicOperationTest.json" |
// func TestBitwiseLogicOperation(t *testing.T) {
|
||||||
RunVmTest(fn, t) |
// const fn = "../files/vmtests/vmBitwiseLogicOperationTest.json"
|
||||||
} |
// RunVmTest(fn, t)
|
||||||
|
// }
|
||||||
func TestBlockInfo(t *testing.T) { |
|
||||||
const fn = "../files/vmtests/vmBlockInfoTest.json" |
// func TestBlockInfo(t *testing.T) {
|
||||||
RunVmTest(fn, t) |
// const fn = "../files/vmtests/vmBlockInfoTest.json"
|
||||||
} |
// RunVmTest(fn, t)
|
||||||
|
// }
|
||||||
func TestEnvironmentalInfo(t *testing.T) { |
|
||||||
const fn = "../files/vmtests/vmEnvironmentalInfoTest.json" |
// func TestEnvironmentalInfo(t *testing.T) {
|
||||||
RunVmTest(fn, t) |
// const fn = "../files/vmtests/vmEnvironmentalInfoTest.json"
|
||||||
} |
// RunVmTest(fn, t)
|
||||||
|
// }
|
||||||
func TestFlowOperation(t *testing.T) { |
|
||||||
helper.Logger.SetLogLevel(5) |
// func TestFlowOperation(t *testing.T) {
|
||||||
const fn = "../files/vmtests/vmIOandFlowOperationsTest.json" |
// helper.Logger.SetLogLevel(5)
|
||||||
RunVmTest(fn, t) |
// const fn = "../files/vmtests/vmIOandFlowOperationsTest.json"
|
||||||
} |
// RunVmTest(fn, t)
|
||||||
|
// }
|
||||||
func TestPushDupSwap(t *testing.T) { |
|
||||||
const fn = "../files/vmtests/vmPushDupSwapTest.json" |
// func TestPushDupSwap(t *testing.T) {
|
||||||
RunVmTest(fn, t) |
// const fn = "../files/vmtests/vmPushDupSwapTest.json"
|
||||||
} |
// RunVmTest(fn, t)
|
||||||
|
// }
|
||||||
func TestVMSha3(t *testing.T) { |
|
||||||
const fn = "../files/vmtests/vmSha3Test.json" |
// func TestVMSha3(t *testing.T) {
|
||||||
RunVmTest(fn, t) |
// const fn = "../files/vmtests/vmSha3Test.json"
|
||||||
} |
// RunVmTest(fn, t)
|
||||||
|
// }
|
||||||
func TestVm(t *testing.T) { |
|
||||||
const fn = "../files/vmtests/vmtests.json" |
// func TestVm(t *testing.T) {
|
||||||
RunVmTest(fn, t) |
// const fn = "../files/vmtests/vmtests.json"
|
||||||
} |
// RunVmTest(fn, t)
|
||||||
|
// }
|
||||||
|
@ -1,68 +1,59 @@ |
|||||||
package trie |
package trie |
||||||
|
|
||||||
import ( |
import ( |
||||||
"bytes" |
checker "gopkg.in/check.v1" |
||||||
"fmt" |
|
||||||
"testing" |
|
||||||
) |
) |
||||||
|
|
||||||
func TestCompactEncode(t *testing.T) { |
type TrieEncodingSuite struct{} |
||||||
|
|
||||||
|
var _ = checker.Suite(&TrieEncodingSuite{}) |
||||||
|
|
||||||
|
func (s *TrieEncodingSuite) TestCompactEncode(c *checker.C) { |
||||||
|
// even compact encode
|
||||||
test1 := []byte{1, 2, 3, 4, 5} |
test1 := []byte{1, 2, 3, 4, 5} |
||||||
if res := CompactEncode(test1); res != "\x11\x23\x45" { |
res1 := CompactEncode(test1) |
||||||
t.Error(fmt.Sprintf("even compact encode failed. Got: %q", res)) |
c.Assert(res1, checker.Equals, "\x11\x23\x45") |
||||||
} |
|
||||||
|
|
||||||
|
// odd compact encode
|
||||||
test2 := []byte{0, 1, 2, 3, 4, 5} |
test2 := []byte{0, 1, 2, 3, 4, 5} |
||||||
if res := CompactEncode(test2); res != "\x00\x01\x23\x45" { |
res2 := CompactEncode(test2) |
||||||
t.Error(fmt.Sprintf("odd compact encode failed. Got: %q", res)) |
c.Assert(res2, checker.Equals, "\x00\x01\x23\x45") |
||||||
} |
|
||||||
|
|
||||||
|
//odd terminated compact encode
|
||||||
test3 := []byte{0, 15, 1, 12, 11, 8 /*term*/, 16} |
test3 := []byte{0, 15, 1, 12, 11, 8 /*term*/, 16} |
||||||
if res := CompactEncode(test3); res != "\x20\x0f\x1c\xb8" { |
res3 := CompactEncode(test3) |
||||||
t.Error(fmt.Sprintf("odd terminated compact encode failed. Got: %q", res)) |
c.Assert(res3, checker.Equals, "\x20\x0f\x1c\xb8") |
||||||
} |
|
||||||
|
|
||||||
|
// even terminated compact encode
|
||||||
test4 := []byte{15, 1, 12, 11, 8 /*term*/, 16} |
test4 := []byte{15, 1, 12, 11, 8 /*term*/, 16} |
||||||
if res := CompactEncode(test4); res != "\x3f\x1c\xb8" { |
res4 := CompactEncode(test4) |
||||||
t.Error(fmt.Sprintf("even terminated compact encode failed. Got: %q", res)) |
c.Assert(res4, checker.Equals, "\x3f\x1c\xb8") |
||||||
} |
|
||||||
} |
} |
||||||
|
|
||||||
func TestCompactHexDecode(t *testing.T) { |
func (s *TrieEncodingSuite) TestCompactHexDecode(c *checker.C) { |
||||||
exp := []byte{7, 6, 6, 5, 7, 2, 6, 2, 16} |
exp := []byte{7, 6, 6, 5, 7, 2, 6, 2, 16} |
||||||
res := CompactHexDecode("verb") |
res := CompactHexDecode("verb") |
||||||
|
c.Assert(res, checker.DeepEquals, exp) |
||||||
if !bytes.Equal(res, exp) { |
|
||||||
t.Error("Error compact hex decode. Expected", exp, "got", res) |
|
||||||
} |
|
||||||
} |
} |
||||||
|
|
||||||
func TestCompactDecode(t *testing.T) { |
func (s *TrieEncodingSuite) TestCompactDecode(c *checker.C) { |
||||||
|
// odd compact decode
|
||||||
exp := []byte{1, 2, 3, 4, 5} |
exp := []byte{1, 2, 3, 4, 5} |
||||||
res := CompactDecode("\x11\x23\x45") |
res := CompactDecode("\x11\x23\x45") |
||||||
|
c.Assert(res, checker.DeepEquals, exp) |
||||||
|
|
||||||
if !bytes.Equal(res, exp) { |
// even compact decode
|
||||||
t.Error("odd compact decode. Expected", exp, "got", res) |
|
||||||
} |
|
||||||
|
|
||||||
exp = []byte{0, 1, 2, 3, 4, 5} |
exp = []byte{0, 1, 2, 3, 4, 5} |
||||||
res = CompactDecode("\x00\x01\x23\x45") |
res = CompactDecode("\x00\x01\x23\x45") |
||||||
|
c.Assert(res, checker.DeepEquals, exp) |
||||||
|
|
||||||
if !bytes.Equal(res, exp) { |
// even terminated compact decode
|
||||||
t.Error("even compact decode. Expected", exp, "got", res) |
|
||||||
} |
|
||||||
|
|
||||||
exp = []byte{0, 15, 1, 12, 11, 8 /*term*/, 16} |
exp = []byte{0, 15, 1, 12, 11, 8 /*term*/, 16} |
||||||
res = CompactDecode("\x20\x0f\x1c\xb8") |
res = CompactDecode("\x20\x0f\x1c\xb8") |
||||||
|
c.Assert(res, checker.DeepEquals, exp) |
||||||
|
|
||||||
if !bytes.Equal(res, exp) { |
// even terminated compact decode
|
||||||
t.Error("even terminated compact decode. Expected", exp, "got", res) |
|
||||||
} |
|
||||||
|
|
||||||
exp = []byte{15, 1, 12, 11, 8 /*term*/, 16} |
exp = []byte{15, 1, 12, 11, 8 /*term*/, 16} |
||||||
res = CompactDecode("\x3f\x1c\xb8") |
res = CompactDecode("\x3f\x1c\xb8") |
||||||
|
c.Assert(res, checker.DeepEquals, exp) |
||||||
if !bytes.Equal(res, exp) { |
|
||||||
t.Error("even terminated compact decode. Expected", exp, "got", res) |
|
||||||
} |
|
||||||
} |
} |
||||||
|
@ -0,0 +1,9 @@ |
|||||||
|
package trie |
||||||
|
|
||||||
|
import ( |
||||||
|
"testing" |
||||||
|
|
||||||
|
checker "gopkg.in/check.v1" |
||||||
|
) |
||||||
|
|
||||||
|
func Test(t *testing.T) { checker.TestingT(t) } |
@ -0,0 +1,9 @@ |
|||||||
|
package vm |
||||||
|
|
||||||
|
import ( |
||||||
|
"testing" |
||||||
|
|
||||||
|
checker "gopkg.in/check.v1" |
||||||
|
) |
||||||
|
|
||||||
|
func Test(t *testing.T) { checker.TestingT(t) } |
Loading…
Reference in new issue