def test_identifiers(self): # {{{ def idt(val, scheme=None, iid=''): return '<dc:identifier id="{id}" {scheme}>{val}</dc:identifier>'.format(scheme=('opf:scheme="%s"'%scheme if scheme else ''), val=val, id=iid) def ri(root): return dict(read_identifiers(root, read_prefixes(root), default_refines)) for m, result in ( (idt('abc', 'ISBN'), {}), (idt('isbn:9780230739581'), {'isbn':['9780230739581']}), (idt('urn:isbn:9780230739581'), {'isbn':['9780230739581']}), (idt('9780230739581', 'ISBN'), {'isbn':['9780230739581']}), (idt('isbn:9780230739581', 'ISBN'), {'isbn':['9780230739581']}), (idt('key:val'), {'key':['val']}), (idt('url:http://x'), {'url':['http://x']}), (idt('a:1')+idt('a:2'), {'a':['1', '2']}), ): self.ae(result, ri(self.get_opf(m))) root = self.get_opf(metadata=idt('a:1')+idt('a:2')+idt('calibre:x')+idt('uuid:y')) mi = read_metadata(root) self.ae(mi.application_id, 'x') set_application_id(root, {}, default_refines, 'y') mi = read_metadata(root) self.ae(mi.application_id, 'y') root = self.get_opf(metadata=idt('i:1', iid='uid') + idt('r:1') + idt('o:1')) set_identifiers(root, read_prefixes(root), default_refines, {'i':'2', 'o':'2'}) self.ae({'i':['2', '1'], 'r':['1'], 'o':['2']}, ri(root)) self.ae(1, len(XPath('//dc:identifier[@id="uid"]')(root))) root = self.get_opf(metadata=idt('i:1', iid='uid') + idt('r:1') + idt('o:1')) set_identifiers(root, read_prefixes(root), default_refines, {'i':'2', 'o':'2'}, force_identifiers=True) self.ae({'i':['2', '1'], 'o':['2']}, ri(root)) root = self.get_opf(metadata=idt('i:1', iid='uid') + idt('r:1') + idt('o:1')) set_application_id(root, {}, default_refines, 'y') mi = read_metadata(root) self.ae(mi.application_id, 'y')