示例#1
0
    def test_map_path_slash_2_dot_dotdot_root_abs(self):
        pmods = pmods_from_tuples([('/', '.')])
        self.assertEqual(pmods.map_path('/'), '')
        self.assertEqual(pmods.map_path('/a'), '/a')
        self.assertEqual(pmods.map_path('/a/b'), '/a/b')
        self.assertEqual(pmods.map_path(''), '')

        pmods = pmods_from_tuples([('/', '..')])
        self.assertEqual(pmods.map_path('/'), '')
        self.assertEqual(pmods.map_path('/a'), '/a')
        self.assertEqual(pmods.map_path('/a/b'), '/a/b')
        self.assertEqual(pmods.map_path(''), '')

        pmods = pmods_from_tuples([('/', '')])
        self.assertEqual(pmods.map_path('/'), '')
        self.assertEqual(pmods.map_path('/a'), '/a')
        self.assertEqual(pmods.map_path('/a/b'), '/a/b')
        self.assertEqual(pmods.map_path(''), '')

        pmods = pmods_from_tuples([('/', '/')])
        self.assertEqual(pmods.map_path('/'), '')
        self.assertEqual(pmods.map_path('/a'), '/a')
        self.assertEqual(pmods.map_path('/a/b'), '/a/b')
        self.assertEqual(pmods.map_path(''), '')

        pmods = pmods_from_tuples([('/', '/A/B')])
        self.assertEqual(pmods.map_path('/'), '/A/B')
        self.assertEqual(pmods.map_path('/a'), '/a')
        self.assertEqual(pmods.map_path('/a/b'), '/a/b')
        self.assertEqual(pmods.map_path(''), '')
示例#2
0
    def test_map_path_slash_2_dot_dotdot_root_abs(self):
        pmods = pmods_from_tuples([("/", ".")])
        self.assertEqual(pmods.map_path("/"), "")
        self.assertEqual(pmods.map_path("/a"), "/a")
        self.assertEqual(pmods.map_path("/a/b"), "/a/b")
        self.assertEqual(pmods.map_path(""), "")

        pmods = pmods_from_tuples([("/", "..")])
        self.assertEqual(pmods.map_path("/"), "")
        self.assertEqual(pmods.map_path("/a"), "/a")
        self.assertEqual(pmods.map_path("/a/b"), "/a/b")
        self.assertEqual(pmods.map_path(""), "")

        pmods = pmods_from_tuples([("/", "")])
        self.assertEqual(pmods.map_path("/"), "")
        self.assertEqual(pmods.map_path("/a"), "/a")
        self.assertEqual(pmods.map_path("/a/b"), "/a/b")
        self.assertEqual(pmods.map_path(""), "")

        pmods = pmods_from_tuples([("/", "/")])
        self.assertEqual(pmods.map_path("/"), "")
        self.assertEqual(pmods.map_path("/a"), "/a")
        self.assertEqual(pmods.map_path("/a/b"), "/a/b")
        self.assertEqual(pmods.map_path(""), "")

        pmods = pmods_from_tuples([("/", "/A/B")])
        self.assertEqual(pmods.map_path("/"), "/A/B")
        self.assertEqual(pmods.map_path("/a"), "/a")
        self.assertEqual(pmods.map_path("/a/b"), "/a/b")
        self.assertEqual(pmods.map_path(""), "")
示例#3
0
 def test_pmods_from_tuple_ignores_empties(self):
     # Ignored by :func:`pmods_from_tuples().
     pmods = pmods_from_tuples([('', '')])
     self.assertEqual(pmods, Pmod())
     pmods = pmods_from_tuples([('spam', None)])
     self.assertEqual(pmods, Pmod())
     pmods = pmods_from_tuples([(None, 'spam')])
     self.assertEqual(pmods, Pmod())
