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(''), '')
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(""), "")
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())
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")})}), )
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())
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')
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")
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')
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")
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')
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")
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')
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]?"])
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")
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'), ])
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]?'])
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)
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"), ] )
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')
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))
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"])
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"])
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())
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())
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'])
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'])
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'])
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"], )
def test_pstep_vs_pmods_mapstep_empty1ststep(self): pmods = pmods_from_tuples([("/a", "AA")]) self._assert_pstep_pmods_with_map_paths("", pmods)
def test_pstep_vs_pmods_mapslash(self): pmods = pmods_from_tuples([("/", "AA")]) self._assert_pstep_pmods_with_map_paths("P", pmods)
def test_pstep_vs_pmods_maproot_emptyroot(self): pmods = pmods_from_tuples([("", "AA")]) self._assert_pstep_pmods_with_map_paths("", pmods)
def _build_simple_pmod_from_tuples(self): return pmods_from_tuples([('/a', 'A'), ('/~a(\w*)', 'AWord'), ('/~a(\d*)', 'A_\\1'), ])
def test_pstep_vs_pmods_maproot(self): root = "R" pmods = pmods_from_tuples([(root, "AA")]) self._assert_pstep_pmods_with_map_paths(root, pmods)
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()))
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(''), '')
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()))
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')})}))
def test_pstep_vs_pmods_mapslash(self): pmods = pmods_from_tuples([('/', 'AA'), ]) self._assert_pstep_pmods_with_map_paths('P', pmods)
def test_pstep_vs_pmods_maproot(self): root = 'R' pmods = pmods_from_tuples([(root, 'AA'), ]) self._assert_pstep_pmods_with_map_paths(root, pmods)
def test_pstep_vs_pmods_maproot_emptyroot(self): pmods = pmods_from_tuples([('', 'AA'), ]) self._assert_pstep_pmods_with_map_paths('', pmods)
def test_pstep_vs_pmods_mapstep_empty1ststep(self): pmods = pmods_from_tuples([('/a', 'AA'), ]) self._assert_pstep_pmods_with_map_paths('', pmods)
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")
def _build_simple_pmod_from_tuples(self): return pmods_from_tuples( [("/a", "A"), (r"/~a(\w*)", "AWord"), ("/~a(\d*)", "A_\\1")] )
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(""), "")