def test_merge(self): DATA0 = ['one', 'two', 'three', 'four'] DATA1 = ['one', 'three', 'five', 'seven'] c = Classes(DATA0) c.merge(DATA1) assert len(c) == 6 assert c[:4] == DATA0 assert c[4] == DATA1[2] assert c[5] == DATA1[3]
def _populate_with_class_mappings(self, nodename): if not self._class_mappings: return Entity(name="empty") c = Classes() for mapping in self._class_mappings: matched = False key, klasses = Core._shlex_split(mapping) if key[0] == ("/"): matched = Core._match_regexp(key[1:-1], nodename) if matched: for klass in klasses: c.append_if_new(matched.expand(klass)) else: if Core._match_glob(key, nodename): for klass in klasses: c.append_if_new(klass) return Entity(classes=c, name="class mappings for node {0}".format(nodename))
def _get_class_mappings_entity(self, nodename): if not self._class_mappings: return Entity(name='empty (class mappings)') c = Classes() for mapping in self._class_mappings: matched = False key, klasses = Core._shlex_split(mapping) if key[0] == ('/'): matched = Core._match_regexp(key[1:-1], nodename) if matched: for klass in klasses: c.append_if_new(matched.expand(klass)) else: if Core._match_glob(key, nodename): for klass in klasses: c.append_if_new(klass) return Entity(classes=c, name='class mappings for node {0}'.format(nodename))
def _get_class_mappings_entity(self, entity): if not self._class_mappings: return Entity(self._settings, name='empty (class mappings)') c = Classes() if self._settings.class_mappings_match_path: matchname = entity.pathname else: matchname = entity.name for mapping in self._class_mappings: matched = False key, klasses = Core._shlex_split(mapping) if key[0] == ('/'): matched = Core._match_regexp(key[1:-1], matchname) if matched: for klass in klasses: c.append_if_new(matched.expand(klass)) else: if Core._match_glob(key, matchname): for klass in klasses: c.append_if_new(klass) return Entity(self._settings, classes=c, name='class mappings for node {0}'.format(entity.name))
def _populate_with_class_mappings(self, nodename): if not self._class_mappings: return Entity(name='empty') c = Classes() for mapping in self._class_mappings: matched = False key, klasses = Core._shlex_split(mapping) if key[0] == ('/'): matched = Core._match_regexp(key[1:-1], nodename) if matched: for klass in klasses: c.append_if_new(matched.expand(klass)) else: if Core._match_glob(key, nodename): for klass in klasses: c.append_if_new(klass) return Entity(classes=c, name='class mappings for node {0}'.format(nodename))
def test_constructor(self): with mock.patch.object(Classes, 'merge_unique') as m: c = Classes(TESTLIST1) m.assert_called_once_with(TESTLIST1)
def test_append_if_new_nonstring(self): c = Classes() with self.assertRaises(TypeError): c.append_if_new(0)
def test_as_list(self): c = Classes(TESTLIST1) self.assertListEqual(c.as_list(), TESTLIST1)
def test_append_if_new_duplicate(self): c = Classes(TESTLIST1) c.append_if_new(TESTLIST1[0]) self.assertEqual(len(c), len(TESTLIST1)) self.assertSequenceEqual(c, TESTLIST1)
def test_merge_unique_nonstring(self): c = Classes() with self.assertRaises(TypeError): c.merge_unique([0, 1, 2])
def test_inequality(self): self.assertNotEqual(Classes(TESTLIST1), Classes(TESTLIST2))
def test_append_if_new(self): c = Classes() c.append_if_new(TESTLIST1[0]) self.assertEqual(len(c), 1) self.assertSequenceEqual(c, TESTLIST1[:1])
def test_equality_list_empty(self): self.assertEqual(Classes(), [])
def test_equality_instance_empty(self): self.assertEqual(Classes(), Classes())
def test_append_invalid_characters(self): c = Classes() invalid_name = ' '.join(('foo', 'bar')) with self.assertRaises(InvalidClassnameError) as e: c.append_if_new(invalid_name) self.assertEqual(e.exception.message, "Invalid character ' ' in class name 'foo bar'.")
def test_merge_unique_duplicate2_instance(self): c = Classes(TESTLIST1) c.merge_unique(Classes(TESTLIST2 + TESTLIST2)) self.assertSequenceEqual(c, TESTLIST1 + TESTLIST2)
def test_merge_unique_duplicate1_list(self): c = Classes(TESTLIST1) c.merge_unique(TESTLIST1) self.assertSequenceEqual(c, TESTLIST1)
def test_merge_unique(self): c = Classes(TESTLIST1) c.merge_unique(TESTLIST2) self.assertSequenceEqual(c, TESTLIST1 + TESTLIST2)
def test_append_invalid_characters(self): c = Classes() invalid_name = ' '.join(('foo', 'bar')) with self.assertRaises(InvalidClassnameError): c.append_if_new(invalid_name)
def test_equality_list(self): self.assertEqual(Classes(TESTLIST1), TESTLIST1)
def test_equality_instance(self): self.assertEqual(Classes(TESTLIST1), Classes(TESTLIST1))
def test_construct_duplicates(self): c = Classes(TESTLIST1 + TESTLIST1) self.assertSequenceEqual(c, TESTLIST1)
def test_repr_contents(self): c = Classes(TESTLIST1) self.assertEqual('%r' % c, '%s(%r)' % (c.__class__.__name__, TESTLIST1))
def test_repr_empty(self): c = Classes() self.assertEqual('%r' % c, '%s(%r)' % (c.__class__.__name__, []))
def test_len_empty(self): with mock.patch.object(Classes, 'merge_unique') as m: c = Classes() self.assertEqual(len(c), 0) self.assertFalse(m.called)
def _make_instances(self, Classes, Applications, Parameters, Exports): return Classes(), Applications(), Parameters(), Exports()
def test_merge_unique_nonstring(self): c = Classes() with self.assertRaises(TypeError): c.merge_unique([0,1,2])