def test_cdm_trait_collection_remove(self):
        manifest = generate_manifest('C:\\Root\\Path')

        trait = CdmTraitDefinition(manifest.ctx, 'TraitName', None)
        other_trait = CdmTraitDefinition(manifest.ctx, 'Name of other Trait',
                                         None)

        manifest.exhibits_traits.append(trait)
        manifest.exhibits_traits.append(other_trait)

        self.assertEqual(2, len(manifest.exhibits_traits))
        manifest._trait_cache = dict()

        manifest.exhibits_traits.remove(trait)
        self.assertEqual(1, len(manifest.exhibits_traits))
        self.assertEqual(None, manifest._trait_cache)

        manifest.exhibits_traits.remove(trait)
        self.assertEqual(1, len(manifest.exhibits_traits))
        self.assertEqual(other_trait,
                         manifest.exhibits_traits[0].explicit_reference)

        manifest.exhibits_traits.remove('Name of other Trait')
        self.assertEqual(0, len(manifest.exhibits_traits))

        manifest.exhibits_traits.append(trait)
        self.assertEqual(1, len(manifest.exhibits_traits))

        manifest.exhibits_traits.remove(manifest.exhibits_traits[0])
        self.assertEqual(0, len(manifest.exhibits_traits))
    def test_cdm_trait_collection_remove_trait_definition_prioritize_from_property(
            self):
        manifest = generate_manifest('C:\\Root\\Path')

        trait = CdmTraitDefinition(manifest.ctx, 'TraitName', None)
        other_trait = CdmTraitDefinition(manifest.ctx, 'Name of other Trait',
                                         None)

        manifest.exhibits_traits.append(trait)
        manifest.exhibits_traits.append(other_trait)
        manifest.exhibits_traits.append(trait)
        manifest.exhibits_traits[2].is_from_property = True
        manifest.exhibits_traits.append(other_trait)
        manifest.exhibits_traits.append(trait)
        manifest.exhibits_traits[4].is_from_property = True
        manifest.exhibits_traits.append(other_trait)
        self.assertEqual(6, len(manifest.exhibits_traits))

        self.assertTrue(manifest.exhibits_traits[2].is_from_property)

        manifest.exhibits_traits.remove(trait)
        self.assertEqual(
            'TraitName',
            cast('CdmTraitDefinition',
                 manifest.exhibits_traits[0].explicit_reference).trait_name)
        self.assertEqual(
            'Name of other Trait',
            manifest.exhibits_traits[2].explicit_reference.trait_name)
        self.assertEqual(
            'TraitName',
            manifest.exhibits_traits[3].explicit_reference.trait_name)
    def test_cdm_trait_collection_index_of_only_from_property(self):
        manifest = generate_manifest('C:\\Root\\Path')

        trait = CdmTraitDefinition(manifest.ctx, 'TraitName', None)
        other_trait = CdmTraitDefinition(manifest.ctx, 'Name of other Trait',
                                         None)

        manifest.exhibits_traits.append(trait)
        manifest.exhibits_traits.append(other_trait)

        self.assertFalse(manifest.exhibits_traits[0].is_from_property)
        self.assertFalse(manifest.exhibits_traits[1].is_from_property)

        index = manifest.exhibits_traits.index(trait.trait_name, True)
        self.assertEqual(-1, index)

        manifest.exhibits_traits.append(trait)
        manifest.exhibits_traits.append(other_trait)
        manifest.exhibits_traits.append(trait)
        manifest.exhibits_traits.append(other_trait)

        self.assertEqual(6, len(manifest.exhibits_traits))
        manifest.exhibits_traits[2].is_from_property = True
        index = manifest.exhibits_traits.index(trait.trait_name, True)
        self.assertEqual(2, index)
        index = manifest.exhibits_traits.index(trait.trait_name)
        self.assertEqual(2, index)