示例#4
0
 def test_pmods_from_tuples_rootMapping(self):
     self.assertEqual(
         pmods_from_tuples([("", "A/B")]), Pmod(_steps={"": Pmod(_alias="A/B")})
     )
     self.assertEqual(
         pmods_from_tuples([("/", "A/B")]),
         Pmod(_steps={"": Pmod(_steps={"": Pmod(_alias="A/B")})}),
     )
示例#5
0
 def test_pmods_from_tuple_ignores_empties(self):
     # Ignored by :func:`pmods_from_tuples().
     pmods = pmods_from_tuples([("", "")])
     self.assertEqual(pmods, Pmod())
     pmods = pmods_from_tuples([("spam", None)])
     self.assertEqual(pmods, Pmod())
     pmods = pmods_from_tuples([(None, "spam")])
     self.assertEqual(pmods, Pmod())
示例#6
0
    def test_map_path_2_dot(self):
        pmods = pmods_from_tuples([('/a', '.')])
        self.assertEqual(pmods.map_path('/a'), '/a')
        self.assertEqual(pmods.map_path('/a/b'), '/a/b')
        self.assertEqual(pmods.map_path('/b'), '/b')

        pmods = pmods_from_tuples([('/a', './bb')])
        self.assertEqual(pmods.map_path('/a'), '/a/bb')
        self.assertEqual(pmods.map_path('/a/b'), '/a/bb/b')
        self.assertEqual(pmods.map_path('/b/c'), '/b/c')
示例#7
0
    def test_map_path_2_dot(self):
        pmods = pmods_from_tuples([("/a", ".")])
        self.assertEqual(pmods.map_path("/a"), "/a")
        self.assertEqual(pmods.map_path("/a/b"), "/a/b")
        self.assertEqual(pmods.map_path("/b"), "/b")

        pmods = pmods_from_tuples([("/a", "./bb")])
        self.assertEqual(pmods.map_path("/a"), "/a/bb")
        self.assertEqual(pmods.map_path("/a/b"), "/a/bb/b")
        self.assertEqual(pmods.map_path("/b/c"), "/b/c")
示例#8
0
    def test_map_path_rootMapped_absolute(self):
        pm = pmods_from_tuples([('', '/root')])
        self.assertEqual(pm.map_path(''), '/root')
        self.assertEqual(pm.map_path('/a'), '/root/a')
        # self.assertEqual(pm.map_path('/'), '/root')  ## TODO: FIX map2slash

        pm = pmods_from_tuples([('', '/root'), ('/', 'root2')])
        self.assertEqual(pm.map_path(''), '/root')
        self.assertEqual(pm.map_path('/a'), '/root/a')
        self.assertEqual(pm.map_path('/'), '/root/root2')
示例#9
0
    def test_map_path_rootMapped_absolute(self):
        pm = pmods_from_tuples([("", "/root")])
        self.assertEqual(pm.map_path(""), "/root")
        self.assertEqual(pm.map_path("/a"), "/root/a")
        # self.assertEqual(pm.map_path('/'), '/root')  ## TODO: FIX map2slash

        pm = pmods_from_tuples([("", "/root"), ("/", "root2")])
        self.assertEqual(pm.map_path(""), "/root")
        self.assertEqual(pm.map_path("/a"), "/root/a")
        self.assertEqual(pm.map_path("/"), "/root/root2")
示例#10
0
    def test_map_path_2_abs(self):
        pmods = pmods_from_tuples([('/a', '/A')])
        self.assertEqual(pmods.map_path('/a'), '/A')
        self.assertEqual(pmods.map_path('/a/b'), '/A/b')
        self.assertEqual(pmods.map_path('/A/b'), '/A/b')

        pmods = pmods_from_tuples([('/a/b', '/A/AA')])
        self.assertEqual(pmods.map_path('/a'), '/a')
        self.assertEqual(pmods.map_path('/a/b'), '/A/AA')
        self.assertEqual(pmods.map_path('/a/b/c'), '/A/AA/c')
        self.assertEqual(pmods.map_path('/A/AA/c'), '/A/AA/c')
