def test_long_term_memory_can_save_multiple_relations_with_equal_category_correctly(self): long_term_memory = LongTermMemoryService() paris_city_object = CityObject("Paris") london_city_object = CityObject("London") north_cardinal_relation = NorthCardinalRelation() cairo_city_object = CityObject("Cairo") south_cardinal_relation = SouthCardinalRelation() long_term_memory.save_knowledge_fragment(north_cardinal_relation, [london_city_object, paris_city_object]) long_term_memory.save_knowledge_fragment(south_cardinal_relation, [cairo_city_object, paris_city_object]) self.assertEqual(long_term_memory.stored_relations[RelationType.CardinalRelation][0].relation.name, CardinalRelationName.North) self.assertEqual(long_term_memory.stored_relations[RelationType.CardinalRelation][0].objects[0], "London") self.assertEqual(long_term_memory.stored_relations[RelationType.CardinalRelation][0].objects[1], "Paris") self.assertEqual(long_term_memory.stored_relations[RelationType.CardinalRelation][0].time_of_creation, 1) self.assertEqual(long_term_memory.stored_relations[RelationType.CardinalRelation][0].amount_of_usages, 1) self.assertEqual(long_term_memory.stored_relations[RelationType.CardinalRelation][1].relation.name, CardinalRelationName.South) self.assertEqual(long_term_memory.stored_relations[RelationType.CardinalRelation][1].objects[0], "Cairo") self.assertEqual(long_term_memory.stored_relations[RelationType.CardinalRelation][1].objects[1], "Paris") self.assertEqual(long_term_memory.stored_relations[RelationType.CardinalRelation][1].time_of_creation, 2) self.assertEqual(long_term_memory.stored_relations[RelationType.CardinalRelation][1].amount_of_usages, 1) self.assertEqual(long_term_memory.stored_objects["Paris"].time_of_creation, 1) self.assertEqual(long_term_memory.stored_objects["Paris"].amount_of_usages, 2) self.assertEqual(long_term_memory.stored_objects["Paris"].relation_links[0], (RelationType.CardinalRelation, 0)) self.assertEqual(long_term_memory.stored_objects["Paris"].relation_links[1], (RelationType.CardinalRelation, 1))
def test_long_term_memory_can_save_multiple_relations_with_different_categories_correctly(self): long_term_memory = LongTermMemoryService() paris_city_object = CityObject("Paris") london_city_object = CityObject("London") north_cardinal_relation = NorthCardinalRelation() france_country_object = CountryObject("France") part_of_topological_relation = PartOfTopologicalRelation() cairo_city_object = CityObject("Cairo") south_cardinal_relation = SouthCardinalRelation() long_term_memory.save_knowledge_fragment(north_cardinal_relation, [london_city_object, paris_city_object]) long_term_memory.save_knowledge_fragment(part_of_topological_relation, [paris_city_object, france_country_object]) long_term_memory.save_knowledge_fragment(south_cardinal_relation, [cairo_city_object, paris_city_object]) self.assertEqual(long_term_memory.stored_relations[RelationType.CardinalRelation][0].objects[0], "London") self.assertEqual(long_term_memory.stored_relations[RelationType.CardinalRelation][0].objects[1], "Paris") self.assertEqual(long_term_memory.stored_relations[RelationType.CardinalRelation][0].time_of_creation, 1) self.assertEqual(long_term_memory.stored_relations[RelationType.CardinalRelation][0].amount_of_usages, 1) self.assertEqual(long_term_memory.stored_relations[RelationType.CardinalRelation][1].objects[0], "Cairo") self.assertEqual(long_term_memory.stored_relations[RelationType.CardinalRelation][1].objects[1], "Paris") self.assertEqual(long_term_memory.stored_relations[RelationType.CardinalRelation][1].time_of_creation, 3) self.assertEqual(long_term_memory.stored_relations[RelationType.CardinalRelation][1].amount_of_usages, 1) self.assertEqual(long_term_memory.stored_relations[RelationType.TopologicalRelation][0].objects[0], "Paris") self.assertEqual(long_term_memory.stored_relations[RelationType.TopologicalRelation][0].objects[1], "France") self.assertEqual(long_term_memory.stored_relations[RelationType.TopologicalRelation][0].time_of_creation, 2) self.assertEqual(long_term_memory.stored_relations[RelationType.TopologicalRelation][0].amount_of_usages, 1) self.assertEqual(long_term_memory.stored_objects["Paris"].stored_object, paris_city_object) self.assertEqual(long_term_memory.stored_objects["Paris"].time_of_creation, 1) self.assertEqual(long_term_memory.stored_objects["Paris"].amount_of_usages, 3) self.assertEqual(long_term_memory.stored_objects["Paris"].relation_links[0][0], RelationType.CardinalRelation) self.assertEqual(long_term_memory.stored_objects["Paris"].relation_links[0][1], 0) self.assertEqual(long_term_memory.stored_objects["Paris"].relation_links[1][0], RelationType.TopologicalRelation) self.assertEqual(long_term_memory.stored_objects["Paris"].relation_links[1][1], 0) self.assertEqual(long_term_memory.stored_objects["Paris"].relation_links[2][0], RelationType.CardinalRelation) self.assertEqual(long_term_memory.stored_objects["Paris"].relation_links[2][1], 1)
def test_create_mental_image_without_recall(self): casimir_simulation = CasimirSimulation(app) casimir_simulation.MAX_AMOUNT_OF_RETRIES = 0 paris_city_object = CityObject("Paris") prague_city_object = CityObject("Prague") london_city_object = CityObject("London") south_cardinal_relation = SouthCardinalRelation() east_cardinal_relation = EastCardinalRelation() casimir_simulation.save_knowledge_fragment( south_cardinal_relation, [paris_city_object, london_city_object]) casimir_simulation.save_knowledge_fragment( east_cardinal_relation, [prague_city_object, paris_city_object]) casimir_simulation.update_settings(-0.5, 0.6, 1, 0.1, True, 0.1, False, False, False, 0) created_spatial_mental_image = casimir_simulation.create_mental_image([ RelationType.CardinalRelation, prague_city_object, london_city_object ]) self.assertEqual(len(created_spatial_mental_image['smm']), 2) self.assertEqual(created_spatial_mental_image['smm'][0]['east'], 'Prague') self.assertEqual(created_spatial_mental_image['smm'][0]['middle'], 'Paris') self.assertEqual(created_spatial_mental_image['smm'][1]['west'], 'Paris') self.assertEqual(created_spatial_mental_image['smm'][1]['middle'], 'Prague')
def test_create_mental_image_call_the_correct_methods( self, mock_receive_knowledge_fragments, mock_received_all_necessary_nodes): casimir_simulation = CasimirSimulation(app) casimir_simulation.MAX_AMOUNT_OF_RETRIES = 3 paris_city_object = CityObject("Paris") prague_city_object = CityObject("Prague") london_city_object = CityObject("London") south_cardinal_relation = SouthCardinalRelation() east_cardinal_relation = EastCardinalRelation() casimir_simulation.save_knowledge_fragment( south_cardinal_relation, [paris_city_object, london_city_object]) casimir_simulation.save_knowledge_fragment( east_cardinal_relation, [prague_city_object, paris_city_object]) mock_receive_knowledge_fragments.side_effect = [ KnowledgeSubnet(casimir_simulation.long_term_memory_controller. long_term_memory_service.stored_relations[ RelationType.CardinalRelation][0]), KnowledgeSubnet(casimir_simulation.long_term_memory_controller. long_term_memory_service.stored_relations[ RelationType.CardinalRelation][1]) ] mock_received_all_necessary_nodes.side_effect = [False, True] casimir_simulation.create_mental_image( [CardinalRelation, [paris_city_object, london_city_object]]) self.assertEqual(mock_received_all_necessary_nodes.call_count, 2)
def test_relation_is_complete_works_correctly_for_incomplete_knowledge_subnet( self): working_memory = WorkingMemoryService() relation = StoredRelation(SouthCardinalRelation(), ["Paris", "London"], 1) relation.objects_received[0] = False self.assertEquals(working_memory._relation_is_complete(relation), False)
def test_add_knowledge_fragment_to_smm_call_the_correct_methods_for_complete_relation( self, mock_create_opposite, mock_use_relation_for_smm): working_memory = WorkingMemoryService() relation = StoredRelation(SouthCardinalRelation(), ["Paris", "London"], 1) working_memory.add_relation_and_opposite_to_smm(relation) self.assertEqual(mock_create_opposite.call_count, 1) self.assertEqual(mock_use_relation_for_smm.call_count, 2)
def test_add_knowledge_fragment_to_smm_call_the_correct_methods_for_incomplete_relation( self, mock_create_opposite, mock_use_relation_for_smm): working_memory = WorkingMemoryService() relation = StoredRelation(SouthCardinalRelation(), ["Freiburg", "Hamburg"], 1) relation.objects_received[1] = False working_memory.add_relation_and_opposite_to_smm(relation) self.assertEqual(mock_create_opposite.call_count, 1) self.assertEqual(mock_use_relation_for_smm.call_count, 2)
def test_create_opposite_for_complete_cardinal_relation(self): working_memory = WorkingMemoryService() relation = StoredRelation(SouthCardinalRelation(), ["Freiburg", "Hamburg"], 1) opposite_relation = working_memory.create_opposite(relation) self.assertEquals(opposite_relation.relation.name.value, "North") self.assertEquals(opposite_relation.objects[0], "Hamburg") self.assertEquals(opposite_relation.objects[1], "Freiburg") self.assertEquals(opposite_relation.objects_received[0], True) self.assertEquals(opposite_relation.objects_received[1], True)
def test_construction_in_working_memory_call_the_correct_methods_if_incomplete_fragments_not_allowed( self, mock_relation_is_complete, mock_add_relation_and_opposite_to_smm, mock_create_smm_json): working_memory = WorkingMemoryService() working_memory.USE_ONLY_COMPLETE_FRAGMENTS = True relation = StoredRelation(SouthCardinalRelation(), ["Paris", "London"], 1) knowledge_subnet = KnowledgeSubnet(relation) working_memory.construction(knowledge_subnet) self.assertEqual(mock_relation_is_complete.call_count, 1) mock_add_relation_and_opposite_to_smm.assert_has_calls( [call(relation)]) self.assertEqual(mock_create_smm_json.call_count, 1)
def create_long_term_memory_based_on_papers_example(self): long_term_memory = LongTermMemoryService() long_term_memory.paris_city_object = CityObject("Paris") long_term_memory.prague_city_object = CityObject("Prague") long_term_memory.london_city_object = CityObject("London") long_term_memory.france_country_object = CountryObject("France") long_term_memory.england_country_object = CountryObject("England") long_term_memory.south_cardinal_relation = SouthCardinalRelation() long_term_memory.east_cardinal_relation = EastCardinalRelation() long_term_memory.part_of_topological_relation = PartOfTopologicalRelation() long_term_memory.save_knowledge_fragment(long_term_memory.part_of_topological_relation, [long_term_memory.paris_city_object, long_term_memory.france_country_object]) long_term_memory.save_knowledge_fragment(long_term_memory.part_of_topological_relation, [long_term_memory.london_city_object, long_term_memory.england_country_object]) long_term_memory.save_knowledge_fragment(long_term_memory.south_cardinal_relation, [long_term_memory.paris_city_object, long_term_memory.london_city_object]) long_term_memory.save_knowledge_fragment(long_term_memory.east_cardinal_relation, [long_term_memory.prague_city_object, long_term_memory.paris_city_object]) return long_term_memory
def test_create_mental_image_with_only_one_relation_receive_just_complete_fragments( self): casimir_simulation = CasimirSimulation(app) casimir_simulation.MAX_AMOUNT_OF_RETRIES = 0 paris_city_object = CityObject("Paris") london_city_object = CityObject("London") south_cardinal_relation = SouthCardinalRelation() casimir_simulation.save_knowledge_fragment( south_cardinal_relation, [paris_city_object, london_city_object]) casimir_simulation.update_settings(-0.5, 0.6, 1, 0.1, True, 0.1, False, False, True, 0) created_spatial_mental_image = casimir_simulation.create_mental_image([ RelationType.CardinalRelation, paris_city_object, london_city_object ]) self.assertEqual(len(created_spatial_mental_image['smm']), 0)
def test_received_all_necessary_nodes_should_return_true(self): casimir_simulation = CasimirSimulation(app) paris_city_object = CityObject("Paris") prague_city_object = CityObject("Prague") london_city_object = CityObject("London") south_cardinal_relation = SouthCardinalRelation() east_cardinal_relation = EastCardinalRelation() casimir_simulation.save_knowledge_fragment( south_cardinal_relation, [paris_city_object, london_city_object]) casimir_simulation.save_knowledge_fragment( east_cardinal_relation, [prague_city_object, paris_city_object]) objects_to_receive = ["Paris", "London"] knowledge_subnet = KnowledgeSubnet( casimir_simulation.long_term_memory_controller. long_term_memory_service.stored_objects["Paris"]) knowledge_subnet.objects["London"] = london_city_object self.assertTrue( casimir_simulation._received_all_necessary_nodes( objects_to_receive, knowledge_subnet))