@@ -53,4 +53,44 @@ contract RecordTest is DSTest {
53
53
assertEq (innerWrites.length , 1 , "number of nested writes is incorrect " );
54
54
assertEq (innerWrites[0 ], bytes32 (uint256 (2 )), "key for nested write is incorrect " );
55
55
}
56
+
57
+ function testStopRecordAccess () public {
58
+ RecordAccess target = new RecordAccess ();
59
+
60
+ // Start recording
61
+ vm.record ();
62
+ NestedRecordAccess inner = target.record ();
63
+
64
+ // Verify Records
65
+ (bytes32 [] memory reads , bytes32 [] memory writes ) = vm.accesses (address (target));
66
+
67
+ assertEq (reads.length , 2 , "number of reads is incorrect " );
68
+ assertEq (reads[0 ], bytes32 (uint256 (1 )), "key for read 0 is incorrect " );
69
+ assertEq (reads[1 ], bytes32 (uint256 (1 )), "key for read 1 is incorrect " );
70
+
71
+ assertEq (writes.length , 1 , "number of writes is incorrect " );
72
+ assertEq (writes[0 ], bytes32 (uint256 (1 )), "key for write is incorrect " );
73
+
74
+ vm.stopRecord ();
75
+ inner = target.record ();
76
+
77
+ // Verify that there are no new Records
78
+ (reads, writes) = vm.accesses (address (target));
79
+
80
+ assertEq (reads.length , 2 , "number of reads is incorrect " );
81
+ assertEq (reads[0 ], bytes32 (uint256 (1 )), "key for read 0 is incorrect " );
82
+ assertEq (reads[1 ], bytes32 (uint256 (1 )), "key for read 1 is incorrect " );
83
+
84
+ assertEq (writes.length , 1 , "number of writes is incorrect " );
85
+ assertEq (writes[0 ], bytes32 (uint256 (1 )), "key for write is incorrect " );
86
+
87
+ vm.record ();
88
+ vm.stopRecord ();
89
+
90
+ // verify reset all records
91
+ (reads, writes) = vm.accesses (address (target));
92
+
93
+ assertEq (reads.length , 0 , "number of reads is incorrect " );
94
+ assertEq (writes.length , 0 , "number of writes is incorrect " );
95
+ }
56
96
}
0 commit comments