Esempio n. 4
0
    def test_cdm_trait_collection_add(self):
        manifest = generate_manifest()

        trait = CdmTraitDefinition(manifest.ctx, 'TraitName', None)
        other_trait = CdmTraitDefinition(manifest.ctx, 'Name of other Trait',
                                         None)
        manifest._trait_cache = dict()

        added_trait = manifest.exhibits_traits.append(trait)
        added_other_trait = manifest.exhibits_traits.append(other_trait)
        list_of_args = [[
            Constants._INCREMENTAL_PATTERN_PARAMETER_NAME, 'test'
        ], ['fullDataPartitionPatternName', 'name']]
        added_incremental_trait = manifest.exhibits_traits.append(
            Constants._INCREMENTAL_TRAIT_NAME, list_of_args)

        self.assertEqual(None, manifest._trait_cache)
        self.assertEqual(3, len(manifest.exhibits_traits))
        self.assertEqual(trait, manifest.exhibits_traits[0].explicit_reference)
        self.assertEqual(other_trait,
                         manifest.exhibits_traits[1].explicit_reference)
        self.assertEqual(added_trait, manifest.exhibits_traits[0])
        self.assertEqual(added_other_trait, manifest.exhibits_traits[1])
        self.assertEqual(added_incremental_trait, manifest.exhibits_traits[2])
        self.assertEqual(2, len(manifest.exhibits_traits[2].arguments))
        self.assertEqual(
            'test', manifest.exhibits_traits[2].arguments.fetch_value(
                Constants._INCREMENTAL_PATTERN_PARAMETER_NAME))
        self.assertEqual(
            'name', manifest.exhibits_traits[2].arguments.fetch_value(
                'fullDataPartitionPatternName'))

        self.assertEqual(manifest, manifest.exhibits_traits[0].owner)
    def test_cdm_trait_collection_add_range(self):
        manifest = generate_manifest('C:\\Root\\Path')

        trait = CdmTraitDefinition(manifest.ctx, 'TraitName', None)
        other_trait = CdmTraitDefinition(manifest.ctx, 'Name of other Trait', None)
        trait_list = [trait, other_trait]

        manifest.exhibits_traits.extend(trait_list)
        self.assertEqual(2, len(manifest.exhibits_traits))
        self.assertEqual(trait, manifest.exhibits_traits[0].explicit_reference)
        self.assertEqual(other_trait, manifest.exhibits_traits[1].explicit_reference)
        self.assertEqual(manifest, manifest.exhibits_traits[0].owner)
    async def test_refreshes_data_partition_patterns_with_trait(self):
        """Tests data partition objects created by a partition pattern do not share the same trait with the partition pattern"""
        test_name = 'test_refreshes_data_partition_patterns_with_trait'
        corpus = TestHelper.get_local_corpus(self.test_subpath, test_name)
        manifest = await corpus.fetch_object_async('local:/patternManifest.manifest.cdm.json')

        partition_entity = manifest.entities[0]
        self.assertEqual(1, len(partition_entity.data_partition_patterns))
        self.assertEqual(0, len(partition_entity.data_partitions))

        trait_def = CdmTraitDefinition(corpus.ctx, 'testTrait')
        trait_def.parameters.append(CdmParameterDefinition(corpus.ctx, 'argument value'))
        pattern_trait_ref = partition_entity.data_partition_patterns[0].exhibits_traits.append('testTrait')
        pattern_trait_ref.arguments.append('int', 1)
        pattern_trait_ref.arguments.append('bool', True)
        pattern_trait_ref.arguments.append('string', 'a')

        await manifest.file_status_check_async()

        self.assertEqual(2, len(partition_entity.data_partitions))
        pattern_trait_ref = partition_entity.data_partition_patterns[0].exhibits_traits.item('testTrait')
        self.assertEqual(1, pattern_trait_ref.arguments[0].value)
        self.assertTrue(pattern_trait_ref.arguments[1].value)
        pattern_trait_ref.arguments[0].value = 3
        pattern_trait_ref.arguments[1].value = False

        partition_trait_ref = partition_entity.data_partitions[0].exhibits_traits.item('testTrait')
        self.assertNotEqual(partition_trait_ref, pattern_trait_ref)
        self.assertEqual(1, partition_trait_ref.arguments[0].value)
        self.assertTrue(partition_trait_ref.arguments[1].value)
        partition_trait_ref.arguments[0].value = 2

        self.assertEqual(1, partition_entity.data_partitions[1].exhibits_traits.item('testTrait').arguments[0].value)
    def test_cdm_definition_collection_add(self):
        document = generate_manifest('C:\\Nothing')
        document._is_dirty = False

        attribute = CdmAttributeContext(document.ctx, 'the attribute')
        folder = CdmFolderDefinition(document.ctx, 'The folder')
        trait = CdmTraitDefinition(document.ctx, 'The trait')

        added_attribute = document.definitions.append(attribute)
        added_folder = document.definitions.append(folder)
        added_trait = document.definitions.append(trait)

        self.assertTrue(document._is_dirty)
        self.assertEqual(3, len(document.definitions))
        self.assertEqual(attribute, added_attribute)
        self.assertEqual(folder, added_folder)
        self.assertEqual(trait, added_trait)
        self.assertEqual(attribute, document.definitions[0])
        self.assertEqual(folder, document.definitions[1])
        self.assertEqual(trait, document.definitions[2])
        self.assertEqual(document, attribute.in_document)
        self.assertEqual(document, trait.in_document)
        self.assertEqual(document, attribute.owner)
        self.assertEqual(document, folder.owner)
        self.assertEqual(document, trait.owner)
