public void TestStore() { var a = new Persistent<string>("one"); a.Store(); a.Value = "two"; a.Undo(); Assert.True(a.Value == "one"); a.Redo(); Assert.True(a.Value == "two"); }
public void TestLoaded() { var a = new LoadedTestObject(); Assert.True(a.Loaded); var persistent = new Persistent<LoadedTestObject>(a); var b = new LoadedTestObject(); persistent.Store(); Assert.True(a.Loaded); persistent.Value = b; persistent.Store(); Assert.False(a.Loaded); Assert.True(b.Loaded); var c = new LoadedTestObject(); persistent.Value = c; persistent.Store(); // previous:c, current:c Assert.False(a.Loaded); Assert.False(b.Loaded); persistent.Undo(); // previous:b, current:c, next:c persistent.Undo(); // previous:a, current:b, next:c Assert.True(persistent.Value == b); Assert.False(a.Loaded); Assert.True(b.Loaded); Assert.False(c.Loaded); persistent.Undo(); // current:a, next:b Assert.True(a.Loaded); Assert.False(b.Loaded); Assert.False(c.Loaded); persistent.Redo(); // previous:a, current:b, next:c persistent.Redo(); // previous:b, current:c, next:c Assert.False(a.Loaded); Assert.False(b.Loaded); Assert.True(c.Loaded); persistent.Redo(); // previous:c, current:c Assert.False(a.Loaded); Assert.False(b.Loaded); Assert.True(c.Loaded); }