Ejemplo n.º 1
0
    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')
Ejemplo n.º 2
0
    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')
Ejemplo n.º 3
0
    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']))
Ejemplo n.º 4
0
    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']))
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
    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']))
Ejemplo n.º 7
0
    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)
Ejemplo n.º 8
0
    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']))
Ejemplo n.º 9
0
    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)
Ejemplo n.º 10
0
    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']))
Ejemplo n.º 11
0
    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)
Ejemplo n.º 12
0
 def _build_root(self, d):
     root = Group('root', d)
     return root
Ejemplo n.º 13
0
    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']))
Ejemplo n.º 14
0
    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']))