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.go64
1 files changed, 18 insertions, 46 deletions
diff --git a/ethchain/vm_test.go b/ethchain/vm_test.go
index 2ec70536a..520f9a2ed 100644
--- a/ethchain/vm_test.go
+++ b/ethchain/vm_test.go
@@ -1,6 +1,5 @@
package ethchain
-/*
import (
_ "bytes"
"fmt"
@@ -13,60 +12,33 @@ import (
)
func TestRun4(t *testing.T) {
- ethutil.ReadConfig("", ethutil.LogStd)
+ ethutil.ReadConfig("", ethutil.LogStd, "")
db, _ := ethdb.NewMemDatabase()
state := NewState(ethutil.NewTrie(db, ""))
- script, err := mutan.Compile(strings.NewReader(`
- int32 a = 10
- int32 b = 20
- if a > b {
- int32 c = this.caller()
- }
- exit()
- `), false)
- tx := NewContractCreationTx(ethutil.Big("0"), ethutil.Big("1000"), ethutil.Big("100"), script, nil)
- tx.Sign(ContractAddr)
- addr := tx.CreationAddress()
- contract := MakeContract(tx, state)
- state.UpdateStateObject(contract)
- fmt.Printf("%x\n", addr)
-
callerScript, err := mutan.Compile(strings.NewReader(`
- // Check if there's any cash in the initial store
- if this.store[1000] == 0 {
- this.store[1000] = 10**20
- }
-
-
- this.store[1001] = this.value() * 20
- this.store[this.origin()] = this.store[this.origin()] + 1000
+ this.store[this.origin()] = 10**20
+ hello := "world"
- if this.store[1001] > 20 {
- this.store[1001] = 10^50
- }
-
- int8 ret = 0
- int8 arg = 10
- call(0xe6a12555fad1fb6eaaaed69001a87313d1fd7b54, 0, 100, arg, ret)
-
- big t
- for int8 i = 0; i < 10; i++ {
- t = i
- }
+ return lambda {
+ big to = this.data[0]
+ big from = this.origin()
+ big value = this.data[1]
- if 10 > 20 {
- int8 shouldnt = 2
- } else {
- int8 should = 1
+ if this.store[from] >= value {
+ this.store[from] = this.store[from] - value
+ this.store[to] = this.store[to] + value
}
+ }
`), false)
if err != nil {
fmt.Println(err)
}
+ fmt.Println(Disassemble(callerScript))
- callerTx := NewContractCreationTx(ethutil.Big("0"), ethutil.Big("1000"), ethutil.Big("100"), callerScript, nil)
+ callerTx := NewContractCreationTx(ethutil.Big("0"), ethutil.Big("1000"), ethutil.Big("100"), callerScript)
+ callerTx.Sign([]byte("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"))
// Contract addr as test address
gas := big.NewInt(1000)
@@ -79,7 +51,7 @@ func TestRun4(t *testing.T) {
fmt.Println(err)
}
fmt.Println("account.Amount =", account.Amount)
- callerClosure := NewClosure(account, c, c.script, state, gas, gasPrice)
+ callerClosure := NewClosure(account, c, callerScript, state, gas, gasPrice)
vm := NewVm(state, nil, RuntimeVars{
Origin: account.Address(),
@@ -89,10 +61,10 @@ func TestRun4(t *testing.T) {
Time: 1,
Diff: big.NewInt(256),
})
- _, e = callerClosure.Call(vm, nil, nil)
+ var ret []byte
+ ret, e = callerClosure.Call(vm, nil, nil)
if e != nil {
fmt.Println("error", e)
}
- fmt.Println("account.Amount =", account.Amount)
+ fmt.Println(ret)
}
-*/