示例#11
0
    def test_map_path_2_abs(self):
        pmods = pmods_from_tuples([("/a", "/A")])
        self.assertEqual(pmods.map_path("/a"), "/A")
        self.assertEqual(pmods.map_path("/a/b"), "/A/b")
        self.assertEqual(pmods.map_path("/A/b"), "/A/b")

        pmods = pmods_from_tuples([("/a/b", "/A/AA")])
        self.assertEqual(pmods.map_path("/a"), "/a")
        self.assertEqual(pmods.map_path("/a/b"), "/A/AA")
        self.assertEqual(pmods.map_path("/a/b/c"), "/A/AA/c")
        self.assertEqual(pmods.map_path("/A/AA/c"), "/A/AA/c")
示例#12
0
    def test_map_path_rootMapped(self):

        pm = pmods_from_tuples([
            ('', 'New/Root'),
            ('/a/b', 'B'),
        ])
        self.assertEqual(pm.map_path('/a/b'), 'New/Root/a/B')
示例#13
0
    def test_build_pmods_regex_no_steps(self):
        pmods_tuples = [("/~a*", "A1/A2"), ("/~a[1]?/~b?", "B")]
        pmods = pmods_from_tuples(pmods_tuples)

        pmods = pmods._steps[""]
        self.assertFalse(bool(pmods._steps))
        self.assertEqual(pmod2regexstrs(pmods), ["a*", "a[1]?"])
示例#14
0
    def test_build_pmods_steps_no_regxs(self):
        pmods_tuples = [("/a", "A1/A2"), ("/a/b", "B")]
        pmods = pmods_from_tuples(pmods_tuples)

        pmods = pmods._steps[""]
        self.assertFalse(bool(pmods._regxs))
        self.assertSetEqual(set(pmods._steps), {"a"})
        self.assertEqual(pmods._steps["a"]._alias, "A1/A2")
        self.assertEqual(pmods._steps["a"]._steps["b"]._alias, "B")
示例#15
0
 def PMODS(self, absolute=False):
     return pmods_from_tuples([
         ('',            '/root' if absolute else 'root'),
         ('/a',          'b'),
         ('/abc',        'BAR'),
         ('/abc/df',     'DEF'),
         ('/abc/df/a123', '234'),
         ('/some',       '/sub/path'),
     ])
示例#16
0
    def test_build_pmods_regex_no_steps(self):
        pmods_tuples = [
            ('/~a*', 'A1/A2'),
            ('/~a[1]?/~b?', 'B'),
        ]
        pmods = pmods_from_tuples(pmods_tuples)

        pmods = pmods._steps['']
        self.assertFalse(bool(pmods._steps))
        self.assertEqual(pmod2regexstrs(pmods), ['a*', 'a[1]?'])
示例#17
0
    def test_pmods_from_tuples_repr(self):
        pmods_tuples = [("/a", "A"), ("/~a\w*", "A1/A2"), ("/~a\d*/~b?", "D/D")]
        pmods = pmods_from_tuples(pmods_tuples)

        pmods = pmods._steps[""]
        s = (
            r"pmod({'a': pmod('A')}, {re.compile('a\\w*'): "
            r"pmod('A1/A2'), re.compile('a\\d*'): "
            r"pmod({re.compile('b?'): pmod('D/D')})})"
        )
        self.assertEqual(str(pmods), s)
示例#18
0
 def PMODS(self, absolute=False):
     return pmods_from_tuples(
         [
             ("", "/root" if absolute else "root"),
             ("/a", "b"),
             ("/abc", "BAR"),
             ("/abc/df", "DEF"),
             ("/abc/df/a123", "234"),
             ("/some", "/sub/path"),
         ]
     )
