| 255 | } |
| 256 | |
| 257 | func compareStateObjects(so0, so1 *stateObject, t *testing.T) { |
| 258 | if so0.Address() != so1.Address() { |
| 259 | t.Fatalf("Address mismatch: have %v, want %v", so0.address, so1.address) |
| 260 | } |
| 261 | if so0.Balance().Cmp(so1.Balance()) != 0 { |
| 262 | t.Fatalf("Balance mismatch: have %v, want %v", so0.Balance(), so1.Balance()) |
| 263 | } |
| 264 | if so0.Nonce() != so1.Nonce() { |
| 265 | t.Fatalf("Nonce mismatch: have %v, want %v", so0.Nonce(), so1.Nonce()) |
| 266 | } |
| 267 | if so0.data.Root != so1.data.Root { |
| 268 | t.Errorf("Root mismatch: have %x, want %x", so0.data.Root[:], so1.data.Root[:]) |
| 269 | } |
| 270 | if !bytes.Equal(so0.CodeHash(), so1.CodeHash()) { |
| 271 | t.Fatalf("CodeHash mismatch: have %v, want %v", so0.CodeHash(), so1.CodeHash()) |
| 272 | } |
| 273 | if !bytes.Equal(so0.code, so1.code) { |
| 274 | t.Fatalf("Code mismatch: have %v, want %v", so0.code, so1.code) |
| 275 | } |
| 276 | |
| 277 | if len(so1.dirtyStorage) != len(so0.dirtyStorage) { |
| 278 | t.Errorf("Dirty storage size mismatch: have %d, want %d", len(so1.dirtyStorage), len(so0.dirtyStorage)) |
| 279 | } |
| 280 | for k, v := range so1.dirtyStorage { |
| 281 | if so0.dirtyStorage[k] != v { |
| 282 | t.Errorf("Dirty storage key %x mismatch: have %v, want %v", k, so0.dirtyStorage[k], v) |
| 283 | } |
| 284 | } |
| 285 | for k, v := range so0.dirtyStorage { |
| 286 | if so1.dirtyStorage[k] != v { |
| 287 | t.Errorf("Dirty storage key %x mismatch: have %v, want none.", k, v) |
| 288 | } |
| 289 | } |
| 290 | if len(so1.originStorage) != len(so0.originStorage) { |
| 291 | t.Errorf("Origin storage size mismatch: have %d, want %d", len(so1.originStorage), len(so0.originStorage)) |
| 292 | } |
| 293 | for k, v := range so1.originStorage { |
| 294 | if so0.originStorage[k] != v { |
| 295 | t.Errorf("Origin storage key %x mismatch: have %v, want %v", k, so0.originStorage[k], v) |
| 296 | } |
| 297 | } |
| 298 | for k, v := range so0.originStorage { |
| 299 | if so1.originStorage[k] != v { |
| 300 | t.Errorf("Origin storage key %x mismatch: have %v, want none.", k, v) |
| 301 | } |
| 302 | } |
| 303 | } |