aboutsummaryrefslogtreecommitdiffstats
path: root/tests/vm/gh_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'tests/vm/gh_test.go')
-rw-r--r--tests/vm/gh_test.go265
1 files changed, 133 insertions, 132 deletions
diff --git a/tests/vm/gh_test.go b/tests/vm/gh_test.go
index 7d98983e7..e25ccb550 100644
--- a/tests/vm/gh_test.go
+++ b/tests/vm/gh_test.go
@@ -1,134 +1,135 @@
package vm
-import (
- "bytes"
- "testing"
-
- "github.com/ethereum/go-ethereum/ethutil"
- "github.com/ethereum/go-ethereum/state"
- "github.com/ethereum/go-ethereum/tests/helper"
-)
-
-type Account struct {
- Balance string
- Code string
- Nonce string
- Storage map[string]string
-}
-
-func StateObjectFromAccount(addr string, account Account) *state.StateObject {
- obj := state.NewStateObject(ethutil.Hex2Bytes(addr))
- obj.SetBalance(ethutil.Big(account.Balance))
-
- if ethutil.IsHex(account.Code) {
- account.Code = account.Code[2:]
- }
- obj.Code = ethutil.Hex2Bytes(account.Code)
- obj.Nonce = ethutil.Big(account.Nonce).Uint64()
-
- return obj
-}
-
-type VmTest struct {
- Callcreates interface{}
- Env map[string]string
- Exec map[string]string
- Gas string
- Out string
- Post map[string]Account
- Pre map[string]Account
-}
-
-func RunVmTest(p string, t *testing.T) {
- tests := make(map[string]VmTest)
- helper.CreateFileTests(t, p, &tests)
-
- for name, test := range tests {
- state := state.New(helper.NewTrie())
- for addr, account := range test.Pre {
- obj := StateObjectFromAccount(addr, account)
- state.SetStateObject(obj)
- }
-
- ret, gas, err := helper.RunVm(state, test.Env, test.Exec)
- // When an error is returned it doesn't always mean the tests fails.
- // Have to come up with some conditional failing mechanism.
- if err != nil {
- helper.Log.Infoln(err)
- }
-
- rexp := helper.FromHex(test.Out)
- 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 {
- 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, value := range account.Storage {
- 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))
- }
- }
- }
- }
-}
-
-// 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) {
- //helper.Logger.SetLogLevel(5)
- const fn = "../files/vmtests/vmArithmeticTest.json"
- RunVmTest(fn, t)
-}
-
-/*
-deleted?
-func TestVMSystemOperation(t *testing.T) {
- helper.Logger.SetLogLevel(5)
- const fn = "../files/vmtests/vmSystemOperationsTest.json"
- RunVmTest(fn, t)
-}
-*/
-
-func TestBitwiseLogicOperation(t *testing.T) {
- const fn = "../files/vmtests/vmBitwiseLogicOperationTest.json"
- RunVmTest(fn, t)
-}
-
-func TestBlockInfo(t *testing.T) {
- const fn = "../files/vmtests/vmBlockInfoTest.json"
- RunVmTest(fn, t)
-}
-
-func TestEnvironmentalInfo(t *testing.T) {
- const fn = "../files/vmtests/vmEnvironmentalInfoTest.json"
- RunVmTest(fn, t)
-}
-
-func TestFlowOperation(t *testing.T) {
- helper.Logger.SetLogLevel(5)
- const fn = "../files/vmtests/vmIOandFlowOperationsTest.json"
- RunVmTest(fn, t)
-}
-
-func TestPushDupSwap(t *testing.T) {
- const fn = "../files/vmtests/vmPushDupSwapTest.json"
- RunVmTest(fn, t)
-}
-
-func TestVMSha3(t *testing.T) {
- const fn = "../files/vmtests/vmSha3Test.json"
- RunVmTest(fn, t)
-}
-
-func TestVm(t *testing.T) {
- const fn = "../files/vmtests/vmtests.json"
- RunVmTest(fn, t)
-}
+// import (
+// "bytes"
+// "testing"
+
+// "github.com/ethereum/go-ethereum/ethutil"
+// "github.com/ethereum/go-ethereum/state"
+// "github.com/ethereum/go-ethereum/tests/helper"
+// )
+
+// type Account struct {
+// Balance string
+// Code string
+// Nonce string
+// Storage map[string]string
+// }
+
+// func StateObjectFromAccount(addr string, account Account) *state.StateObject {
+// obj := state.NewStateObject(ethutil.Hex2Bytes(addr))
+// obj.SetBalance(ethutil.Big(account.Balance))
+
+// if ethutil.IsHex(account.Code) {
+// account.Code = account.Code[2:]
+// }
+// obj.Code = ethutil.Hex2Bytes(account.Code)
+// obj.Nonce = ethutil.Big(account.Nonce).Uint64()
+
+// return obj
+// }
+
+// type VmTest struct {
+// Callcreates interface{}
+// Env map[string]string
+// Exec map[string]string
+// Gas string
+// Out string
+// Post map[string]Account
+// Pre map[string]Account
+// }
+
+// func RunVmTest(p string, t *testing.T) {
+// tests := make(map[string]VmTest)
+// helper.CreateFileTests(t, p, &tests)
+
+// for name, test := range tests {
+// state := state.New(helper.NewTrie())
+// for addr, account := range test.Pre {
+// obj := StateObjectFromAccount(addr, account)
+// state.SetStateObject(obj)
+// }
+
+// ret, gas, err := helper.RunVm(state, test.Env, test.Exec)
+// // When an error is returned it doesn't always mean the tests fails.
+// // Have to come up with some conditional failing mechanism.
+// if err != nil {
+// t.Errorf("%s", err)
+// helper.Log.Infoln(err)
+// }
+
+// rexp := helper.FromHex(test.Out)
+// 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 {
+// 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, value := range account.Storage {
+// 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))
+// }
+// }
+// }
+// }
+// }
+
+// // 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) {
+// //helper.Logger.SetLogLevel(5)
+// const fn = "../files/vmtests/vmArithmeticTest.json"
+// RunVmTest(fn, t)
+// }
+
+// /*
+// deleted?
+// func TestVMSystemOperation(t *testing.T) {
+// helper.Logger.SetLogLevel(5)
+// const fn = "../files/vmtests/vmSystemOperationsTest.json"
+// RunVmTest(fn, t)
+// }
+// */
+
+// func TestBitwiseLogicOperation(t *testing.T) {
+// const fn = "../files/vmtests/vmBitwiseLogicOperationTest.json"
+// RunVmTest(fn, t)
+// }
+
+// func TestBlockInfo(t *testing.T) {
+// const fn = "../files/vmtests/vmBlockInfoTest.json"
+// RunVmTest(fn, t)
+// }
+
+// func TestEnvironmentalInfo(t *testing.T) {
+// const fn = "../files/vmtests/vmEnvironmentalInfoTest.json"
+// RunVmTest(fn, t)
+// }
+
+// func TestFlowOperation(t *testing.T) {
+// helper.Logger.SetLogLevel(5)
+// const fn = "../files/vmtests/vmIOandFlowOperationsTest.json"
+// RunVmTest(fn, t)
+// }
+
+// func TestPushDupSwap(t *testing.T) {
+// const fn = "../files/vmtests/vmPushDupSwapTest.json"
+// RunVmTest(fn, t)
+// }
+
+// func TestVMSha3(t *testing.T) {
+// const fn = "../files/vmtests/vmSha3Test.json"
+// RunVmTest(fn, t)
+// }
+
+// func TestVm(t *testing.T) {
+// const fn = "../files/vmtests/vmtests.json"
+// RunVmTest(fn, t)
+// }