def testQuerySchema_noDescriptor(self): provider = MetadataSourceAggregator(sources, map) schema = provider.QuerySchema([]) self.assertEquals( "<?xml version='1.0' encoding='UTF-8'?>\n" + "<DescriptionScheme>\n" + " <Attributes/>\n" + "</DescriptionScheme>\n" + "", self.dumpXml(schema))
def testAggregatorScriptBuilding_partialSecondSource(self): provider = MetadataSourceAggregator(sources, map) (script, sourceIds) = provider._AggregatorScriptFor( ["Song::DynamicComplexity"]) self.assertEquals( "copy 1 WaveFile::Complexity Song::DynamicComplexity\n" + "", script) self.assertEquals(["source2"], sourceIds)
def testQueryDescriptors_singleDescriptor(self): provider = MetadataSourceAggregator(sources, map) descriptors = provider.QueryDescriptors('id1', ["Song::Artist"]) self.assertEquals( "<?xml version='1.0' encoding='UTF-8'?>\n" + "<DescriptorsPool>\n" + " <ScopePool name='Song' size='1'>\n" + " <AttributePool name='Artist'>Artist 1</AttributePool>\n" + " </ScopePool>\n" + "</DescriptorsPool>\n" + "", self.dumpXml(descriptors))
def testUpdateDescriptors_noDescriptor(self): provider = MetadataSourceAggregator(sources, map) descriptors = provider.QueryDescriptors('id1', []) provider.UpdateDescriptors('newId', descriptors) descriptors = provider.QueryDescriptors('newId', []) self.assertEquals( "<?xml version='1.0' encoding='UTF-8'?>\n" + "<DescriptorsPool/>\n" + "", self.dumpXml(descriptors))
def testQuerySchema_singleSource(self): provider = MetadataSourceAggregator(sources, map) schema = provider.QuerySchema(["Song::Artist"]) self.assertEquals( "<?xml version='1.0' encoding='UTF-8'?>\n" + "<DescriptionScheme>\n" + " <Attributes>\n" + " <Attribute scope='Song' name='Artist' type='String'/>\n" + " </Attributes>\n" + "</DescriptionScheme>\n" + "", self.dumpXml(schema))
def testAvailableDescriptors(self): provider = MetadataSourceAggregator(sources, map) attributeIds = provider.AvailableDescriptors() expectedAttributeIds = [ "Song::Artist", "Song::Title", "Song::Genre", "Song::DynamicComplexity", "Frame::Energy", ] self.assertEquals(expectedAttributeIds, attributeIds)
def testDisgregatorScriptsBuilding_severalSources(self): provider = MetadataSourceAggregator(sources, map) script = provider._DisgregatorScripts(["Song::Artist", "Song::Title", "Song::DynamicComplexity"]) self.assertEquals( { "source1": "copy 1 Song::Artist File::Singer\n" + "copy 1 Song::Title File::Name\n", "source2": "copy 1 Song::DynamicComplexity WaveFile::Complexity\n", "source3": "", }, script, )
def testAggregatorScriptBuilding_severalSources(self): provider = MetadataSourceAggregator(sources, map) (script, sourceIds) = provider._AggregatorScriptFor(["Song::Artist", "Song::Title", "Song::DynamicComplexity"]) self.assertEquals( "copy 1 File::Singer Song::Artist\n" + "copy 1 File::Name Song::Title\n" + "copy 2 WaveFile::Complexity Song::DynamicComplexity\n" + "", script, ) self.assertEquals(["source1", "source2"], sourceIds)
def testQuerySchema_otherSource(self): provider = MetadataSourceAggregator(sources, map) schema = provider.QuerySchema([ "Song::DynamicComplexity", ]) self.assertEquals( "<?xml version='1.0' encoding='UTF-8'?>\n" + "<DescriptionScheme>\n" + " <Attributes>\n" + " <Attribute scope='Song' name='DynamicComplexity' type='Float'>\n" + " <fRange>\n" + " <Min>0</Min>\n" + " <Max>10</Max>\n" + " </fRange>\n" + " </Attribute>\n" + " </Attributes>\n" + "</DescriptionScheme>\n" + "", self.dumpXml(schema))
def testAggregatorScriptBuilding_severalSources(self): provider = MetadataSourceAggregator(sources, map) (script, sourceIds) = provider._AggregatorScriptFor([ "Song::Artist", "Song::Title", "Song::DynamicComplexity", ]) self.assertEquals( "copy 1 File::Singer Song::Artist\n" + "copy 1 File::Name Song::Title\n" + "copy 2 WaveFile::Complexity Song::DynamicComplexity\n" + "", script) self.assertEquals(["source1", "source2"], sourceIds)
def testQueryDescriptors_multipleDescriptors(self): provider = MetadataSourceAggregator(sources, map) descriptors = provider.QueryDescriptors('id1', [ "Song::Artist", "Song::Title", "Song::DynamicComplexity", ]) self.assertEquals( "<?xml version='1.0' encoding='UTF-8'?>\n" + "<DescriptorsPool>\n" + " <ScopePool name='Song' size='1'>\n" + " <AttributePool name='Artist'>Artist 1</AttributePool>\n" + " <AttributePool name='Title'>Title 1</AttributePool>\n" + " <AttributePool name='DynamicComplexity'>8.1</AttributePool>\n" + " </ScopePool>\n" + "</DescriptorsPool>\n" + "", self.dumpXml(descriptors))
def testDisgregatorScriptsBuilding_severalSources(self): provider = MetadataSourceAggregator(sources, map) script = provider._DisgregatorScripts([ "Song::Artist", "Song::Title", "Song::DynamicComplexity", ]) self.assertEquals( { "source1": "copy 1 Song::Artist File::Singer\n" + "copy 1 Song::Title File::Name\n", "source2": "copy 1 Song::DynamicComplexity WaveFile::Complexity\n", "source3": "" }, script)
def testUpdateDescriptors_partialPool(self): provider = MetadataSourceAggregator(sources, map) # Init newId just with some attributes of id1 attributeIds = [ "Song::Artist", "Song::Title", ] poolToCopy = provider.QueryDescriptors('id1', attributeIds) provider.UpdateDescriptors('newId', poolToCopy) # Merge them with some others from id2 poolToCopy = provider.QueryDescriptors('id2', attributeIds) attributeIds = [ "Song::Artist", ] provider.UpdateDescriptors('newId', poolToCopy, attributeIds) attributeIds = [ "Song::Artist", "Song::Title", ] descriptors = provider.QueryDescriptors('newId', attributeIds) self.assertEquals( "<?xml version='1.0' encoding='UTF-8'?>\n" + "<DescriptorsPool>\n" + " <ScopePool name='Song' size='1'>\n" + " <AttributePool name='Artist'>Artist 2</AttributePool>\n" + " <AttributePool name='Title'>Title 1</AttributePool>\n" + " </ScopePool>\n" + "</DescriptorsPool>\n" + "", self.dumpXml(descriptors))
def testAggregatorScriptBuilding_partialThirdSource(self): provider = MetadataSourceAggregator(sources, map) (script, sourceIds) = provider._AggregatorScriptFor(["Frame::Energy"]) self.assertEquals("copy 1 Frame::SpectralEnergy Frame::Energy\n" + "", script) self.assertEquals(["source3"], sourceIds)
def testAggregatorScriptBuilding_partialSecondSource(self): provider = MetadataSourceAggregator(sources, map) (script, sourceIds) = provider._AggregatorScriptFor(["Song::DynamicComplexity"]) self.assertEquals("copy 1 WaveFile::Complexity Song::DynamicComplexity\n" + "", script) self.assertEquals(["source2"], sourceIds)
def testAggregatorScriptBuilding_partialFirstSource(self): provider = MetadataSourceAggregator(sources, map) (script, sourceIds) = provider._AggregatorScriptFor(["Song::Artist"]) self.assertEquals("copy 1 File::Singer Song::Artist\n" + "", script) self.assertEquals(["source1"], sourceIds)
def testAggregatorScriptBuilding_partialFirstSource(self): provider = MetadataSourceAggregator(sources, map) (script, sourceIds) = provider._AggregatorScriptFor(["Song::Artist"]) self.assertEquals("copy 1 File::Singer Song::Artist\n" + "", script) self.assertEquals(["source1"], sourceIds)
("ExtractedChord::ChordRoot", "chord", "ExtractedChord::Root"), ("ExtractedChord::ChordMode", "chord", "ExtractedChord::Mode"), ] #Here we load new values from configuration file, if it exists if options.ConfigurationFile is not None: if not os.access(options.ConfigurationFile, os.R_OK): print >> sys.stderr, "Bad Configuration File!" sys.exit(-1) execfile(options.ConfigurationFile) provider = MetadataSourceAggregator(config.sources, config.map, verbose=config.verbose) if options.printSchema is not None: target = sys.stdout if options.printSchema == "-" else open( options.printSchema, 'w') provider.QuerySchema(provider.AvailableDescriptors()).Dump(target) sys.exit() if not args: parser.print_help() sys.exit() #if options.writeback: sys.exit() for audiofile in args:
def testAggregatorScriptBuilding_partialThirdSource(self): provider = MetadataSourceAggregator(sources, map) (script, sourceIds) = provider._AggregatorScriptFor(["Frame::Energy"]) self.assertEquals("copy 1 Frame::SpectralEnergy Frame::Energy\n" + "", script) self.assertEquals(["source3"], sourceIds)