示例#19
0
    def test_build_pmods_steps_no_regxs(self):
        pmods_tuples = [
            ('/a', 'A1/A2'),
            ('/a/b', 'B'),
        ]
        pmods = pmods_from_tuples(pmods_tuples)

        pmods = pmods._steps['']
        self.assertFalse(bool(pmods._regxs))
        self.assertSetEqual(set(pmods._steps), {'a'})
        self.assertEqual(pmods._steps['a']._alias, 'A1/A2')
        self.assertEqual(pmods._steps['a']._steps['b']._alias, 'B')
示例#20
0
    def test_pmods_from_tuples_repr(self):
        pmods_tuples = [
            ('/a', 'A'),
            ('/~a\w*', 'A1/A2'),
            ('/~a\d*/~b?', 'D/D'),
        ]
        pmods = pmods_from_tuples(pmods_tuples)

        pmods = pmods._steps['']
        s = [r"pmod({'a': pmod('A')}, OrderedDict([(re.compile('a\\w*'), "
             r"pmod('A1/A2')), (re.compile('a\\d*'), "
             r"pmod(OrderedDict([(re.compile('b?'), pmod('D/D'))])))]))"
             ]
        self.assertEqual(str(pmods), "".join(s))
示例#21
0
    def test_pmods_nonemptyroot_rootmapped(self):
        p = pmods_from_tuples([("root", "ROOT"), ("root/a", "bar")]).step("root")
        p.a
        self.assertEqual(p, "ROOT")
        self.assertEqual(p.a, "bar")
        self.assertEqual(sorted(p._paths()), ["ROOT/bar"])

        self.assertEqual(p.a.b, "b")
        self.assertEqual(sorted(p._paths()), ["ROOT/bar/b"])

        self.assertEqual(p.c, "c")
        self.assertEqual(sorted(p._paths()), ["ROOT/bar/b", "ROOT/c"])

        self.assertEqual(p.a.f, "f")
        self.assertEqual(sorted(p._paths()), ["ROOT/bar/b", "ROOT/bar/f", "ROOT/c"])
示例#22
0
    def test_pmods_emptyroot_rootunmapped(self):
        p = pmods_from_tuples([("/a", "bar")]).step()
        p.a
        self.assertEqual(p, "", (p, p._paths()))
        self.assertEqual(p.a, "bar", (p, p._paths()))
        self.assertEqual(sorted(p._paths()), ["/bar"])

        self.assertEqual(p.a.b, "b")
        self.assertEqual(sorted(p._paths()), ["/bar/b"])

        self.assertEqual(p.c, "c")
        self.assertEqual(sorted(p._paths()), ["/bar/b", "/c"])

        self.assertEqual(p.a.f, "f")
        self.assertEqual(sorted(p._paths()), ["/bar/b", "/bar/f", "/c"])
示例#23
0
    def test_constructor(self):
        pmod = pmods_from_tuples([("/a", "A"), ("/a/c", "C"), ("/b/c", "C1")])
        p = pmod.step()
        self.assertEqual(p.a, "A")
        self.assertEqual(p.a.c, "C")
        self.assertEqual(p.b, "b")
        self.assertEqual(p.b.c, "C1")

        p.a = "AA"
        self.assertEqual(p.a, "AA")
        self.assertIn("AA", p._steps())
        self.assertIn("c", p.a._steps(keys=True))
        self.assertIn("C", p.a._steps())
        self.assertIn("c", p.b._steps(keys=True))
        self.assertIn("C1", p.b._steps())
示例#24
0
    def test_constructor(self):
        pmod = pmods_from_tuples([('/a', 'A'), ('/a/c', 'C'), ('/b/c', 'C1')])
        p = pmod.step()
        self.assertEquals(p.a, 'A')
        self.assertEquals(p.a.c, 'C')
        self.assertEqual(p.b, 'b')
        self.assertEqual(p.b.c, 'C1')

        p.a = 'AA'
        self.assertEqual(p.a, 'AA')
        self.assertIn('AA', p._steps())
        self.assertIn('c', p.a._steps(keys=True))
        self.assertIn('C', p.a._steps())
        self.assertIn('c', p.b._steps(keys=True))
        self.assertIn('C1', p.b._steps())
