updated tests
This commit is contained in:
		
							parent
							
								
									34689cb3f3
								
							
						
					
					
						commit
						750d70c202
					
				| @ -84,4 +84,5 @@ var ( | ||||
| 	BigFalse = Big0 | ||||
| 	Big32    = big.NewInt(32) | ||||
| 	Big256   = big.NewInt(0xff) | ||||
| 	Big257   = big.NewInt(257) | ||||
| ) | ||||
|  | ||||
| @ -15,6 +15,7 @@ type Env struct { | ||||
| 	depth        int | ||||
| 	state        *state.StateDB | ||||
| 	skipTransfer bool | ||||
| 	initial      bool | ||||
| 	Gas          *big.Int | ||||
| 
 | ||||
| 	origin   []byte | ||||
| @ -68,9 +69,17 @@ func (self *Env) Depth() int     { return self.depth } | ||||
| func (self *Env) SetDepth(i int) { self.depth = i } | ||||
| func (self *Env) Transfer(from, to vm.Account, amount *big.Int) error { | ||||
| 	if self.skipTransfer { | ||||
| 		// ugly hack
 | ||||
| 		if self.initial { | ||||
| 			self.initial = false | ||||
| 			return nil | ||||
| 		} | ||||
| 
 | ||||
| 		if from.Balance().Cmp(amount) < 0 { | ||||
| 			return errors.New("Insufficient balance in account") | ||||
| 		} | ||||
| 
 | ||||
| 		return nil | ||||
| 	} | ||||
| 	return vm.Transfer(from, to, amount) | ||||
| } | ||||
| @ -109,10 +118,10 @@ func RunVm(state *state.StateDB, env, exec map[string]string) ([]byte, state.Log | ||||
| 	) | ||||
| 
 | ||||
| 	caller := state.GetOrNewStateObject(from) | ||||
| 	caller.SetBalance(ethutil.Big("1000000000000000000")) | ||||
| 
 | ||||
| 	vmenv := NewEnvFromMap(state, env, exec) | ||||
| 	vmenv.skipTransfer = true | ||||
| 	vmenv.initial = true | ||||
| 	ret, err := vmenv.Call(caller, to, data, gas, price, value) | ||||
| 
 | ||||
| 	return ret, vmenv.logs, vmenv.Gas, err | ||||
|  | ||||
| @ -79,12 +79,6 @@ func RunVmTest(p string, t *testing.T) { | ||||
| 	helper.CreateFileTests(t, p, &tests) | ||||
| 
 | ||||
| 	for name, test := range tests { | ||||
| 		/* | ||||
| 			helper.Logger.SetLogLevel(5) | ||||
| 			if name != "createNameRegistratorZeroMem" { | ||||
| 				continue | ||||
| 			} | ||||
| 		*/ | ||||
| 		db, _ := ethdb.NewMemDatabase() | ||||
| 		statedb := state.New(nil, db) | ||||
| 		for addr, account := range test.Pre { | ||||
|  | ||||
| @ -50,10 +50,6 @@ func (self *DebugVm) Run(me, caller ContextRef, code []byte, value, gas, price * | ||||
| 
 | ||||
| 	vmlogger.Debugf("(%d) (%x) %x (code=%d) gas: %v (d) %x\n", self.env.Depth(), caller.Address()[:4], context.Address(), len(code), context.Gas, callData) | ||||
| 
 | ||||
| 	if p := Precompiled[string(me.Address())]; p != nil { | ||||
| 		return self.RunPrecompiled(p, callData, context) | ||||
| 	} | ||||
| 
 | ||||
| 	if self.Recoverable { | ||||
| 		// Recover from any require exception
 | ||||
| 		defer func() { | ||||
| @ -70,6 +66,10 @@ func (self *DebugVm) Run(me, caller ContextRef, code []byte, value, gas, price * | ||||
| 		}() | ||||
| 	} | ||||
| 
 | ||||
| 	if p := Precompiled[string(me.Address())]; p != nil { | ||||
| 		return self.RunPrecompiled(p, callData, context) | ||||
| 	} | ||||
| 
 | ||||
| 	var ( | ||||
| 		op OpCode | ||||
| 
 | ||||
| @ -513,10 +513,12 @@ func (self *DebugVm) Run(me, caller ContextRef, code []byte, value, gas, price * | ||||
| 			// 0x40 range
 | ||||
| 		case BLOCKHASH: | ||||
| 			num := stack.Pop() | ||||
| 			if num.Cmp(new(big.Int).Sub(self.env.BlockNumber(), ethutil.Big256)) < 0 { | ||||
| 				stack.Push(ethutil.Big0) | ||||
| 			} else { | ||||
| 
 | ||||
| 			n := U256(new(big.Int).Sub(self.env.BlockNumber(), ethutil.Big257)) | ||||
| 			if num.Cmp(n) > 0 && num.Cmp(self.env.BlockNumber()) < 0 { | ||||
| 				stack.Push(ethutil.BigD(self.env.GetHash(num.Uint64()))) | ||||
| 			} else { | ||||
| 				stack.Push(ethutil.Big0) | ||||
| 			} | ||||
| 
 | ||||
| 			self.Printf(" => 0x%x", stack.Peek().Bytes()) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user