def itinerary(self): yield vpath2regexp('//japan>') self.down = True yield vpath2regexp('//tokyo') self.tokyo = True yield vpath2regexp('//osaka') self.osaka = True yield vpath2regexp('//japan<') self.up = True raise StopIteration
def test_OrParent(self): query = '''//A|B/node''' m = vpath2regexp(query) self.assert_(m) print m, m.pattern self.assert_(not m.match('''/root/node>''')) self.assert_(m.match('''/root/A/node>''')) self.assert_(m.match('''/root/B/node>'''))
def test_AnyInParent(self): query = '''/*/node''' m = vpath2regexp(query) self.assert_(m) print m, m.pattern self.assert_(m.match('''/A/node>''')) self.assert_(m.match('''/B/node>''')) self.assert_(m.match('''/C/node>'''))
def test_Any(self): query = '''/*''' m = vpath2regexp(query) self.assert_(m) print m, m.pattern self.assert_(m.match('''/A>''')) self.assert_(m.match('''/B>''')) self.assert_(m.match('''/C>'''))
def test_Or3(self): query = '''//A|B|C''' m = vpath2regexp(query) self.assert_(m) print m, m.pattern self.assert_(not m.match('''/root/node>''')) self.assert_(m.match('''/root/A>''')) self.assert_(m.match('''/root/B>''')) self.assert_(m.match('''/root/C>'''))
def test_descendant_with_ancester(self): query = '''//ancester//node''' m = vpath2regexp(query) self.assert_(m) print m, m.pattern self.assert_(not m.match('''/root/node>''')) self.assert_(m.match('''/root/ancester/node>''')) self.assert_(not m.match('''/root/ancester/node<''')) self.assert_(m.match('''/root/ancester/parent/node>''')) self.assert_(not m.match('''/root/ancester/parent/node<'''))
def test_TwoAnys(self): query = '''/*/*''' m = vpath2regexp(query) self.assert_(m) print m, m.pattern self.assert_(not m.match('''/A''')) self.assert_(m.match('''/A/a>''')) self.assert_(m.match('''/B/b>''')) self.assert_(m.match('''/C/c>''')) self.assert_(not m.match('''/C/c/D>'''))
def test_descendant(self): query = '''//node''' m = vpath2regexp(query) self.assert_(m) print m, m.pattern self.assert_(not m.match('''/root>''')) self.assert_(m.match('''/root/node>''')) self.assert_(not m.match('''/root/node<''')) self.assert_(m.match('''/root/parent/node>''')) self.assert_(not m.match('''/root/parent/node<''')) self.assert_(m.match('''/root/grandparent/parent/node>'''))
def test_OrAncester(self): query = '''//A|B//node''' m = vpath2regexp(query) self.assert_(m) print m, m.pattern self.assert_(not m.match('''/root/node>''')) self.assert_(m.match('''/A/node>''')) self.assert_(m.match('''/root/A/node>''')) self.assert_(m.match('''/root/B/node>''')) self.assert_(not m.match('''/root/C/node>''')) self.assert_(m.match('''/A/hoge/node>''')) self.assert_(m.match('''/root/A/hoge/node>''')) self.assert_(m.match('''/root/B/hoge/node>''')) self.assert_(m.match('''/root/B/hoge/bar/node>''')) self.assert_(not m.match('''/root/C/hoge/node>'''))
def itinerary(self): yield vpath2regexp('//osaka') self.osaka= True raise StopIteration
def test_absrootup(self): query = '''/root<''' m = vpath2regexp(query) self.assert_(m) self.assert_(m.match('/root<'))
def itinerary(self): yield vpath2regexp('//tokyo') self.tokyo = True raise StopIteration
def itinerary(self): yield vpath2regexp('//tokyo>') self.down = True yield vpath2regexp('//tokyo<') self.up= True raise StopIteration
def itinerary(self): yield vpath2regexp('/node') raise StopIteration