示例#25
0
    def test_pmods_emptyroot_rootunmapped(self):
        p = pmods_from_tuples([('/a', 'bar')]).step()
        p.a
        self.assertEquals(p, '', (p, p._paths()))
        self.assertEquals(p.a, 'bar', (p, p._paths()))
        self.assertEquals(sorted(p._paths()), ['/bar'])

        self.assertEquals(p.a.b, 'b')
        self.assertEquals(sorted(p._paths()), ['/bar/b'])

        self.assertEquals(p.c, 'c')
        self.assertEquals(sorted(p._paths()), ['/bar/b', '/c'])

        self.assertEquals(p.a.f, 'f')
        self.assertEquals(sorted(p._paths()), ['/bar/b', '/bar/f', '/c'])
示例#26
0
    def test_pmods_nonemptyroot_rootmapped(self):
        p = pmods_from_tuples(
            [('root', 'ROOT'), ('root/a', 'bar')]).step('root')
        p.a
        self.assertEquals(p, 'ROOT')
        self.assertEquals(p.a, 'bar')
        self.assertEquals(sorted(p._paths()), ['ROOT/bar'])

        self.assertEquals(p.a.b, 'b')
        self.assertEquals(sorted(p._paths()), ['ROOT/bar/b'])

        self.assertEquals(p.c, 'c')
        self.assertEquals(sorted(p._paths()), ['ROOT/bar/b', 'ROOT/c'])

        self.assertEquals(p.a.f, 'f')
        self.assertEquals(
            sorted(p._paths()), ['ROOT/bar/b', 'ROOT/bar/f', 'ROOT/c'])
示例#27
0
    def test_assembly(self):
        def cfunc_f1(comp, value_tree):
            comp.pinp().A
            comp.pout().B

        def cfunc_f2(comp, value_tree):
            comp.pinp().B
            comp.pout().C
        ass = Assembly(FuncComponent(cfunc) for cfunc in [cfunc_f1, cfunc_f2])
        ass._build()
        self.assertEqual(list(ass._iter_validations()), [])
        self.assertEqual(ass._inp, ['f1/A', 'f2/B'])
        self.assertEqual(ass._out, ['f1/B', 'f2/C'])

        pmods = pmods_from_tuples([('f1', r'/root1'), ('f2', r'/root2')])
        ass._build(pmods)
        self.assertEqual(
            sorted(ass._inp + ass._out),
            ['/root1/A', '/root1/B', '/root2/B', '/root2/C'])
示例#28
0
    def test_assembly(self):
        def cfunc_f1(comp, value_tree):
            comp.pinp().A
            comp.pout().B

        def cfunc_f2(comp, value_tree):
            comp.pinp().B
            comp.pout().C

        ass = Assembly(FuncComponent(cfunc) for cfunc in [cfunc_f1, cfunc_f2])
        ass._build()
        self.assertEqual(list(ass._iter_validations()), [])
        self.assertEqual(ass._inp, ["f1/A", "f2/B"])
        self.assertEqual(ass._out, ["f1/B", "f2/C"])

        pmods = pmods_from_tuples([("f1", r"/root1"), ("f2", r"/root2")])
        ass._build(pmods)
        self.assertEqual(
            sorted(ass._inp + ass._out),
            ["/root1/A", "/root1/B", "/root2/B", "/root2/C"],
        )
示例#29
0
 def test_pstep_vs_pmods_mapstep_empty1ststep(self):
     pmods = pmods_from_tuples([("/a", "AA")])
     self._assert_pstep_pmods_with_map_paths("", pmods)
示例#30
0
 def test_pstep_vs_pmods_mapslash(self):
     pmods = pmods_from_tuples([("/", "AA")])
     self._assert_pstep_pmods_with_map_paths("P", pmods)
示例#31
0
 def test_pstep_vs_pmods_maproot_emptyroot(self):
     pmods = pmods_from_tuples([("", "AA")])
     self._assert_pstep_pmods_with_map_paths("", pmods)
