def testNamespaceTypes(self): """Test cases for methods manipulating namespace names.""" ns = Namespace.builtin_namespaces(use_image_name=False) self.assertIsInstance(ns, dict) self.assertTrue(all(x in ns for x in range(0, 16))) self.assertTrue(all(isinstance(key, int) for key in ns)) self.assertTrue(all(isinstance(val, Iterable) for val in ns.values())) self.assertTrue(all(isinstance(name, basestring) for val in ns.values() for name in val)) self.assertTrue(all(isinstance(Namespace.lookup_name(b, ns), Namespace) for b in self.builtin_ids)) self.assertTrue(all(Namespace.lookup_name(b, ns).id == self.all_builtin_ids[b] for b in self.all_builtin_ids)) ns = Namespace.builtin_namespaces(use_image_name=True) self.assertTrue(all(isinstance(Namespace.lookup_name(b, ns), Namespace) for b in self.builtin_ids)) self.assertTrue(all(Namespace.lookup_name(b, ns).id == self.all_builtin_ids[b] for b in self.all_builtin_ids)) # Use a namespace object as a dict key self.assertEqual(ns[ns[6]], ns[6])
def test_lookup_name(self): """Test Namespace.lookup_name.""" file_nses = Namespace.builtin_namespaces(use_image_name=False) image_nses = Namespace.builtin_namespaces(use_image_name=True) for name, ns_id in builtin_ns.items(): file_ns = Namespace.lookup_name(name, file_nses) self.assertIsInstance(file_ns, Namespace) image_ns = Namespace.lookup_name(name, image_nses) self.assertIsInstance(image_ns, Namespace) with self.disable_assert_capture(): self.assertEqual(file_ns.id, ns_id) self.assertEqual(image_ns.id, ns_id)
def __init__(self, code, fam, user, sysop): """Constructor.""" super(DrySite, self).__init__(code, fam, user, sysop) self._userinfo = pywikibot.tools.EMPTY_DEFAULT self._siteinfo = DummySiteinfo({}) self._siteinfo._cache['lang'] = (code, True) self._namespaces = SelfCallDict(Namespace.builtin_namespaces())
def test_resolve_equal(self): """Test Namespace.resolve success.""" namespaces = Namespace.builtin_namespaces(use_image_name=False) main_ns = namespaces[0] file_ns = namespaces[6] special_ns = namespaces[-1] self.assertEqual(Namespace.resolve([6]), [file_ns]) self.assertEqual(Namespace.resolve(['File']), [file_ns]) self.assertEqual(Namespace.resolve(['6']), [file_ns]) self.assertEqual(Namespace.resolve([file_ns]), [file_ns]) self.assertEqual(Namespace.resolve([file_ns, special_ns]), [file_ns, special_ns]) self.assertEqual(Namespace.resolve([file_ns, file_ns]), [file_ns, file_ns]) self.assertEqual(Namespace.resolve(6), [file_ns]) self.assertEqual(Namespace.resolve('File'), [file_ns]) self.assertEqual(Namespace.resolve('6'), [file_ns]) self.assertEqual(Namespace.resolve(file_ns), [file_ns]) self.assertEqual(Namespace.resolve(0), [main_ns]) self.assertEqual(Namespace.resolve('0'), [main_ns]) self.assertEqual(Namespace.resolve(-1), [special_ns]) self.assertEqual(Namespace.resolve('-1'), [special_ns]) self.assertEqual(Namespace.resolve('File:'), [file_ns]) self.assertEqual(Namespace.resolve(':File'), [file_ns]) self.assertEqual(Namespace.resolve(':File:'), [file_ns]) self.assertEqual(Namespace.resolve('Image:'), [file_ns]) self.assertEqual(Namespace.resolve(':Image'), [file_ns]) self.assertEqual(Namespace.resolve(':Image:'), [file_ns])
def test_resolve(self): """Test Namespace.resolve.""" namespaces = Namespace.builtin_namespaces(use_image_name=False) main_ns = namespaces[0] file_ns = namespaces[6] special_ns = namespaces[-1] self.assertEqual(Namespace.resolve([6]), [file_ns]) self.assertEqual(Namespace.resolve(['File']), [file_ns]) self.assertEqual(Namespace.resolve(['6']), [file_ns]) self.assertEqual(Namespace.resolve([file_ns]), [file_ns]) self.assertEqual(Namespace.resolve([file_ns, special_ns]), [file_ns, special_ns]) self.assertEqual(Namespace.resolve([file_ns, file_ns]), [file_ns, file_ns]) self.assertEqual(Namespace.resolve(6), [file_ns]) self.assertEqual(Namespace.resolve('File'), [file_ns]) self.assertEqual(Namespace.resolve('6'), [file_ns]) self.assertEqual(Namespace.resolve(file_ns), [file_ns]) self.assertEqual(Namespace.resolve(0), [main_ns]) self.assertEqual(Namespace.resolve('0'), [main_ns]) self.assertEqual(Namespace.resolve(-1), [special_ns]) self.assertEqual(Namespace.resolve('-1'), [special_ns]) self.assertEqual(Namespace.resolve('File:'), [file_ns]) self.assertEqual(Namespace.resolve(':File'), [file_ns]) self.assertEqual(Namespace.resolve(':File:'), [file_ns]) self.assertEqual(Namespace.resolve('Image:'), [file_ns]) self.assertEqual(Namespace.resolve(':Image'), [file_ns]) self.assertEqual(Namespace.resolve(':Image:'), [file_ns]) self.assertRaises(TypeError, Namespace.resolve, [True]) self.assertRaises(TypeError, Namespace.resolve, [False]) self.assertRaises(TypeError, Namespace.resolve, [None]) self.assertRaises(TypeError, Namespace.resolve, True) self.assertRaises(TypeError, Namespace.resolve, False) self.assertRaises(TypeError, Namespace.resolve, None) self.assertRaises(KeyError, Namespace.resolve, -10) self.assertRaises(KeyError, Namespace.resolve, '-10') self.assertRaises(KeyError, Namespace.resolve, 'foo') self.assertRaises(KeyError, Namespace.resolve, ['foo']) self.assertRaisesRegex(KeyError, r'Namespace identifier\(s\) not recognised: -10', Namespace.resolve, [-10, 0]) self.assertRaisesRegex(KeyError, r'Namespace identifier\(s\) not recognised: foo', Namespace.resolve, [0, 'foo']) self.assertRaisesRegex(KeyError, r'Namespace identifier\(s\) not recognised: -10,-11', Namespace.resolve, [-10, 0, -11])
def test_set_minus(self): """Test performing set minus operation on set of Namespace objects.""" namespaces = Namespace.builtin_namespaces(use_image_name=False) excluded_namespaces = set([-1, -2]) positive_namespaces = set(namespaces) - excluded_namespaces self.assertEqual(len(namespaces), len(positive_namespaces) + len(excluded_namespaces))
def _build_namespaces(self): ns_dict = Namespace.builtin_namespaces(case=self.siteinfo['case']) if hasattr(self.family, 'authornamespaces'): assert len(self.family.authornamespaces[self.code]) <= 1 if self.family.authornamespaces[self.code]: author_ns = self.family.authornamespaces[self.code][0] assert author_ns not in ns_dict ns_dict[author_ns] = Namespace( author_ns, 'Author', case=self.siteinfo['case']) return ns_dict
def test_set_minus(self): """Test performing set minus operation on set of Namespace objects.""" namespaces = Namespace.builtin_namespaces(use_image_name=False) excluded_namespaces = {-1, -2} positive_namespaces = set(namespaces) - excluded_namespaces self.assertEqual(len(namespaces), len(positive_namespaces) + len(excluded_namespaces))
def test_set_minus(self): """Test performing set minus operation on set of Namespace objects.""" namespaces = Namespace.builtin_namespaces() excluded_namespaces = {-1, -2} positive_namespaces = set(namespaces) - excluded_namespaces self.assertLength(namespaces, len(positive_namespaces) + len(excluded_namespaces))
def test_set(self): """Test converting sequence of Namespace to a set.""" namespaces = Namespace.builtin_namespaces(use_image_name=False) self.assertTrue(all(isinstance(x, int) for x in namespaces)) self.assertTrue(all(isinstance(x, int) for x in namespaces.keys())) self.assertTrue(all(isinstance(x, Namespace) for x in namespaces.values())) namespaces_set = set(namespaces) self.assertEqual(len(namespaces), len(namespaces_set)) self.assertTrue(all(isinstance(x, int) for x in namespaces_set))
def __init__(self, code, fam, user, sysop): """Constructor.""" super(DrySite, self).__init__(code, fam, user, sysop) self._userinfo = pywikibot.tools.EMPTY_DEFAULT self._paraminfo = DryParamInfo() self._siteinfo = DummySiteinfo({}) self._siteinfo._cache['lang'] = (code, True) self._siteinfo._cache['case'] = ( 'case-sensitive' if self.family.name == 'wiktionary' else 'first-letter', True) self._namespaces = SelfCallDict( Namespace.builtin_namespaces( case=self.siteinfo['case']))
def test_set(self): """Test converting sequence of Namespace to a set.""" namespaces = Namespace.builtin_namespaces(use_image_name=False) self.assertTrue(all(isinstance(x, int) for x in namespaces)) self.assertTrue(all(isinstance(x, int) for x in namespaces.keys())) self.assertTrue( all(isinstance(x, Namespace) for x in namespaces.values())) namespaces_set = set(namespaces) self.assertEqual(len(namespaces), len(namespaces_set)) self.assertTrue(all(isinstance(x, int) for x in namespaces_set))
def test_set(self): """Test converting sequence of Namespace to a set.""" namespaces = Namespace.builtin_namespaces() self.assertTrue(all(isinstance(x, int) for x in namespaces)) self.assertTrue(all(isinstance(x, int) for x in namespaces.keys())) self.assertTrue(all(isinstance(x, Namespace) for x in namespaces.values())) namespaces_set = set(namespaces) self.assertLength(namespaces, namespaces_set) self.assertTrue(all(isinstance(x, int) for x in namespaces_set))
def testNamespaceTypes(self): """Test cases for methods manipulating Namespace names.""" ns = Namespace.builtin_namespaces() self.assertIsInstance(ns, dict) self.assertTrue(all(x in ns for x in range(0, 16))) self.assertTrue(all(isinstance(key, int) for key in ns)) self.assertTrue(all(isinstance(val, Iterable) for val in ns.values())) self.assertTrue( all(isinstance(name, str) for val in ns.values() for name in val)) # Use a namespace object as a dict key self.assertEqual(ns[ns[6]], ns[6])
def testNamespaceToString(self): """Test Namespace __str__.""" ns = Namespace.builtin_namespaces() self.assertEqual(str(ns[0]), ':') self.assertEqual(str(ns[1]), 'Talk:') self.assertEqual(str(ns[6]), ':File:') kwargs = {'case': 'first-letter'} y = Namespace(id=6, custom_name='ملف', canonical_name='File', aliases=['Image', 'Immagine'], **kwargs) self.assertEqual(str(y), ':File:') self.assertEqual(y.canonical_prefix(), ':File:') self.assertEqual(y.custom_prefix(), ':ملف:')
def testNamespaceToString(self): ns = Namespace.builtin_namespaces(use_image_name=False) self.assertEqual(str(ns[0]), ':') self.assertEqual(str(ns[1]), 'Talk:') self.assertEqual(str(ns[6]), ':File:') self.assertEqual(unicode(ns[0]), u':') self.assertEqual(unicode(ns[1]), u'Talk:') self.assertEqual(unicode(ns[6]), u':File:') kwargs = {u'case': u'first-letter'} y = Namespace(id=6, custom_name=u'ملف', canonical_name=u'File', aliases=[u'Image', u'Immagine'], **kwargs) self.assertEqual(str(y), ':File:') if sys.version_info[0] <= 2: self.assertEqual(unicode(y), u':ملف:') self.assertEqual(y.canonical_prefix(), ':File:') self.assertEqual(y.custom_prefix(), u':ملف:')
def builtin_NamespacesDict(): """Return a NamespacesDict of the builtin namespaces.""" return NamespacesDict(Namespace.builtin_namespaces())
def _build_namespaces(self): return Namespace.builtin_namespaces(case=self.siteinfo['case'])