Esempio n. 8
0
    def test_extends_trait_property_optional(self):
        corpus = CdmCorpusDefinition()
        extend_trait_ref1 = CdmTraitReference(corpus.ctx,
                                              'testExtendTraitName1', True)
        extend_trait_ref2 = CdmTraitReference(corpus.ctx,
                                              'testExtendTraitName2', True)
        trait_definition = CdmTraitDefinition(corpus.ctx, 'testTraitName',
                                              extend_trait_ref1)

        self.assertEqual(extend_trait_ref1, trait_definition.extends_trait)
        trait_definition.extends_trait = None
        self.assertIsNone(trait_definition.extends_trait)

        trait_definition.extends_trait = extend_trait_ref2
        self.assertEqual(extend_trait_ref2, trait_definition.extends_trait)
        trait_definition.extends_trait = None
        self.assertIsNone(trait_definition.extends_trait)
    def test_cdm_trait_collection_add(self):
        manifest = generate_manifest('C:\\Root\\Path')

        trait = CdmTraitDefinition(manifest.ctx, 'TraitName', None)
        other_trait = CdmTraitDefinition(manifest.ctx, 'Name of other Trait', None)
        manifest._trait_cache = dict()

        added_trait = manifest.exhibits_traits.append(trait)
        added_other_trait = manifest.exhibits_traits.append(other_trait)

        self.assertEqual(None, manifest._trait_cache)
        self.assertEqual(2, len(manifest.exhibits_traits))
        self.assertEqual(trait, manifest.exhibits_traits[0].explicit_reference)
        self.assertEqual(other_trait, manifest.exhibits_traits[1].explicit_reference)
        self.assertEqual(added_trait, manifest.exhibits_traits[0])
        self.assertEqual(added_other_trait, manifest.exhibits_traits[1])

        self.assertEqual(manifest, manifest.exhibits_traits[0].owner)
    def test_cdm_trait_collection_remove_at(self):
        manifest = generate_manifest("C:\\Root\\Path")

        trait = CdmTraitDefinition(manifest.ctx, "TraitName", None)
        other_trait = CdmTraitDefinition(manifest.ctx, "Name of other Trait",
                                         None)

        manifest.exhibits_traits.append(trait)
        manifest.exhibits_traits.append(other_trait)

        manifest.exhibits_traits.remove(trait)
        self.assertTrue(trait not in manifest.exhibits_traits)
        self.assertEqual(None, manifest._trait_cache)

        manifest.exhibits_traits.append(trait)
        manifest.exhibits_traits.pop(1)
        self.assertEqual(None, manifest._trait_cache)

        self.assertEqual(1, len(manifest.exhibits_traits))
        self.assertEqual(other_trait,
                         manifest.exhibits_traits[0].explicit_reference)
    def test_cdm_trait_collection_index_of(self):
        manifest = generate_manifest('C:\\Root\\Path')

        trait = CdmTraitDefinition(manifest.ctx, 'TraitName', None)
        other_trait = CdmTraitDefinition(manifest.ctx, 'Name of other Trait', None)

        manifest.exhibits_traits.append(trait)
        manifest.exhibits_traits.append(other_trait)

        index = manifest.exhibits_traits.index(trait)
        self.assertEqual(0, index)
        index = manifest.exhibits_traits.index(other_trait)
        self.assertEqual(1, index)

        index = manifest.exhibits_traits.index(manifest.exhibits_traits[0])
        self.assertEqual(0, index)
        index = manifest.exhibits_traits.index(manifest.exhibits_traits[1])
        self.assertEqual(1, index)

        index = manifest.exhibits_traits.index('TraitName')
        self.assertEqual(0, index)
        index = manifest.exhibits_traits.index('Name of other Trait')
        self.assertEqual(1, index)
    def test_cdm_definition_collection_add_range(self):
        document = generate_manifest()
        document._is_dirty = False

        attribute = CdmAttributeContext(document.ctx, 'the attribute')
        folder = CdmFolderDefinition(document.ctx, 'The folder')
        trait = CdmTraitDefinition(document.ctx, 'The trait')

        definitionsList = [attribute, folder, trait]
        document.definitions.extend(definitionsList)

        self.assertTrue(document._is_dirty)
        self.assertEqual(3, len(document.definitions))
        self.assertEqual(attribute, document.definitions[0])
        self.assertEqual(folder, document.definitions[1])
        self.assertEqual(trait, document.definitions[2])
        self.assertEqual(document, attribute.in_document)
        self.assertEqual(document, trait.in_document)
        self.assertEqual(document, attribute.owner)
        self.assertEqual(document, folder.owner)
        self.assertEqual(document, trait.owner)