aboutsummaryrefslogtreecommitdiffstats
path: root/ethchain/vm_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'ethchain/vm_test.go')
-rw-r--r--ethchain/vm_test.go56
1 files changed, 56 insertions, 0 deletions
diff --git a/ethchain/vm_test.go b/ethchain/vm_test.go
index 6ceb0ff15..4e72c9249 100644
--- a/ethchain/vm_test.go
+++ b/ethchain/vm_test.go
@@ -8,6 +8,8 @@ import (
"testing"
)
+/*
+
func TestRun(t *testing.T) {
InitFees()
@@ -104,3 +106,57 @@ func TestRun2(t *testing.T) {
txData: tx.Data,
})
}
+*/
+
+// XXX Full stack test
+func TestRun3(t *testing.T) {
+ ethutil.ReadConfig("")
+
+ db, _ := ethdb.NewMemDatabase()
+ state := NewState(ethutil.NewTrie(db, ""))
+
+ script := Compile([]string{
+ "PUSH", "300",
+ "MSTORE",
+ "PUSH", "300",
+ "MSTORE",
+ "PUSH", "62",
+ "PUSH", "0",
+ "RETURN",
+ })
+ tx := NewTransaction(ContractAddr, ethutil.Big("100000000000000000000000000000000000000000000000000"), script)
+ addr := tx.Hash()[12:]
+ fmt.Printf("addr contract %x\n", addr)
+ contract := MakeContract(tx, state)
+ state.UpdateContract(addr, contract)
+
+ callerScript := Compile([]string{
+ "PUSH", "62", // REND
+ "PUSH", "0", // RSTART
+ "PUSH", "22", // MEND
+ "PUSH", "15", // MSTART
+ "PUSH", "1000", /// Gas
+ "PUSH", "0", /// value
+ "PUSH", string(addr), // Sender
+ "CALL",
+ })
+ callerTx := NewTransaction(ContractAddr, ethutil.Big("100000000000000000000000000000000000000000000000000"), callerScript)
+ callerAddr := callerTx.Hash()[12:]
+ executer := NewTransaction(ContractAddr, ethutil.Big("10000"), nil)
+
+ executer.Sign([]byte("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"))
+ callerClosure := NewClosure(executer, MakeContract(callerTx, state), state, big.NewInt(1000000000), new(big.Int))
+
+ vm := &Vm{}
+ vm.RunClosure(callerClosure, state, RuntimeVars{
+ address: callerAddr,
+ blockNumber: 1,
+ sender: ethutil.FromHex("cd1722f3947def4cf144679da39c4c32bdc35681"),
+ prevHash: ethutil.FromHex("5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6"),
+ coinbase: ethutil.FromHex("2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"),
+ time: 1,
+ diff: big.NewInt(256),
+ txValue: big.NewInt(10000),
+ txData: nil,
+ })
+}