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)
示例#5
0
 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)
示例#6
0
    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)
示例#7
0
    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)
示例#8
0
    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)
示例#9
0
    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))