Beispiel #1
0
        public void test_add_entry()
        {
            Character          c1 = new Character("Somebody"), c2 = new Character("Someone Else");
            Guid               c1_guid = Guid.NewGuid(), c2_guid = Guid.NewGuid();
            ActionCharacterSet a1 = new ActionCharacterSet(c1_guid, null, c1), a2 = new ActionCharacterSet(c2_guid, null, c2),
                               a3 = new ActionCharacterSet(c1_guid, c1, null);
            Entry e1 = new Entry(10, new DateTime(1), "Somebody joined party", actions: new List <EntryAction>()
            {
                a1
            }),
                  e2 = new Entry(20, new DateTime(2), "Someone Else joined party", actions: new List <EntryAction>()
            {
                a2
            }),
                  e3 = new Entry(30, new DateTime(3), "Sombody left party", actions: new List <EntryAction>()
            {
                a3
            });
            CampaignDomain domain = new CampaignDomain();

            domain.add_entry(e1);
            Assert.AreEqual(domain.state.characters.characters.Count, 1);
            Assert.IsTrue(domain.state.characters.characters.ContainsKey(c1_guid));
            Assert.AreEqual(domain.state.characters.active_characters.Count, 1);
            Assert.IsTrue(domain.state.characters.active_characters.Contains(c1_guid));
            Assert.AreEqual(domain.entries.Count, 1);
            Assert.AreEqual(domain.entries[0], e1);
            Assert.AreEqual(domain.valid_entries, 1);

            domain.add_entry(e3);
            Assert.AreEqual(domain.state.characters.characters.Count, 1);
            Assert.IsTrue(domain.state.characters.characters.ContainsKey(c1_guid));
            Assert.AreEqual(domain.state.characters.active_characters.Count, 0);
            Assert.AreEqual(domain.entries.Count, 2);
            Assert.AreEqual(domain.entries[0], e1);
            Assert.AreEqual(domain.entries[1], e3);
            Assert.AreEqual(domain.valid_entries, 2);

            domain.add_entry(e2);
            Assert.AreEqual(domain.state.characters.characters.Count, 2);
            Assert.IsTrue(domain.state.characters.characters.ContainsKey(c1_guid));
            Assert.IsTrue(domain.state.characters.characters.ContainsKey(c2_guid));
            Assert.AreEqual(domain.state.characters.active_characters.Count, 1);
            Assert.IsTrue(domain.state.characters.active_characters.Contains(c2_guid));
            Assert.AreEqual(domain.entries.Count, 3);
            Assert.AreEqual(domain.entries[0], e1);
            Assert.AreEqual(domain.entries[1], e2);
            Assert.AreEqual(domain.entries[2], e3);
            Assert.AreEqual(domain.valid_entries, 3);
        }
Beispiel #2
0
        public void test_get_timestamp_index()
        {
            Character          c1 = new Character("Somebody"), c2 = new Character("Someone Else");
            Guid               c1_guid = Guid.NewGuid(), c2_guid = Guid.NewGuid();
            ActionCharacterSet a1 = new ActionCharacterSet(c1_guid, null, c1), a2 = new ActionCharacterSet(c2_guid, null, c2),
                               a3 = new ActionCharacterSet(c1_guid, c1, null);
            Entry e1 = new Entry(10, new DateTime(1), "Somebody joined party", actions: new List <EntryAction>()
            {
                a1
            }),
                  e2 = new Entry(20, new DateTime(2), "Someone Else joined party", actions: new List <EntryAction>()
            {
                a2
            }),
                  e3 = new Entry(30, new DateTime(3), "Sombody left party", actions: new List <EntryAction>()
            {
                a3
            });
            CampaignDomain domain = new CampaignDomain()
            {
                entries = new List <Entry>()
                {
                    e1, e2, e3
                }
            };

            e1.apply(domain.state);
            e2.apply(domain.state);
            e3.apply(domain.state);
            domain.valid_entries = 3;

            int idx_before = domain.get_timestamp_index(5);

            Assert.AreEqual(idx_before, -1);
            int idx0 = domain.get_timestamp_index(10);

            Assert.AreEqual(idx0, 0);
            int idx1 = domain.get_timestamp_index(25);

            Assert.AreEqual(idx1, 1);
            int idx2 = domain.get_timestamp_index(40);

            Assert.AreEqual(idx2, 2);
        }
