aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTaylor Gerring <taylor.gerring@gmail.com>2015-06-11 00:04:56 +0800
committerTaylor Gerring <taylor.gerring@gmail.com>2015-06-19 04:13:42 +0800
commita67a15528aa5da902a17d49f5dad19db3975032a (patch)
treea3239cf5230a0481e85358a43c8e2eaa592f7de1
parent7b9fbb088a74de746dc3f0aa76dbbc8985c2b12c (diff)
downloadgo-tangerine-a67a15528aa5da902a17d49f5dad19db3975032a.tar.gz
go-tangerine-a67a15528aa5da902a17d49f5dad19db3975032a.tar.zst
go-tangerine-a67a15528aa5da902a17d49f5dad19db3975032a.zip
Split tests from helper code
-rw-r--r--tests/block_test.go69
-rw-r--r--tests/block_test_util.go66
-rw-r--r--tests/state_test.go96
-rw-r--r--tests/vm_test.go311
-rw-r--r--tests/vm_test_util.go (renamed from tests/vm.go)183
5 files changed, 170 insertions, 555 deletions
diff --git a/tests/block_test.go b/tests/block_test.go
index d5136efce..c017b746e 100644
--- a/tests/block_test.go
+++ b/tests/block_test.go
@@ -1,14 +1,7 @@
package tests
import (
- "path/filepath"
"testing"
-
- "github.com/ethereum/go-ethereum/accounts"
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/crypto"
- "github.com/ethereum/go-ethereum/eth"
- "github.com/ethereum/go-ethereum/ethdb"
)
// TODO: refactor test setup & execution to better align with vm and tx tests
@@ -50,65 +43,3 @@ func TestBcTotalDifficulty(t *testing.T) {
func TestBcWallet(t *testing.T) {
runBlockTestsInFile("files/BlockTests/bcWalletTest.json", []string{}, t)
}
-
-func runBlockTestsInFile(filepath string, snafus []string, t *testing.T) {
- bt, err := LoadBlockTests(filepath)
- if err != nil {
- t.Fatal(err)
- }
-
- notWorking := make(map[string]bool, 100)
- for _, name := range snafus {
- notWorking[name] = true
- }
-
- for name, test := range bt {
- if !notWorking[name] {
- runBlockTest(name, test, t)
- }
- }
-}
-
-func runBlockTest(name string, test *BlockTest, t *testing.T) {
- cfg := testEthConfig()
- ethereum, err := eth.New(cfg)
- if err != nil {
- t.Fatalf("%v", err)
- }
-
- err = ethereum.Start()
- if err != nil {
- t.Fatalf("%v", err)
- }
-
- // import the genesis block
- ethereum.ResetWithGenesisBlock(test.Genesis)
-
- // import pre accounts
- statedb, err := test.InsertPreState(ethereum)
- if err != nil {
- t.Fatalf("InsertPreState: %v", err)
- }
-
- err = test.TryBlocksInsert(ethereum.ChainManager())
- if err != nil {
- t.Fatal(err)
- }
-
- if err = test.ValidatePostState(statedb); err != nil {
- t.Fatal("post state validation failed: %v", err)
- }
- t.Log("Test passed: ", name)
-}
-
-func testEthConfig() *eth.Config {
- ks := crypto.NewKeyStorePassphrase(filepath.Join(common.DefaultDataDir(), "keystore"))
-
- return &eth.Config{
- DataDir: common.DefaultDataDir(),
- Verbosity: 5,
- Etherbase: "primary",
- AccountManager: accounts.NewManager(ks),
- NewDB: func(path string) (common.Database, error) { return ethdb.NewMemDatabase() },
- }
-}
diff --git a/tests/block_test_util.go b/tests/block_test_util.go
index 200fcbd59..224c14283 100644
--- a/tests/block_test_util.go
+++ b/tests/block_test_util.go
@@ -7,17 +7,21 @@ import (
"fmt"
"io/ioutil"
"math/big"
+ "path/filepath"
"runtime"
"strconv"
"strings"
+ "testing"
"time"
+ "github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/eth"
+ "github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/rlp"
)
@@ -83,6 +87,68 @@ type btTransaction struct {
Value string
}
+func runBlockTestsInFile(filepath string, snafus []string, t *testing.T) {
+ bt, err := LoadBlockTests(filepath)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ notWorking := make(map[string]bool, 100)
+ for _, name := range snafus {
+ notWorking[name] = true
+ }
+
+ for name, test := range bt {
+ if !notWorking[name] {
+ runBlockTest(name, test, t)
+ }
+ }
+}
+
+func runBlockTest(name string, test *BlockTest, t *testing.T) {
+ cfg := testEthConfig()
+ ethereum, err := eth.New(cfg)
+ if err != nil {
+ t.Fatalf("%v", err)
+ }
+
+ err = ethereum.Start()
+ if err != nil {
+ t.Fatalf("%v", err)
+ }
+
+ // import the genesis block
+ ethereum.ResetWithGenesisBlock(test.Genesis)
+
+ // import pre accounts
+ statedb, err := test.InsertPreState(ethereum)
+ if err != nil {
+ t.Fatalf("InsertPreState: %v", err)
+ }
+
+ err = test.TryBlocksInsert(ethereum.ChainManager())
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if err = test.ValidatePostState(statedb); err != nil {
+ t.Fatal("post state validation failed: %v", err)
+ }
+ t.Log("Test passed: ", name)
+}
+
+func testEthConfig() *eth.Config {
+ ks := crypto.NewKeyStorePassphrase(filepath.Join(common.DefaultDataDir(), "keystore"))
+
+ return &eth.Config{
+ DataDir: common.DefaultDataDir(),
+ Verbosity: 5,
+ Etherbase: "primary",
+ AccountManager: accounts.NewManager(ks),
+ NewDB: func(path string) (common.Database, error) { return ethdb.NewMemDatabase() },
+ }
+}
+
// LoadBlockTests loads a block test JSON file.
func LoadBlockTests(file string) (map[string]*BlockTest, error) {
bt := make(map[string]*btJSON)
diff --git a/tests/state_test.go b/tests/state_test.go
new file mode 100644
index 000000000..5e7be124b
--- /dev/null
+++ b/tests/state_test.go
@@ -0,0 +1,96 @@
+package tests
+
+import "testing"
+
+func TestStateSystemOperations(t *testing.T) {
+ const fn = "../files/StateTests/stSystemOperationsTest.json"
+ RunVmTest(fn, t)
+}
+
+func TestStateExample(t *testing.T) {
+ const fn = "../files/StateTests/stExample.json"
+ RunVmTest(fn, t)
+}
+
+func TestStatePreCompiledContracts(t *testing.T) {
+ const fn = "../files/StateTests/stPreCompiledContracts.json"
+ RunVmTest(fn, t)
+}
+
+func TestStateRecursiveCreate(t *testing.T) {
+ const fn = "../files/StateTests/stRecursiveCreate.json"
+ RunVmTest(fn, t)
+}
+
+func TestStateSpecial(t *testing.T) {
+ const fn = "../files/StateTests/stSpecialTest.json"
+ RunVmTest(fn, t)
+}
+
+func TestStateRefund(t *testing.T) {
+ const fn = "../files/StateTests/stRefundTest.json"
+ RunVmTest(fn, t)
+}
+
+func TestStateBlockHash(t *testing.T) {
+ const fn = "../files/StateTests/stBlockHashTest.json"
+ RunVmTest(fn, t)
+}
+
+func TestStateInitCode(t *testing.T) {
+ const fn = "../files/StateTests/stInitCodeTest.json"
+ RunVmTest(fn, t)
+}
+
+func TestStateLog(t *testing.T) {
+ const fn = "../files/StateTests/stLogTests.json"
+ RunVmTest(fn, t)
+}
+
+func TestStateTransaction(t *testing.T) {
+ const fn = "../files/StateTests/stTransactionTest.json"
+ RunVmTest(fn, t)
+}
+
+func TestCallCreateCallCode(t *testing.T) {
+ const fn = "../files/StateTests/stCallCreateCallCodeTest.json"
+ RunVmTest(fn, t)
+}
+
+func TestMemory(t *testing.T) {
+ const fn = "../files/StateTests/stMemoryTest.json"
+ RunVmTest(fn, t)
+}
+
+func TestMemoryStress(t *testing.T) {
+ if os.Getenv("TEST_VM_COMPLEX") == "" {
+ t.Skip()
+ }
+ const fn = "../files/StateTests/stMemoryStressTest.json"
+ RunVmTest(fn, t)
+}
+
+func TestQuadraticComplexity(t *testing.T) {
+ if os.Getenv("TEST_VM_COMPLEX") == "" {
+ t.Skip()
+ }
+ const fn = "../files/StateTests/stQuadraticComplexityTest.json"
+ RunVmTest(fn, t)
+}
+
+func TestSolidity(t *testing.T) {
+ const fn = "../files/StateTests/stSolidityTest.json"
+ RunVmTest(fn, t)
+}
+
+func TestWallet(t *testing.T) {
+ const fn = "../files/StateTests/stWalletTest.json"
+ RunVmTest(fn, t)
+}
+
+func TestStateTestsRandom(t *testing.T) {
+ fns, _ := filepath.Glob("../files/StateTests/RandomTests/*")
+ for _, fn := range fns {
+ RunVmTest(fn, t)
+ }
+}
diff --git a/tests/vm_test.go b/tests/vm_test.go
index 2f76084d0..b42f83df8 100644
--- a/tests/vm_test.go
+++ b/tests/vm_test.go
@@ -1,225 +1,9 @@
-package vm
+package tests
import (
- "bytes"
- "math/big"
- "os"
- "path/filepath"
- "strconv"
"testing"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/core/state"
- "github.com/ethereum/go-ethereum/core/types"
- "github.com/ethereum/go-ethereum/ethdb"
- "github.com/ethereum/go-ethereum/logger"
- "github.com/ethereum/go-ethereum/tests/helper"
)
-type Account struct {
- Balance string
- Code string
- Nonce string
- Storage map[string]string
-}
-
-type Log struct {
- AddressF string `json:"address"`
- DataF string `json:"data"`
- TopicsF []string `json:"topics"`
- BloomF string `json:"bloom"`
-}
-
-func (self Log) Address() []byte { return common.Hex2Bytes(self.AddressF) }
-func (self Log) Data() []byte { return common.Hex2Bytes(self.DataF) }
-func (self Log) RlpData() interface{} { return nil }
-func (self Log) Topics() [][]byte {
- t := make([][]byte, len(self.TopicsF))
- for i, topic := range self.TopicsF {
- t[i] = common.Hex2Bytes(topic)
- }
- return t
-}
-
-func StateObjectFromAccount(db common.Database, addr string, account Account) *state.StateObject {
- obj := state.NewStateObject(common.HexToAddress(addr), db)
- obj.SetBalance(common.Big(account.Balance))
-
- if common.IsHex(account.Code) {
- account.Code = account.Code[2:]
- }
- obj.SetCode(common.Hex2Bytes(account.Code))
- obj.SetNonce(common.Big(account.Nonce).Uint64())
-
- return obj
-}
-
-type Env struct {
- CurrentCoinbase string
- CurrentDifficulty string
- CurrentGasLimit string
- CurrentNumber string
- CurrentTimestamp interface{}
- PreviousHash string
-}
-
-type VmTest struct {
- Callcreates interface{}
- //Env map[string]string
- Env Env
- Exec map[string]string
- Transaction map[string]string
- Logs []Log
- Gas string
- Out string
- Post map[string]Account
- Pre map[string]Account
- PostStateRoot string
-}
-
-func RunVmTest(p string, t *testing.T) {
-
- tests := make(map[string]VmTest)
- helper.CreateFileTests(t, p, &tests)
-
- for name, test := range tests {
- /*
- vm.Debug = true
- glog.SetV(4)
- glog.SetToStderr(true)
- if name != "Call50000_sha256" {
- continue
- }
- */
- db, _ := ethdb.NewMemDatabase()
- statedb := state.New(common.Hash{}, db)
- for addr, account := range test.Pre {
- obj := StateObjectFromAccount(db, addr, account)
- statedb.SetStateObject(obj)
- for a, v := range account.Storage {
- obj.SetState(common.HexToHash(a), common.NewValue(helper.FromHex(v)))
- }
- }
-
- // XXX Yeah, yeah...
- env := make(map[string]string)
- env["currentCoinbase"] = test.Env.CurrentCoinbase
- env["currentDifficulty"] = test.Env.CurrentDifficulty
- env["currentGasLimit"] = test.Env.CurrentGasLimit
- env["currentNumber"] = test.Env.CurrentNumber
- env["previousHash"] = test.Env.PreviousHash
- if n, ok := test.Env.CurrentTimestamp.(float64); ok {
- env["currentTimestamp"] = strconv.Itoa(int(n))
- } else {
- env["currentTimestamp"] = test.Env.CurrentTimestamp.(string)
- }
-
- var (
- ret []byte
- gas *big.Int
- err error
- logs state.Logs
- )
-
- isVmTest := len(test.Exec) > 0
- if isVmTest {
- ret, logs, gas, err = helper.RunVm(statedb, env, test.Exec)
- } else {
- ret, logs, gas, err = helper.RunState(statedb, env, test.Transaction)
- }
-
- switch name {
- // the memory required for these tests (4294967297 bytes) would take too much time.
- // on 19 May 2015 decided to skip these tests their output.
- case "mload32bitBound_return", "mload32bitBound_return2":
- default:
- 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)
- }
- }
-
- if isVmTest {
- if len(test.Gas) == 0 && err == nil {
- t.Errorf("%s's gas unspecified, indicating an error. VM returned (incorrectly) successfull", name)
- } else {
- gexp := common.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 := statedb.GetStateObject(common.HexToAddress(addr))
- if obj == nil {
- continue
- }
-
- if len(test.Exec) == 0 {
- if obj.Balance().Cmp(common.Big(account.Balance)) != 0 {
- t.Errorf("%s's : (%x) balance failed. Expected %v, got %v => %v\n", name, obj.Address().Bytes()[:4], account.Balance, obj.Balance(), new(big.Int).Sub(common.Big(account.Balance), obj.Balance()))
- }
-
- if obj.Nonce() != common.String2Big(account.Nonce).Uint64() {
- t.Errorf("%s's : (%x) nonce failed. Expected %v, got %v\n", name, obj.Address().Bytes()[:4], account.Nonce, obj.Nonce())
- }
-
- }
-
- for addr, value := range account.Storage {
- v := obj.GetState(common.HexToHash(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().Bytes()[0:4], addr, vexp, v, common.BigD(vexp), common.BigD(v))
- }
- }
- }
-
- if !isVmTest {
- statedb.Sync()
- //if !bytes.Equal(common.Hex2Bytes(test.PostStateRoot), statedb.Root()) {
- if common.HexToHash(test.PostStateRoot) != statedb.Root() {
- t.Errorf("%s's : Post state root error. Expected %s, got %x", name, test.PostStateRoot, statedb.Root())
- }
- }
-
- if len(test.Logs) > 0 {
- if len(test.Logs) != len(logs) {
- t.Errorf("log length mismatch. Expected %d, got %d", len(test.Logs), len(logs))
- } else {
- for i, log := range test.Logs {
- if common.HexToAddress(log.AddressF) != logs[i].Address {
- t.Errorf("'%s' log address expected %v got %x", name, log.AddressF, logs[i].Address)
- }
-
- if !bytes.Equal(logs[i].Data, helper.FromHex(log.DataF)) {
- t.Errorf("'%s' log data expected %v got %x", name, log.DataF, logs[i].Data)
- }
-
- if len(log.TopicsF) != len(logs[i].Topics) {
- t.Errorf("'%s' log topics length expected %d got %d", name, len(log.TopicsF), logs[i].Topics)
- } else {
- for j, topic := range log.TopicsF {
- if common.HexToHash(topic) != logs[i].Topics[j] {
- t.Errorf("'%s' log topic[%d] expected %v got %x", name, j, topic, logs[i].Topics[j])
- }
- }
- }
- genBloom := common.LeftPadBytes(types.LogsBloom(state.Logs{logs[i]}).Bytes(), 256)
-
- if !bytes.Equal(genBloom, common.Hex2Bytes(log.BloomF)) {
- t.Errorf("'%s' bloom mismatch", name)
- }
- }
- }
- }
- //fmt.Println(string(statedb.Dump()))
- }
- logger.Flush()
-}
-
// 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) {
const fn = "../files/VMTests/vmArithmeticTest.json"
@@ -286,99 +70,6 @@ func TestInputLimitsLight(t *testing.T) {
RunVmTest(fn, t)
}
-func TestStateSystemOperations(t *testing.T) {
- const fn = "../files/StateTests/stSystemOperationsTest.json"
- RunVmTest(fn, t)
-}
-
-func TestStateExample(t *testing.T) {
- const fn = "../files/StateTests/stExample.json"
- RunVmTest(fn, t)
-}
-
-func TestStatePreCompiledContracts(t *testing.T) {
- const fn = "../files/StateTests/stPreCompiledContracts.json"
- RunVmTest(fn, t)
-}
-
-func TestStateRecursiveCreate(t *testing.T) {
- const fn = "../files/StateTests/stRecursiveCreate.json"
- RunVmTest(fn, t)
-}
-
-func TestStateSpecial(t *testing.T) {
- const fn = "../files/StateTests/stSpecialTest.json"
- RunVmTest(fn, t)
-}
-
-func TestStateRefund(t *testing.T) {
- const fn = "../files/StateTests/stRefundTest.json"
- RunVmTest(fn, t)
-}
-
-func TestStateBlockHash(t *testing.T) {
- const fn = "../files/StateTests/stBlockHashTest.json"
- RunVmTest(fn, t)
-}
-
-func TestStateInitCode(t *testing.T) {
- const fn = "../files/StateTests/stInitCodeTest.json"
- RunVmTest(fn, t)
-}
-
-func TestStateLog(t *testing.T) {
- const fn = "../files/StateTests/stLogTests.json"
- RunVmTest(fn, t)
-}
-
-func TestStateTransaction(t *testing.T) {
- const fn = "../files/StateTests/stTransactionTest.json"
- RunVmTest(fn, t)
-}
-
-func TestCallCreateCallCode(t *testing.T) {
- const fn = "../files/StateTests/stCallCreateCallCodeTest.json"
- RunVmTest(fn, t)
-}
-
-func TestMemory(t *testing.T) {
- const fn = "../files/StateTests/stMemoryTest.json"
- RunVmTest(fn, t)
-}
-
-func TestMemoryStress(t *testing.T) {
- if os.Getenv("TEST_VM_COMPLEX") == "" {
- t.Skip()
- }
- const fn = "../files/StateTests/stMemoryStressTest.json"
- RunVmTest(fn, t)
-}
-
-func TestQuadraticComplexity(t *testing.T) {
- if os.Getenv("TEST_VM_COMPLEX") == "" {
- t.Skip()
- }
- const fn = "../files/StateTests/stQuadraticComplexityTest.json"
- RunVmTest(fn, t)
-}
-
-func TestSolidity(t *testing.T) {
- const fn = "../files/StateTests/stSolidityTest.json"
- RunVmTest(fn, t)
-}
-
-func TestWallet(t *testing.T) {
- const fn = "../files/StateTests/stWalletTest.json"
- RunVmTest(fn, t)
-}
-
-func TestStateTestsRandom(t *testing.T) {
- fns, _ := filepath.Glob("../files/StateTests/RandomTests/*")
- for _, fn := range fns {
- RunVmTest(fn, t)
- }
-}
-
func TestVMRandom(t *testing.T) {
fns, _ := filepath.Glob("../files/VMTests/RandomTests/*")
for _, fn := range fns {
diff --git a/tests/vm.go b/tests/vm_test_util.go
index be9e89d9c..f91070736 100644
--- a/tests/vm.go
+++ b/tests/vm_test_util.go
@@ -1,10 +1,8 @@
-package vm
+package tests
import (
"bytes"
"math/big"
- "os"
- "path/filepath"
"strconv"
"testing"
@@ -84,12 +82,12 @@ func RunVmTest(p string, t *testing.T) {
for name, test := range tests {
/*
- vm.Debug = true
- glog.SetV(4)
- glog.SetToStderr(true)
- if name != "Call50000_sha256" {
- continue
- }
+ vm.Debug = true
+ glog.SetV(4)
+ glog.SetToStderr(true)
+ if name != "Call50000_sha256" {
+ continue
+ }
*/
db, _ := ethdb.NewMemDatabase()
statedb := state.New(common.Hash{}, db)
@@ -219,170 +217,3 @@ func RunVmTest(p string, t *testing.T) {
}
logger.Flush()
}
-
-// 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) {
- const fn = "../files/VMTests/vmArithmeticTest.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) {
- const fn = "../files/VMTests/vmIOandFlowOperationsTest.json"
- RunVmTest(fn, t)
-}
-
-func TestLogTest(t *testing.T) {
- const fn = "../files/VMTests/vmLogTest.json"
- RunVmTest(fn, t)
-}
-
-func TestPerformance(t *testing.T) {
- const fn = "../files/VMTests/vmPerformanceTest.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)
-}
-
-func TestVmLog(t *testing.T) {
- const fn = "../files/VMTests/vmLogTest.json"
- RunVmTest(fn, t)
-}
-
-func TestInputLimits(t *testing.T) {
- const fn = "../files/VMTests/vmInputLimits.json"
- RunVmTest(fn, t)
-}
-
-func TestInputLimitsLight(t *testing.T) {
- const fn = "../files/VMTests/vmInputLimitsLight.json"
- RunVmTest(fn, t)
-}
-
-func TestStateSystemOperations(t *testing.T) {
- const fn = "../files/StateTests/stSystemOperationsTest.json"
- RunVmTest(fn, t)
-}
-
-func TestStateExample(t *testing.T) {
- const fn = "../files/StateTests/stExample.json"
- RunVmTest(fn, t)
-}
-
-func TestStatePreCompiledContracts(t *testing.T) {
- const fn = "../files/StateTests/stPreCompiledContracts.json"
- RunVmTest(fn, t)
-}
-
-func TestStateRecursiveCreate(t *testing.T) {
- const fn = "../files/StateTests/stRecursiveCreate.json"
- RunVmTest(fn, t)
-}
-
-func TestStateSpecial(t *testing.T) {
- const fn = "../files/StateTests/stSpecialTest.json"
- RunVmTest(fn, t)
-}
-
-func TestStateRefund(t *testing.T) {
- const fn = "../files/StateTests/stRefundTest.json"
- RunVmTest(fn, t)
-}
-
-func TestStateBlockHash(t *testing.T) {
- const fn = "../files/StateTests/stBlockHashTest.json"
- RunVmTest(fn, t)
-}
-
-func TestStateInitCode(t *testing.T) {
- const fn = "../files/StateTests/stInitCodeTest.json"
- RunVmTest(fn, t)
-}
-
-func TestStateLog(t *testing.T) {
- const fn = "../files/StateTests/stLogTests.json"
- RunVmTest(fn, t)
-}
-
-func TestStateTransaction(t *testing.T) {
- const fn = "../files/StateTests/stTransactionTest.json"
- RunVmTest(fn, t)
-}
-
-func TestCallCreateCallCode(t *testing.T) {
- const fn = "../files/StateTests/stCallCreateCallCodeTest.json"
- RunVmTest(fn, t)
-}
-
-func TestMemory(t *testing.T) {
- const fn = "../files/StateTests/stMemoryTest.json"
- RunVmTest(fn, t)
-}
-
-func TestMemoryStress(t *testing.T) {
- if os.Getenv("TEST_VM_COMPLEX") == "" {
- t.Skip()
- }
- const fn = "../files/StateTests/stMemoryStressTest.json"
- RunVmTest(fn, t)
-}
-
-func TestQuadraticComplexity(t *testing.T) {
- if os.Getenv("TEST_VM_COMPLEX") == "" {
- t.Skip()
- }
- const fn = "../files/StateTests/stQuadraticComplexityTest.json"
- RunVmTest(fn, t)
-}
-
-func TestSolidity(t *testing.T) {
- const fn = "../files/StateTests/stSolidityTest.json"
- RunVmTest(fn, t)
-}
-
-func TestWallet(t *testing.T) {
- const fn = "../files/StateTests/stWalletTest.json"
- RunVmTest(fn, t)
-}
-
-func TestStateTestsRandom(t *testing.T) {
- fns, _ := filepath.Glob("../files/StateTests/RandomTests/*")
- for _, fn := range fns {
- RunVmTest(fn, t)
- }
-}
-
-func TestVMRandom(t *testing.T) {
- t.Skip() // fucked as of 2015-06-09. unskip once unfucked /Gustav
- fns, _ := filepath.Glob("../files/VMTests/RandomTests/*")
- for _, fn := range fns {
- RunVmTest(fn, t)
- }
-}
00 Check for gal 0.5.99.2.' href='/~lantw44/cgit/gsoc2013-evolution/commit/ChangeLog?h=EVOLUTION_2_7_3&id=9697170096ee30126bae1304eedab63c77103705'>9697170096
aa63ffecba



1be84b82e4



d10c848b43



a74d594e2f





5d06ca56b2




ac9abd5e60







c6ce44bf65




ffaad625fc



d85e3c9278



e67bc5fb8c



cb2a6b81eb



5df96e40dc



64a9d9a168



a2cd79db6d



0c6b184aaa



b8947bc217




2025fe8849









376fb318fe




2c0ceb6859




22ab36ee52



77ba539903

57f1c74f30



6ede85cff3




77ba539903

95956d2f82



8df4861009




3532a74349



01b7106116






e3297a5f71



50d9c8a8e8




3a51f7793e







d9287d3d32



af465f8d67




e202430d41



3788339437
6ce67b8def




3788339437







41a9a74be4




84d7968512



aee2e69158









06792e484d

f86c60c191



06792e484d

75c4fd98b6



a6dd190c21



22fecd089c




622c16f370





dcc6d74afe




4292bd7e85



e6e6a76a4e



d760764af8



0419c2b3c7

a6dd190c21

0419c2b3c7
03f33b9c90



a09b678766




20540b0ae2

8c843d7987





20540b0ae2


51cbc0b68b



0ab8215605



d014b4f8e9



825c833f54




d46c9da28d



569766ff21



9d8e2d6504




ea45ef4233



c847cac2be



07abeb8b27



58b924bf6e



4008cef734



fb9047c159




8204428e19
fb9047c159
a547f501cb






cda143465f



f02e5c1f65




6b07a364e2






e365109fdc





f306b8b912



d5ca27ea56

7a6e3e892c





d5ca27ea56



a7e18523ff







0c0ae216ec




ba93ec63f5





d502638fd6








a53ac3867b



b110ff5019




2ad0db845a



8a083fc37e



f521595158





7bf26ac21b




2823dc8b87





8c74384475



5e1e361ea6



a4985006cd

fa3cf53363














a4985006cd

41fcf25f7c



d5f2d8d13b



8f267d0eb4



2039485191





faed5f42e4







af5fc4f982



7305f431fc



2da3ba3890



4e2a4d752d

85f620848b




4e2a4d752d

329fe7df32






f3533f595d




e7cb4ceabe





f020f43089






56fb26b2ea



5758303474



fdeef7a7fb



c04a8d1e38



e8810dfc5d




6c03655cb7



eb33178c5c



b2e8db035a



5ef9ff4315



d52099b992




6abc02d6b9






08169776b3



9c6aafaf72







26df339fb8








f6471e8c37




525adf507d






ad08b9bda3




6c4d416804

3e77ddc856



6c4d416804



e6bf297b0c

87d8750ba0




3d4012f543





e6bf297b0c



4f317410eb








b2019f3409

34766a085c





b2019f3409






08a52d10bc

99575765f4

08a52d10bc

8b2ca26789



156d6d644e

86b7449d9e



156d6d644e




a365b1dba2




e0e2f5c660







122b2426db



db2e7437df

122b2426db
db2e7437df

37d47c916d




72a1dea7c1





9964204c9c



5678a57e33





b5abfd5a63



ea5d5759f5



0e06b64743

7ad81be005




0e06b64743

2cfea1ea91



945b86141c

8a7d38a366

945b86141c

64b4dcdffa




a64ef1cab0









cab460ef82



d435ef1f87




b1927e8b55

a8b070d5ce




b1927e8b55

a8b070d5ce
b1927e8b55
16829497fd






6f731fff4c




699f000495







af8b4b2520





a52e0a601e



ec4ed21ea9



09a9a8cd34



20bf74b050



64342afba2




1e5ae349da

b906c345f9



1e5ae349da


ec66ae0755



823e4b48ee



9943237d5f



72def62a05














c34e4fd812





447ecfb3e8



4f12a10864




c63ea33628




ca572bccbd




bf9f26b773




377513db1f





25fd665550




54cc3f1e45



ade9b9ac4d



e9faa62d2f



7792286802



773c53414b




d294eacd6d






8cb514d6dd







51df4b80b2

089f42f8dd



51df4b80b2



09e1677c54



36109c82b3



e575290495



90bf03fa68



4715c96fb6




fad59bb3a3




4a6e3a0b28



550e441f77



96dfd1f12d




672fb81ed0



cf874e6155




43c1a59230







1f1872ec3c



931953de1f




d97ccb4427



8cb514d6dd




9dfeaac6e4




af439c73e3

93a02f6bf8

af439c73e3



8cb514d6dd




f9eb656383




6af79c887d



28bc90560b

7cc2f0833b




c02069a5f1




d15735bd1b



10c3eb46b1



2fc2feb62e



80206f6b32

14f210e058





80206f6b32






523df261ca







bc9f58d42a




a25600d9b5

d346998ba8



053cdfdbc3








a25600d9b5

4e439cdfc8





85f3b5ebb8





2326c6b794




32b557f7fc




2bacfabf6f




c9974759b3





6f709e4fd7








55499e0ce4





8ba0e76ccb

c216b49da2


8ba0e76ccb
3bedc38a94



9135a5d0e4



37a9065a63
9135a5d0e4


e4de45da5f




e923d2eea9






59e1597cdc




78075bd090








dad705c65c

06f77b4aab



3eed16a6cd


dad705c65c




3eed16a6cd


abd592ea8c




2b8fb337a5




e67721cbd7




4d5d1960b3



da4535cdc2



a18691c17e



7ba831860d





0889a3a50e












e89416bc13



7f36752a67



85ab673689





f03975a652

ecd4fe3af0

f03975a652

10918b623b







4b1d34a6cd



87593b9797

1dd2867a79



87593b9797

343f601b1e



db7feeef33






f6d3bfae53



c5212445ee



29a3e72881





2f59d46595







e04e6e0dc2





af35801677



e90eea58a2

6ba980d9eb




e90eea58a2




e033af05d7















ce9f9a3487



36c4f96edf



a939913af3



68ef3f9f98



8d248f9b8e




aae30f67a2






795956eec8



c3d51050bb




de2b4b9c37




4a2777a279

ff537a5f28



4a2777a279









a588f367b2

95143a12e0



a588f367b2


f150fa0b16




0dabeb5908




9cc5355440



d92547ebaa




35e0a09b15



d8c0b9eff5




fa93049534



1b8139c995
fa93049534
f80ee8128b




1b8139c995


















05229d701c





0992180846



a72e41b108




56fb12bf9d







1f7bdbf9c1








855b85657d






b368aed4dd








0b889518d2




9483369aa0







02ed4a60f3