public void KnowledgeTest_OccupationAndRelationship_AnswerReturned() { //Who was married to Queen Meve? //The King of Temeria //ARRANGE var knowledge = MemoryContentInitializer.CreateItemsAndLinkThem(new ItemLinkFactory()); var guineaPig = new Person("Guinea Pig", Gender.Male, Sex.Male, Orientation.Straight, Guid.NewGuid()); var testCharacter = new global::RNPC.Core.Character(guineaPig, Archetype.None, knowledge) { FileController = new DecisionTreeFileController(), DecisionTreeBuilder = new DecisionTreeBuilder(), KnowledgeRandomizer = new TestKnowledgeRandomization() }; testCharacter.AddContentToLongTermMemory(knowledge); //ACT var meve = testCharacter.MyMemory.Persons.FindPersonByName("Meve"); //ASSERT Assert.IsNotNull(meve); var husband = meve.FindRelationshipsByType(PersonalRelationshipType.Family).FirstOrDefault(r => r.Description == "wife-of")?.RelatedPerson; Assert.IsNotNull(husband); var occupation = husband.GetCurrentOccupation(); Assert.IsNotNull(occupation); Assert.AreEqual("King of Temeria", occupation.Name); }
public void Hibernate_CronosInstanceWithFollowersAndKnowledge_FileWritten() { //ARRANGE OmniscienceFileController controller = new OmniscienceFileController(); Cronos.Instance.FileController = controller; Cronos.Instance.DeactivateMemoryBackups(); if (controller.FileExists()) { controller.DeleteFile(); } var referenceData = MemoryContentInitializer.CreateItemsAndLinkThem(new ItemLinkFactory()); for (int i = 0; i < 50; i++) { Person newPerson = new Person("NPC" + i, Gender.Agender, Sex.Undefined, Orientation.Asexual, Guid.Empty); var newNpc = new global::RNPC.Core.Character(newPerson, Archetype.None); foreach (var data in referenceData) { if (RandomValueGenerator.GeneratePercentileIntegerValue() < 34) { newNpc.AddContentToLongTermMemory(data); } } Cronos.Instance.AddFollower(newNpc); } Cronos.Instance.AddReferenceDataList(referenceData); //ACT Cronos.Instance.Hibernate(); //ASSERT Assert.IsTrue(controller.FileExists()); }
public void KnowledgeTest_AnyasBirthplace_AnswerReturned() { //Where was Anya born? //Anya was born in Rivia //ARRANGE var knowledge = new List <MemoryItem>(); knowledge.AddRange(MemoryContentInitializer.CreatePersonsAndOccupationsForTest(new ItemLinkFactory())); var guineaPig = new Person("Guinea Pig", Gender.Male, Sex.Male, Orientation.Straight, Guid.NewGuid()); var testCharacter = new global::RNPC.Core.Character(guineaPig, Archetype.None, knowledge) { FileController = new DecisionTreeFileController(), DecisionTreeBuilder = new DecisionTreeBuilder(), KnowledgeRandomizer = new TestKnowledgeRandomization() }; testCharacter.AddContentToLongTermMemory(knowledge); //ACT // ReSharper disable once InconsistentNaming var Anya = testCharacter.MyMemory.Persons.FindPersonByName("Anya"); //ASSERT Assert.IsNotNull(Anya); // ReSharper disable once InconsistentNaming var Rivia = Anya.FindPlaceByPersonalTieType(PersonalTieType.BornIn); Assert.IsNotNull(Rivia); Assert.AreEqual("Rivia", Rivia.Name); }
public void WriteToFile_PerformanceTests_StatisticsReturned() { //ARRANGE MemoryFileController myController = new MemoryFileController(Directory.GetCurrentDirectory());//Cronos.Instance.BackupMemoryFiles); var knowledge = MemoryContentInitializer.CreateItemsAndLinkThem(new ItemLinkFactory()); var testCharacter = CreateTestCharacter(knowledge); for (int i = 0; i <= 5; i++) { if (i > 0) { testCharacter.AddContentToLongTermMemory(knowledge); } for (int k = 1; k <= 10; k++) { Stopwatch timer = new Stopwatch(); timer.Start(); SerializeAndEncryptData(testCharacter); timer.Stop(); Debug.Write((i + 1) + "\t" + timer.ElapsedMilliseconds); timer.Restart(); DeserializeAndDecryptData(testCharacter); timer.Stop(); Debug.Write("\t" + timer.ElapsedMilliseconds + "\r"); myController.DeleteFile(testCharacter.UniqueId); } } }
public void KnowledgeTest_OccupationAndOrigin_AnswerReturned() { //Where do Vikings come from? //from Skellige //ARRANGE var knowledge = MemoryContentInitializer.CreateItemsAndLinkThem(new ItemLinkFactory()); var guineaPig = new Person("Guinea Pig", Gender.Male, Sex.Male, Orientation.Straight, Guid.NewGuid()); var testCharacter = new global::RNPC.Core.Character(guineaPig, Archetype.None, knowledge) { FileController = new DecisionTreeFileController(), DecisionTreeBuilder = new DecisionTreeBuilder(), KnowledgeRandomizer = new TestKnowledgeRandomization() }; testCharacter.AddContentToLongTermMemory(knowledge); //ACT var vikings = testCharacter.MyMemory.Occupations.FindOccupationByName("Vikings"); //ASSERT Assert.IsNotNull(vikings); Place vikingOrigin = vikings.FindLinkedPlaceByType(OccupationalTieType.OriginatedFrom); Assert.IsNotNull(vikingOrigin); Assert.IsTrue(vikingOrigin.Name.Contains("Skellige")); }
public void KnowledgeTest_TheConjunction_AnswerReturned() { //Where was the Conjunction of the Spheres? //The Continent saw the Conjunction of the Spheres //ARRANGE var knowledge = MemoryContentInitializer.CreateItemsAndLinkThem(new ItemLinkFactory()); var guineaPig = new Person("Guinea Pig", Gender.Male, Sex.Male, Orientation.Straight, Guid.NewGuid()); var testCharacter = new global::RNPC.Core.Character(guineaPig, Archetype.None, knowledge) { FileController = new DecisionTreeFileController(), DecisionTreeBuilder = new DecisionTreeBuilder(), KnowledgeRandomizer = new TestKnowledgeRandomization() }; testCharacter.AddContentToLongTermMemory(knowledge); //ACT var theConjuction = testCharacter.MyMemory.Events.FindEventByName("Conjunction"); //ASSERT Assert.IsNotNull(theConjuction); var continent = theConjuction.FindLinkedPlaceByOccurenceType(OccurenceType.HappenedIn); Assert.IsNotNull(continent); Assert.AreEqual("The Continent", continent.Name); }
public void KnowledgeTest_TheNorthernWars_AnswerReturned() { //What battle did Geralt fight in? //Geralt fought in the battle against Nilfgaard //ARRANGE var knowledge = MemoryContentInitializer.CreateItemsAndLinkThem(new ItemLinkFactory()); var guineaPig = new Person("Guinea Pig", Gender.Male, Sex.Male, Orientation.Straight, Guid.NewGuid()); var testCharacter = new global::RNPC.Core.Character(guineaPig, Archetype.None, knowledge) { FileController = new DecisionTreeFileController(), DecisionTreeBuilder = new DecisionTreeBuilder(), KnowledgeRandomizer = new TestKnowledgeRandomization() }; testCharacter.AddContentToLongTermMemory(knowledge); //ACT // ReSharper disable once InconsistentNaming var Geralt = testCharacter.MyMemory.Persons.FindPersonByName("Geralt"); //ASSERT Assert.IsNotNull(Geralt); var eventsInvolved = Geralt.FindLinkedEventsByInvolvementType(PersonalInvolvementType.FoughtIn); Assert.IsNotNull(eventsInvolved); Assert.IsTrue(eventsInvolved.Count != 0); Assert.AreEqual("The Northern Wars", eventsInvolved[0].Name); }
public void KnowledgeTest_RilbertsTrade_AnswerReturned() { //What is Ribert's trade? //Rilbert is a Mason //ARRANGE var knowledge = new List <MemoryItem>(); knowledge.AddRange(MemoryContentInitializer.CreatePersonsAndOccupationsForTest(new ItemLinkFactory())); var guineaPig = new Person("Guinea Pig", Gender.Male, Sex.Male, Orientation.Straight, Guid.NewGuid()); var testCharacter = new global::RNPC.Core.Character(guineaPig, Archetype.None, knowledge) { FileController = new DecisionTreeFileController(), DecisionTreeBuilder = new DecisionTreeBuilder(), KnowledgeRandomizer = new TestKnowledgeRandomization() }; testCharacter.AddContentToLongTermMemory(knowledge); //ACT // ReSharper disable once InconsistentNaming var Rilbert = testCharacter.MyMemory.Persons.FindPersonByName("Rilbert"); //ASSERT Assert.IsNotNull(Rilbert); var occupation = Rilbert.GetCurrentOccupation(); Assert.IsNotNull(occupation); Assert.AreEqual("Mason", occupation.Name); }
public void KnowledgeTest_ConquestOfRedania_AnswerReturned() { //Who conquered Redania? //The Emperor of Nilfgaard conquered Redania //ARRANGE var knowledge = MemoryContentInitializer.CreateItemsAndLinkThem(new ItemLinkFactory()); var guineaPig = new Person("Guinea Pig", Gender.Male, Sex.Male, Orientation.Straight, Guid.NewGuid()); var testCharacter = new global::RNPC.Core.Character(guineaPig, Archetype.None, knowledge) { FileController = new DecisionTreeFileController(), DecisionTreeBuilder = new DecisionTreeBuilder(), KnowledgeRandomizer = new TestKnowledgeRandomization() }; testCharacter.AddContentToLongTermMemory(knowledge); //ACT // ReSharper disable once InconsistentNaming var Redania = testCharacter.MyMemory.Places.FindPlaceByName("Redania"); //ASSERT Assert.IsNotNull(Redania); var theConquest = Redania.FindLinkedEventByType(OccurenceType.Conquest); Assert.IsNotNull(theConquest); var leader = theConquest.FindOccupationsByInvolvementType(OccupationalInvolvementType.Led); Assert.IsNotNull(leader); Assert.IsTrue(leader.Count == 1); Assert.AreEqual("Imperator", leader[0].Name); Debug.Write($"The {leader[0].Name} of the {leader[0].FindLinkedPlaceByType(OccupationalTieType.Led)} led the {theConquest.Name}"); }
public void WriteToFile_MemoriesWithContent_MemoriesWrittenToFile() { //ARRANGE MemoryFileController myController = new MemoryFileController(Directory.GetCurrentDirectory()); List <MemoryItem> knowledge = MemoryContentInitializer.CreateItemsAndLinkThem(new ItemLinkFactory()); var testCharacter = CreateTestCharacter(knowledge); //ACT myController.WriteToFile(testCharacter.UniqueId, testCharacter.MyMemory); //Assert myController.FileExists(testCharacter.UniqueId); //Cleanup myController.DeleteFile(testCharacter.UniqueId); }
public void New_WithInitializedMemory_MemoryContentSet() { var knowledge = MemoryContentInitializer.CreateItemsAndLinkThem(new ItemLinkFactory()); var testCharacter = GetMeSterlingArcher(); testCharacter.AddContentToLongTermMemory(knowledge); testCharacter.MyMemory.GetMyInformation().Description = "Sterling is a secret agent for ISIS"; Assert.IsTrue(testCharacter.MyMemory.HowManyThingsDoIknow() > 0); Assert.IsTrue(testCharacter.MyMemory.HowManyThingsDoIknow() < 77); Assert.IsTrue(testCharacter.MyMemory.GetMyInformation().ItemType == MemoryItemType.Person); //TODO Assert.AreNotEqual(string.Empty, testCharacter.MyMemory.GetMyInformation().Description); //Assert.IsTrue(testCharacter.MyMemory.Persons.DoIKnowThisPerson(new Person("Geralt of Rivia"))); }
public void WriteToFile_MemoriesWithContent_MemoriesReadFromile() { //ARRANGE MemoryFileController myController = new MemoryFileController(Directory.GetCurrentDirectory()); var testCharacter = CreateTestCharacter(MemoryContentInitializer.CreateItemsAndLinkThem(new ItemLinkFactory())); myController.WriteToFile(testCharacter.UniqueId, testCharacter.MyMemory); Stopwatch perfTime = new Stopwatch(); perfTime.Start(); //ACT var memory = myController.ReadFromFile(testCharacter.UniqueId); perfTime.Stop(); Debug.Write("Time spent: " + perfTime.ElapsedMilliseconds); //Assert Assert.IsNotNull(memory); Assert.AreEqual(77, memory.HowManyThingsDoIknow()); var knowledge = memory.WhatDoIKnow(); Assert.IsTrue(knowledge[0].ItemType == MemoryItemType.Person); Assert.IsTrue(knowledge[1].ItemType == MemoryItemType.Person); Assert.IsTrue(knowledge[7].ItemType == MemoryItemType.PastEvent); Assert.IsTrue(knowledge[9].ItemType == MemoryItemType.PastEvent); Assert.IsTrue(knowledge[16].ItemType == MemoryItemType.Place); Assert.IsTrue(knowledge[21].ItemType == MemoryItemType.Place); Assert.IsTrue(knowledge[27].ItemType == MemoryItemType.Organization); Assert.IsTrue(knowledge[32].ItemType == MemoryItemType.Occupation); Assert.IsTrue(knowledge[39].ItemType == MemoryItemType.PersonalRelationship); Assert.IsTrue(knowledge[40].ItemType == MemoryItemType.Association); Assert.IsTrue(knowledge[46].ItemType == MemoryItemType.EventRelationship); Assert.IsTrue(knowledge[51].ItemType == MemoryItemType.PersonalTie); Assert.IsTrue(knowledge[54].ItemType == MemoryItemType.PlaceRelationship); Assert.IsTrue(knowledge[57].ItemType == MemoryItemType.OccupationalTie); //Cleanup myController.DeleteFile(testCharacter.UniqueId); }
public void KnowledgeTest_SavingTheKing_AnswerReturned() { //Who saved the king and where? //A mason saved the king from death in Kaedwen //ARRANGE var knowledge = new List <MemoryItem>(); knowledge.AddRange(MemoryContentInitializer.CreateOccupationsAndEventsForTest(new ItemLinkFactory())); var guineaPig = new Person("Guinea Pig", Gender.Male, Sex.Male, Orientation.Straight, Guid.NewGuid()); var testCharacter = new global::RNPC.Core.Character(guineaPig, Archetype.None, knowledge) { FileController = new DecisionTreeFileController(), DecisionTreeBuilder = new DecisionTreeBuilder(), KnowledgeRandomizer = new TestKnowledgeRandomization() }; testCharacter.AddContentToLongTermMemory(knowledge); //ACT // ReSharper disable once InconsistentNaming var king = testCharacter.MyMemory.Occupations.FindOccupationByName("King"); //ASSERT Assert.IsNotNull(king); var linkedEvents = king.FindLinkedEventsByInvolvementType(OccupationalInvolvementType.WasCaughtIn); Assert.IsNotNull(linkedEvents); Assert.IsTrue(linkedEvents.Count == 1); // ReSharper disable once InconsistentNaming var Kaedwen = linkedEvents[0].FindLinkedPlaceByOccurenceType(OccurenceType.HappenedIn); Assert.IsNotNull(Kaedwen); Assert.AreEqual("Kaedwen", Kaedwen.Name); var linkedOccupation = linkedEvents[0].FindOccupationsByInvolvementType(OccupationalInvolvementType.ParticipatedIn); Assert.IsNotNull(linkedOccupation); Assert.IsTrue(linkedOccupation.Count == 1); Assert.AreEqual("Mason", linkedOccupation[0].Name); }
public void WriteToFile_OmniscienceFile_FileWritten() { //ARRANGE OmniscienceFileController controller = new OmniscienceFileController(); if (controller.FileExists()) { controller.DeleteFile(); } var referenceData = MemoryContentInitializer.CreateItemsAndLinkThem(new ItemLinkFactory()); Dictionary <Guid, MemoryItem> dataDictionary = new Dictionary <Guid, MemoryItem>(); foreach (var item in referenceData) { dataDictionary.Add(Guid.NewGuid(), item); } Omniscience allKnowledge = new Omniscience(dataDictionary); for (int i = 0; i < 50; i++) { Person newPerson = new Person("NPC" + i, Gender.Agender, Sex.Undefined, Orientation.Asexual, Guid.Empty); var newNpc = new global::RNPC.Core.Character(newPerson, Archetype.None); for (int j = 0; j < referenceData.Count; j++) { if (RandomValueGenerator.GeneratePercentileIntegerValue() < 34) { newNpc.AddContentToLongTermMemory(dataDictionary.ElementAt(j).Value); } } allKnowledge.AddFollower(newNpc); } //ACT controller.WriteToFile(allKnowledge); //ASSERT controller.FileExists(); }
public void FindEventByTypeAndRelatedPerson_MemoryLoadedWithEventsAndPersons_EventFound() { //ARRANGE var knowledge = MemoryContentInitializer.CreateEventsAndPersons(new ItemLinkFactory()); var guineaPig = new Person("Guinea Pig", Gender.Male, Sex.Male, Orientation.Straight, Guid.NewGuid()); var testCharacter = new global::RNPC.Core.Character(guineaPig, Archetype.None) { FileController = new DecisionTreeFileController(), DecisionTreeBuilder = new DecisionTreeBuilder(), KnowledgeRandomizer = new TestKnowledgeRandomization() }; testCharacter.AddContentToLongTermMemory(knowledge); //ACT var conflicts = testCharacter.MyMemory.Events.FindEventsByTypeAndRelatedPerson(PastEventType.Conflict, "Rilbert"); //ASSERT Assert.IsNotNull(conflicts); Assert.AreEqual(2, conflicts.Count); }
public void KnowledgeTest_BattleOfCintra_AnswerReturned() { //Who conquered Cintra? //Nilfgaard conquered Cintra at the battle of Cintra //ARRANGE var knowledge = MemoryContentInitializer.CreateItemsAndLinkThem(new ItemLinkFactory()); var guineaPig = new Person("Guinea Pig", Gender.Male, Sex.Male, Orientation.Straight, Guid.NewGuid()); var testCharacter = new global::RNPC.Core.Character(guineaPig, Archetype.None, knowledge) { FileController = new DecisionTreeFileController(), DecisionTreeBuilder = new DecisionTreeBuilder(), KnowledgeRandomizer = new TestKnowledgeRandomization() }; testCharacter.AddContentToLongTermMemory(knowledge); //ACT // ReSharper disable once InconsistentNaming var Cintra = testCharacter.MyMemory.Places.FindPlaceByName("Cintra"); //ASSERT Assert.IsNotNull(Cintra); var conquest = Cintra.FindLinkedEventByType(OccurenceType.Conquest); Assert.IsNotNull(conquest); var conqueringKing = conquest.FindOccupationsByInvolvementType(OccupationalInvolvementType.Led); Assert.IsNull(conqueringKing); var emperator = Cintra.FindOccupationsByOccupationalTieType(OccupationalTieType.Conquered); Assert.IsNotNull(emperator); Assert.IsTrue(emperator.Count == 1); Assert.AreEqual("Imperator", emperator[0].Name); }
public void FindEventByName_MemoryLoadedWithEventsAndPersons_EventFound() { string eventName = "The Conjunction of the Spheres"; //ARRANGE var knowledge = MemoryContentInitializer.CreateEventsAndPersons(new ItemLinkFactory()); var guineaPig = new Person("Guinea Pig", Gender.Male, Sex.Male, Orientation.Straight, Guid.NewGuid()); var testCharacter = new global::RNPC.Core.Character(guineaPig, Archetype.None) { FileController = new DecisionTreeFileController(), DecisionTreeBuilder = new DecisionTreeBuilder(), KnowledgeRandomizer = new TestKnowledgeRandomization() }; testCharacter.AddContentToLongTermMemory(knowledge); //ACT var conjunction = testCharacter.MyMemory.Events.FindEventByName(eventName); //ASSERT Assert.IsNotNull(conjunction); Assert.AreEqual(eventName, conjunction.Name); }
public void KnowledgeTest_AnyasBoyfriend_AnswerReturned() { //Who is Anya dating? //Anya and Henselt are dating //ARRANGE var knowledge = new List <MemoryItem>(); knowledge.AddRange(MemoryContentInitializer.CreatePersonsAndOccupationsForTest(new ItemLinkFactory())); var guineaPig = new Person("Guinea Pig", Gender.Male, Sex.Male, Orientation.Straight, Guid.NewGuid()); var testCharacter = new global::RNPC.Core.Character(guineaPig, Archetype.None) { FileController = new DecisionTreeFileController(), DecisionTreeBuilder = new DecisionTreeBuilder(), KnowledgeRandomizer = new TestKnowledgeRandomization() }; testCharacter.AddContentToLongTermMemory(knowledge); //ACT // ReSharper disable once InconsistentNaming var Anya = testCharacter.MyMemory.Persons.FindPersonByName("Anya"); //ASSERT Assert.IsNotNull(Anya); // ReSharper disable once InconsistentNaming var relationships = Anya.FindRelationshipsByType(PersonalRelationshipType.Romantic); Assert.IsNotNull(relationships); Assert.IsTrue(relationships.Count == 1); var boyfriend = relationships[0].RelatedPerson; Assert.IsNotNull(boyfriend); Assert.AreEqual("Hanselt", boyfriend.Name); }
public void KnowledgeTest_FoundationOfAKingdom_AnswerReturned() { // When was Aedirn founded // in 813 //ARRANGE var knowledge = MemoryContentInitializer.CreateItemsAndLinkThem(new ItemLinkFactory()); var guineaPig = new Person("Guinea Pig", Gender.Male, Sex.Male, Orientation.Straight, Guid.NewGuid()); var testCharacter = new global::RNPC.Core.Character(guineaPig, Archetype.None, knowledge) { FileController = new DecisionTreeFileController(), DecisionTreeBuilder = new DecisionTreeBuilder(), KnowledgeRandomizer = new TestKnowledgeRandomization() }; testCharacter.AddContentToLongTermMemory(knowledge); //ACT var dateOfFoundation = testCharacter.MyMemory.Places.WhenWasThisPlaceFounded("Aedirn"); //ASSERT Assert.IsNotNull(dateOfFoundation); Assert.AreEqual(813, dateOfFoundation[0].GetYear()); }