def test_cyclic(self): d = {} root = self._build_root(d) g2 = Group('g2', d) g3 = Group('g3', d) g2.add_groups('g3') self.assertRaises(ValueError, g2.add_groups, 'root') self.assertRaises(ValueError, g3.add_groups, 'g2') self.assertRaises(ValueError, g3.add_groups, 'root')
def test_using1(self): lines = [ '@group mygroup using group1', 'meter', 'second', ] d = {} root = self._build_root(d) g = Group('group1', d) grp = Group.from_lines(lines, lambda x: None, d) self.assertEqual(grp.name, 'mygroup') self.assertEqual(grp._unit_names, set(['meter', 'second'])) self.assertEqual(grp._used_groups, set(['group1'])) self.assertEqual(grp.members, frozenset(['meter', 'second']))
def test_groups_programatically(self): d = {} root = self._build_root(d) g2 = Group('g2', d) self.assertEqual(set(d.keys()), set(['root', 'g2'])) self.assertEqual(root._used_groups, set(['g2'])) self.assertEqual(root._used_by, set()) self.assertEqual(g2._used_groups, set()) self.assertEqual(g2._used_by, set(['root']))
def test_invalidate_members(self): lines = [ '@group mygroup using group1', 'meter', 'second', ] d = {} root = self._build_root(d) g1 = Group('group1', d) grp = Group.from_lines(lines, lambda x: None, d) self.assertIs(root._computed_members, None) self.assertIs(grp._computed_members, None) self.assertEqual(grp.members, frozenset(['meter', 'second'])) self.assertIs(root._computed_members, None) self.assertIsNot(grp._computed_members, None) self.assertEqual(root.members, frozenset(['meter', 'second'])) self.assertIsNot(root._computed_members, None) self.assertIsNot(grp._computed_members, None) grp.invalidate_members() self.assertIs(root._computed_members, None) self.assertIs(grp._computed_members, None)
def test_using1(self): lines = ['@group mygroup using group1', 'meter', 'second', ] d = {} root = self._build_root(d) g = Group('group1', d) grp = Group.from_lines(lines, lambda x: None, d) self.assertEqual(grp.name, 'mygroup') self.assertEqual(grp._unit_names, set(['meter', 'second'])) self.assertEqual(grp._used_groups, set(['group1'])) self.assertEqual(grp.members, frozenset(['meter', 'second']))
def test_with_defintions(self): lines = [ '@group imperial', 'inch', 'yard', 'kings_leg = 2 * meter', 'kings_head = 52 * inch' 'pint' ] defs = [] def define(ud): defs.append(ud.name) d = {} root = self._build_root(d) grp = Group.from_lines(lines, define, d) self.assertEqual(['kings_leg', 'kings_head'], defs)
def test_simple(self): lines = ['@group mygroup', 'meter', 'second', ] d = {} root = self._build_root(d) grp = Group.from_lines(lines, lambda x: None, d) self.assertEqual(set(d.keys()), set(['root', 'mygroup'])) self.assertEqual(grp.name, 'mygroup') self.assertEqual(grp._unit_names, set(['meter', 'second'])) self.assertEqual(grp._used_groups, set()) self.assertEqual(grp._used_by, set([root.name])) self.assertEqual(grp.members, frozenset(['meter', 'second']))
def test_with_defintions(self): lines = ['@group imperial', 'inch', 'yard', 'kings_leg = 2 * meter', 'kings_head = 52 * inch' 'pint' ] defs = [] def define(ud): defs.append(ud.name) d = {} root = self._build_root(d) grp = Group.from_lines(lines, define, d) self.assertEqual(['kings_leg', 'kings_head'], defs)
def test_simple(self): lines = [ '@group mygroup', 'meter', 'second', ] d = {} root = self._build_root(d) grp = Group.from_lines(lines, lambda x: None, d) self.assertEqual(set(d.keys()), set(['root', 'mygroup'])) self.assertEqual(grp.name, 'mygroup') self.assertEqual(grp._unit_names, set(['meter', 'second'])) self.assertEqual(grp._used_groups, set()) self.assertEqual(grp._used_by, set([root.name])) self.assertEqual(grp.members, frozenset(['meter', 'second']))
def test_invalidate_members(self): lines = ['@group mygroup using group1', 'meter', 'second', ] d = {} root = self._build_root(d) g1 = Group('group1', d) grp = Group.from_lines(lines, lambda x: None, d) self.assertIs(root._computed_members, None) self.assertIs(grp._computed_members, None) self.assertEqual(grp.members, frozenset(['meter', 'second'])) self.assertIs(root._computed_members, None) self.assertIsNot(grp._computed_members, None) self.assertEqual(root.members, frozenset(['meter', 'second'])) self.assertIsNot(root._computed_members, None) self.assertIsNot(grp._computed_members, None) grp.invalidate_members() self.assertIs(root._computed_members, None) self.assertIs(grp._computed_members, None)
def _build_root(self, d): root = Group('root', d) return root
def test_members_including(self): d = {} root = self._build_root(d) g1 = Group('group1', d) g1.add_units('second', 'inch') g2 = Group('group2', d) g2.add_units('second', 'newton') g3 = Group('group3', d) g3.add_units('meter', 'second') g3.add_groups('group1', 'group2') self.assertEqual(root.members, frozenset(['meter', 'second', 'newton', 'inch'])) self.assertEqual(g1.members, frozenset(['second', 'inch'])) self.assertEqual(g2.members, frozenset(['second', 'newton'])) self.assertEqual(g3.members, frozenset(['meter', 'second', 'newton', 'inch']))