Beispiel #3
0
        public void test_get_entry_state()
        {
            Character          c1 = new Character("Somebody"), c2 = new Character("Someone Else");
            Guid               c1_guid = Guid.NewGuid(), c2_guid = Guid.NewGuid();
            ActionCharacterSet a1 = new ActionCharacterSet(c1_guid, null, c1), a2 = new ActionCharacterSet(c2_guid, null, c2),
                               a3 = new ActionCharacterSet(c1_guid, c1, null);
            Entry e1 = new Entry(10, new DateTime(1), "Somebody joined party", actions: new List <EntryAction>()
            {
                a1
            }),
                  e2 = new Entry(20, new DateTime(2), "Someone Else joined party", actions: new List <EntryAction>()
            {
                a2
            }),
                  e3 = new Entry(30, new DateTime(3), "Sombody left party", actions: new List <EntryAction>()
            {
                a3
            });
            CampaignDomain domain = new CampaignDomain()
            {
                entries = new List <Entry>()
                {
                    e1, e2, e3
                }
            };

            e1.apply(domain.state);
            e2.apply(domain.state);
            e3.apply(domain.state);
            domain.valid_entries = 3;

            CampaignState state = domain.get_entry_state(1);

            Assert.IsFalse(ReferenceEquals(state, domain.state));
            Assert.AreEqual(state.characters.characters.Count, 2);
            Assert.IsTrue(state.characters.characters.ContainsKey(c1_guid));
            Assert.IsTrue(state.characters.characters.ContainsKey(c2_guid));
            Assert.AreEqual(state.characters.active_characters.Count, 2);
            Assert.IsTrue(state.characters.active_characters.Contains(c1_guid));
            Assert.IsTrue(state.characters.active_characters.Contains(c2_guid));
        }
Beispiel #4
0
        public void test_serialization()
        {
            Character      chr = new Character("Somebody");
            Note           note = new Note("Some note", Guid.NewGuid());
            Task           task = new Task(Guid.NewGuid(), "Some task");
            CalendarEvent  evt = new CalendarEvent(Guid.NewGuid(), 42, "Some event");
            Entry          ent = new Entry(42, DateTime.Now, "Some log entry", 1);
            Topic          topic = new Topic("Some topic");
            ExternalNote   oog_note = new ExternalNote("Some out-of-game note", DateTime.Now);
            CampaignDomain foo = new CampaignDomain(), bar;

            Guid chr_guid = foo.state.characters.add_character(chr);
            Guid inv_guid = foo.state.inventories.new_inventory("Somebody's Inventory");

            foo.state.character_inventory[chr_guid] = inv_guid;
            Guid note_guid  = foo.state.notes.add_note(note);
            Guid task_guid  = foo.state.tasks.add_task(task);
            Guid event_guid = foo.state.events.add_event(evt);

            foo.entries.Add(ent);
            foo.valid_entries = 1;
            Guid topic_guid = Guid.NewGuid();

            foo.topics[topic_guid] = topic;
            Guid oog_note_guid = Guid.NewGuid();

            foo.notes[oog_note_guid] = oog_note;

            DataContractSerializer fmt = new DataContractSerializer(typeof(CampaignDomain));

            using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) {
                fmt.WriteObject(ms, foo);
                ms.Seek(0, System.IO.SeekOrigin.Begin);
                System.Xml.XmlDictionaryReader xr = System.Xml.XmlDictionaryReader.CreateTextReader(ms, new System.Xml.XmlDictionaryReaderQuotas());
                bar = (CampaignDomain)(fmt.ReadObject(xr, true));
            }
            Assert.AreEqual(foo.state.characters.characters.Count, bar.state.characters.characters.Count);
            Assert.IsTrue(bar.state.characters.characters.ContainsKey(chr_guid));
            Assert.AreEqual(bar.state.characters.characters[chr_guid].name, "Somebody");
            Assert.AreEqual(foo.state.inventories.inventories.Count, bar.state.inventories.inventories.Count);
            Assert.IsTrue(bar.state.inventories.inventories.ContainsKey(inv_guid));
            Assert.AreEqual(bar.state.inventories.inventories[inv_guid].name, "Somebody's Inventory");
            Assert.AreEqual(foo.state.character_inventory.Count, bar.state.character_inventory.Count);
            Assert.IsTrue(bar.state.character_inventory.ContainsKey(chr_guid));
            Assert.AreEqual(bar.state.character_inventory[chr_guid], inv_guid);
            Assert.AreEqual(foo.state.notes.notes.Count, bar.state.notes.notes.Count);
            Assert.IsTrue(bar.state.notes.notes.ContainsKey(note_guid));
            Assert.AreEqual(bar.state.notes.notes[note_guid].contents, "Some note");
            Assert.AreEqual(foo.state.tasks.tasks.Count, bar.state.tasks.tasks.Count);
            Assert.IsTrue(bar.state.tasks.tasks.ContainsKey(task_guid));
            Assert.AreEqual(bar.state.tasks.tasks[task_guid].name, "Some task");
            Assert.AreEqual(foo.state.events.events.Count, bar.state.events.events.Count);
            Assert.IsTrue(bar.state.events.events.ContainsKey(event_guid));
            Assert.AreEqual(bar.state.events.events[event_guid].name, "Some event");
            Assert.AreEqual(foo.entries.Count, bar.entries.Count);
            for (int i = 0; i < foo.entries.Count; i++)
            {
                Assert.AreEqual(foo.entries[i].guid, bar.entries[i].guid);
            }
            Assert.AreEqual(foo.valid_entries, bar.valid_entries);
            Assert.AreEqual(foo.topics.Count, bar.topics.Count);
            Assert.IsTrue(bar.topics.ContainsKey(topic_guid));
            Assert.AreEqual(bar.topics[topic_guid].name, "Some topic");
            Assert.AreEqual(foo.notes.Count, bar.notes.Count);
            foreach (Guid guid in foo.notes.Keys)
            {
                Assert.AreEqual(foo.notes[guid].contents, bar.notes[guid].contents);
            }
        }