Пример #1
0
        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);
        }
Пример #2
0
        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);
        }