aboutsummaryrefslogtreecommitdiffstats
path: root/core/state/statedb_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'core/state/statedb_test.go')
-rw-r--r--core/state/statedb_test.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/core/state/statedb_test.go b/core/state/statedb_test.go
index 340c840f1..420ca745c 100644
--- a/core/state/statedb_test.go
+++ b/core/state/statedb_test.go
@@ -422,3 +422,19 @@ func (s *StateSuite) TestTouchDelete(c *check.C) {
c.Fatal("expected no dirty state object")
}
}
+
+// TestCopyOfCopy tests that modified objects are carried over to the copy, and the copy of the copy.
+// See https://github.com/ethereum/go-ethereum/pull/15225#issuecomment-380191512
+func TestCopyOfCopy(t *testing.T) {
+ db, _ := ethdb.NewMemDatabase()
+ sdb, _ := New(common.Hash{}, NewDatabase(db))
+ addr := common.HexToAddress("aaaa")
+ sdb.SetBalance(addr, big.NewInt(42))
+
+ if got := sdb.Copy().GetBalance(addr).Uint64(); got != 42 {
+ t.Fatalf("1st copy fail, expected 42, got %v", got)
+ }
+ if got := sdb.Copy().Copy().GetBalance(addr).Uint64(); got != 42 {
+ t.Fatalf("2nd copy fail, expected 42, got %v", got)
+ }
+}