示例#32
0
 def _build_simple_pmod_from_tuples(self):
     return pmods_from_tuples([('/a', 'A'),
                               ('/~a(\w*)', 'AWord'),
                               ('/~a(\d*)', 'A_\\1'),
                               ])
示例#33
0
 def test_pstep_vs_pmods_maproot(self):
     root = "R"
     pmods = pmods_from_tuples([(root, "AA")])
     self._assert_pstep_pmods_with_map_paths(root, pmods)
示例#34
0
 def test_pmods_miss(self):
     p = pmods_from_tuples([("/MISS", "BOO")]).step()
     self.assertEqual(p, "", (p, p._paths()))
     p = Pstep("foo", pmods_from_tuples([("/MISS", "BOO")]))
     self.assertEqual(p, "foo", (p, p._paths()))
示例#35
0
 def test_map_path_regex_2_dot_dotdot_root_abs(self):
     pmods = pmods_from_tuples([('/~b.*/~c(.*)',  r'../C/\1')])
     self.assertEqual(pmods.map_path('/'), '')
     self.assertEqual(pmods.map_path('/a'), '/a')
     self.assertEqual(pmods.map_path('/big/child'), '/big/C/hild')
     self.assertEqual(pmods.map_path(''), '')
示例#36
0
 def test_pmods_miss(self):
     p = pmods_from_tuples([('/MISS', 'BOO')]).step()
     self.assertEquals(p, '', (p, p._paths()))
     p = Pstep('foo', pmods_from_tuples([('/MISS', 'BOO')]))
     self.assertEquals(p, 'foo', (p, p._paths()))
示例#37
0
 def test_pmods_from_tuples_rootMapping(self):
     self.assertEqual(pmods_from_tuples([('', 'A/B')]),
                      Pmod(_steps={'': Pmod(_alias='A/B')}))
     self.assertEqual(pmods_from_tuples([('/', 'A/B')]),
                      Pmod(_steps={'':
                                   Pmod(_steps={'': Pmod(_alias='A/B')})}))
示例#38
0
 def test_pstep_vs_pmods_mapslash(self):
     pmods = pmods_from_tuples([('/', 'AA'), ])
     self._assert_pstep_pmods_with_map_paths('P', pmods)
示例#39
0
 def test_pstep_vs_pmods_maproot(self):
     root = 'R'
     pmods = pmods_from_tuples([(root, 'AA'), ])
     self._assert_pstep_pmods_with_map_paths(root, pmods)
示例#40
0
 def test_pstep_vs_pmods_maproot_emptyroot(self):
     pmods = pmods_from_tuples([('', 'AA'), ])
     self._assert_pstep_pmods_with_map_paths('', pmods)
示例#41
0
 def test_pstep_vs_pmods_mapstep_empty1ststep(self):
     pmods = pmods_from_tuples([('/a', 'AA'), ])
     self._assert_pstep_pmods_with_map_paths('', pmods)
示例#42
0
    def test_map_path_rootMapped(self):

        pm = pmods_from_tuples([("", "New/Root"), ("/a/b", "B")])
        self.assertEqual(pm.map_path("/a/b"), "New/Root/a/B")
示例#43
0
 def _build_simple_pmod_from_tuples(self):
     return pmods_from_tuples(
         [("/a", "A"), (r"/~a(\w*)", "AWord"), ("/~a(\d*)", "A_\\1")]
     )
示例#44
0
 def test_map_path_regex_2_dot_dotdot_root_abs(self):
     pmods = pmods_from_tuples([("/~b.*/~c(.*)", r"../C/\1")])
     self.assertEqual(pmods.map_path("/"), "")
     self.assertEqual(pmods.map_path("/a"), "/a")
     self.assertEqual(pmods.map_path("/big/child"), "/big/C/hild")
     self.assertEqual(pmods.map_path(""), "")