public void NotClassArray() { FieldCloneArrayModel model = new FieldCloneArrayModel { Name = new string[10] }; for (int i = 0; i < 10; i++) { model.Name[i] = i.ToString(); } SnapshotOperator.MakeSnapshot(model); for (int i = 5; i < 10; i++) { model.Name[i] = (i + 100).ToString(); } var reuslt = SnapshotOperator.Compare(model); var value = (HashSet <string>)reuslt["Name"].Value; int temp = 5; foreach (var item in value) { Assert.Equal(temp.ToString(), item); temp++; } }
public void ClassArray() { FieldCloneClassArrayModel model = new FieldCloneClassArrayModel { Models = new FieldCloneNormalModel[10] }; for (int i = 0; i < 10; i++) { model.Models[i] = new FieldCloneNormalModel() { Age = i, Name = i.ToString() }; } SnapshotOperator.MakeSnapshot(model); for (int i = 5; i < 10; i++) { model.Models[i] = new FieldCloneNormalModel() { Age = i + 100, Name = (i + 100).ToString() }; } var reuslt = SnapshotOperator.Compare(model); var value = (HashSet <FieldCloneNormalModel>)reuslt["Models"].Value; int temp = 5; foreach (var item in value) { Assert.Equal(temp.ToString(), item.Name); Assert.Equal(temp, item.Age); temp++; } }
public void PropSubClassArray() { PropCloneSubNodeModel model = new PropCloneSubNodeModel { Node = new PropCloneNormalModel() { Age = 1, Name = "111" } }; SnapshotOperator.MakeSnapshot(model); model.Node = new PropCloneNormalModel() { Age = 2, Name = "222" }; var result = SnapshotOperator.Compare(model); var value = (Dictionary <string, DiffModel>)(result["Node"].Value); Assert.NotEqual(model.Node.Name, (string)(value["Name"].Value)); Assert.NotEqual(model.Node.Age, (int)(value["Age"].Value)); Assert.Equal("111", (string)(value["Name"].Value)); Assert.Equal(1, (int)(value["Age"].Value)); }
public void Normal() { FieldCloneNormalModel model = new FieldCloneNormalModel { Age = 1000, Name = "ababab", Timer = DateTime.Now, money = 100000, Flag = CloneEnum.A, Title = false, Id = 100000 }; SnapshotOperator.MakeSnapshot(model); model.Age = 1001; model.Name = "hahaha"; model.Flag = CloneEnum.B; model.Title = true; var reuslt = SnapshotOperator.Compare(model); Assert.NotEqual(model.Age, (int)(reuslt["Age"].Value)); Assert.NotEqual(model.Title, (bool)(reuslt["Title"].Value)); Assert.NotEqual(model.Name, (string)(reuslt["Name"].Value)); Assert.NotEqual(model.Flag, (CloneEnum)(reuslt["Flag"].Value)); Assert.Equal(1000, (int)(reuslt["Age"].Value)); Assert.False((bool)(reuslt["Title"].Value)); Assert.Equal("ababab", (string)(reuslt["Name"].Value)); Assert.Equal(CloneEnum.A, (CloneEnum)(reuslt["Flag"].Value)); }
public void PropClassCollectionTest() { PropCloneClassCollectionModel model = new PropCloneClassCollectionModel(); model.Nodes = new List <PropCloneNormalModel>(); for (int i = 0; i < 10; i++) { model.Nodes.Add(new PropCloneNormalModel() { Age = i, Name = i.ToString() }); } SnapshotOperator.MakeSnapshot(model); for (int i = 5; i < 10; i++) { model.Nodes.Add(new PropCloneNormalModel() { Age = i + 100, Name = (i + 100).ToString() }); } var reuslt = SnapshotOperator.Compare(model); var value = (HashSet <PropCloneNormalModel>)reuslt["Nodes"].Value; int temp = 5; foreach (var item in value) { Assert.Equal(temp.ToString(), item.Name); Assert.Equal(temp, item.Age); temp++; } }
public void PropNormal() { var tempDate = DateTime.Now; PropCloneNormalModel model = new PropCloneNormalModel(); model.Age = 1000; model.Name = "ababab"; model.Timer = tempDate; model.money = 100000; model.Title = false; model.Id = 100000; //生成快照 SnapshotOperator.MakeSnapshot(model); //更改model model.Age = 1001; model.Name = "hahaha"; model.Timer = DateTime.Now; model.Title = true; //对比快照 var reuslt = SnapshotOperator.Compare(model); Assert.NotEqual(model.Age, (int)(reuslt["Age"].Value)); Assert.NotEqual(model.Title, (bool)(reuslt["Title"].Value)); Assert.NotEqual(model.Name, (string)(reuslt["Name"].Value)); Assert.NotEqual(model.Timer, (DateTime)(reuslt["Timer"].Value)); Assert.Equal(1000, (int)(reuslt["Age"].Value)); Assert.False((bool)(reuslt["Title"].Value)); Assert.Equal("ababab", (string)(reuslt["Name"].Value)); Assert.Equal(tempDate, (DateTime)(reuslt["Timer"].Value)); }
public static void MakeSnapshot <T>(T needSnapshot) { SnapshotOperator <T> .MakeSnapshot(needSnapshot); }
public static void MakeSnapshot <T>(this T instance) { SnapshotOperator.MakeSnapshot(instance); }