@@ -43,6 +43,7 @@ public void Get_SingleProperty_NoChange()
4343 Assert . AreEqual ( "Alice" , result . OldValue ) ;
4444 Assert . AreEqual ( "Alice" , result . NewValue ) ;
4545 Assert . IsFalse ( result . IsChanged ) ;
46+ Assert . IsFalse ( result . HasShapshot ) ;
4647 }
4748
4849 [ TestMethod ]
@@ -107,20 +108,38 @@ public void SetProperties_BatchSetProperties()
107108 [ TestMethod ]
108109 public void TakeSnapshot_RestoreSnapshot ( )
109110 {
111+ //_person = new Person { Name = "Alice", Age = 30 };
112+
113+ Assert . IsFalse ( _mo . HasChanges ( ) ) ;
114+
110115 _mo . Set ( p => p . Name , "Charlie" ) ;
116+ Console . WriteLine ( _mo . Get ( z => z . Age ) . SnapshotValue ) ;
117+ Assert . IsFalse ( _mo . Get ( z => z . Age ) . HasShapshot ) ;
118+ Assert . IsNull ( _mo . Get ( z => z . Name ) . SnapshotValue ) ;
119+ Assert . AreEqual ( 0 , _mo . Get ( z => z . Age ) . SnapshotValue ) ; //仍然会返回默认值
120+ Assert . IsTrue ( _mo . HasChanges ( ) ) ;
121+
111122 _mo . TakeSnapshot ( ) ;
112123
124+ Assert . IsTrue ( _mo . Get ( z => z . Age ) . HasShapshot ) ;
125+ Assert . AreEqual ( 30 , _mo . Get ( z => z . Age ) . SnapshotValue ) ;
126+
113127 _mo . Set ( p => p . Name , "Dave" ) ;
114128 var resultBeforeRestore = _mo . Get ( p => p . Name ) ;
115- Assert . AreEqual ( "Charlie" , resultBeforeRestore . OldValue ) ;
129+ Assert . AreEqual ( "Alice" , resultBeforeRestore . OldValue ) ;
130+ Assert . AreEqual ( "Charlie" , resultBeforeRestore . SnapshotValue ) ;
116131 Assert . AreEqual ( "Dave" , resultBeforeRestore . NewValue ) ;
117132 Assert . IsTrue ( resultBeforeRestore . IsChanged ) ;
118133
119134 _mo . RestoreSnapshot ( ) ;
135+ Assert . IsTrue ( _mo . Get ( z => z . Age ) . HasShapshot ) ; //快照本身不会被清除
136+
120137 var resultAfterRestore = _mo . Get ( p => p . Name ) ;
121- Assert . AreEqual ( "Charlie" , resultAfterRestore . OldValue ) ;
138+ Assert . AreEqual ( "Alice" , resultAfterRestore . OldValue ) ;
139+ Assert . AreEqual ( "Charlie" , resultBeforeRestore . SnapshotValue ) ;
122140 Assert . AreEqual ( "Charlie" , resultAfterRestore . NewValue ) ;
123- Assert . IsFalse ( resultAfterRestore . IsChanged ) ;
141+ Assert . IsTrue ( resultAfterRestore . IsChanged ) ;
142+ Assert . IsFalse ( _mo . HasChanges ( ) ) ;
124143 }
125144
126145 [ TestMethod ]
0 commit comments