private TTrackableContainer CreateTestContainer(bool withTracker) { dynamic container = new TTrackableContainer(); dynamic person = new TTrackablePerson(); container.Person = person; var missions = new TrackableDictionary <int, MissionData>(); container.Missions = missions; var tags = new TrackableList <TagData>(); if (_useList) { container.Tags = tags; } var aliases = new TrackableSet <string>(); if (_useSet) { container.Aliases = aliases; } if (withTracker) { ((ITrackable)container).SetDefaultTracker(); } // Person { person.Name = "Testor"; person.Age = 10; } // Missions { var value1 = new MissionData(); value1.Kind = 101; value1.Count = 1; value1.Note = "Handmade Sword"; missions.Add(1, value1); var value2 = new MissionData(); value2.Kind = 102; value2.Count = 3; value2.Note = "Lord of Ring"; missions.Add(2, value2); } // Tags if (_useList) { tags.Add(new TagData { Text = "Hello", Priority = 1 }); tags.Add(new TagData { Text = "World", Priority = 2 }); } // Aliases if (_useSet) { aliases.Add("alpha"); aliases.Add("beta"); aliases.Add("gamma"); } return(container); }
public async Task Test_Save() { dynamic container = CreateTestContainer(false); await CreateAsync(container); ((ITrackable)container).SetDefaultTracker(); // modify person container.Person.Age += 1; // modify missions container.Missions.Remove(1); var item2 = container.Missions[2]; var value2 = new MissionData(); value2.Kind = item2.Kind; value2.Count = item2.Count - 1; value2.Note = "Destroyed"; container.Missions[2] = value2; var value3 = new MissionData(); value3.Kind = 103; value3.Count = 3; value3.Note = "Just Arrived"; container.Missions.Add(1, value3); // modify tags if (_useList) { container.Tags.RemoveAt(0); container.Tags.Add(new TagData { Text = "Data", Priority = 3 }); } // modify aliases if (_useSet) { container.Aliases.Remove("alpha"); container.Aliases.Add("delta"); } // save modification await SaveAsync(container); container.Tracker.Clear(); // check equality dynamic container2 = await LoadAsync(); AssertContainerEqual(container, container2); }