def p_path(p): ''' path : '<' vertex steps '>' | '<' vertex '>' ''' path = Path() path.src = p[2].get_vVal() if len(p) == 5: path.steps = p[3] p[0] = Value(pVal=path)
expected['-[@1]->'] = Value(eVal=Edge(type=1, ranking=1)) expected['-[@-1]->'] = Value(eVal=Edge(type=1, ranking=-1)) expected['<-[@-1]-'] = Value(eVal=Edge(type=-1, ranking=-1)) expected['-["1"->"2"]->'] = Value(eVal=Edge(src='1', dst='2', type=1)) expected['<-["1"->"2"]-'] = Value(eVal=Edge(src='1', dst='2', type=-1)) expected['-[{}]->'] = Value(eVal=Edge(type=1, props={})) expected['<-[{}]-'] = Value(eVal=Edge(type=-1, props={})) expected['-[:e{}]->'] = Value(eVal=Edge(name='e', type=1, props={})) expected['<-[:e{}]-'] = Value(eVal=Edge(name='e', type=-1, props={})) expected['-[:e@123{}]->'] = Value( eVal=Edge(name='e', type=1, ranking=123, props={})) expected['<-[:e@123{}]-'] = Value( eVal=Edge(name='e', type=-1, ranking=123, props={})) expected['-[:e"1"->"2"@123{}]->'] = Value( eVal=Edge(name='e', type=1, ranking=123, src='1', dst='2', props={})) expected['<()>'] = Value(pVal=Path(src=Vertex())) expected['<("vid")>'] = Value(pVal=Path(src=Vertex(vid='vid'))) expected['<()-->()>'] = Value( pVal=Path(src=Vertex(), steps=[Step(type=1, dst=Vertex())])) expected['<()<--()>'] = Value( pVal=Path(src=Vertex(), steps=[Step(type=-1, dst=Vertex())])) expected['<()-->()-->()>'] = Value(pVal=Path(src=Vertex(),\ steps=[Step(type=1, dst=Vertex()),Step(type=1, dst=Vertex())])) expected['<()-->()<--()>'] = Value(pVal=Path(src=Vertex(),\ steps=[Step(type=1, dst=Vertex()),Step(type=-1, dst=Vertex())])) expected['<("v1")-[:e1]->()<-[:e2]-("v2")>'] = Value(pVal=Path(src=Vertex(vid='v1'),\ steps=[Step(name='e1',type=1,dst=Vertex()),Step(name='e2',type=-1, dst=Vertex(vid='v2'))])) for item in expected.items(): v = parse(item[0]) assert v is not None, "Failed to parse %s" % item[0] assert v == item[1], \
for cell in row: v = nbv.parse(cell) if v is None: raise Exception('Unable to parse %s' % cell) list.append(v) return Row(list) if __name__ == '__main__': headings = ['m', 'r', 'n'] rows = [ ['1', '2', '3'], ['()', '-->', '()'], ['("vid")', '<-[:e "1" -> "2" @-1 {p1: 0, p2: [1, 2, 3]}]-', '()'], ['<()-->()<--()>', '()', '"prop"'], ['EMPTY', 'NULL', 'BAD_TYPE'], ] expected = DataSet(column_names = headings,\ rows = [ Row([Value(iVal=1), Value(iVal=2), Value(iVal=3)]), Row([Value(vVal=Vertex()), Value(eVal=Edge(type=1)), Value(vVal=Vertex())]), Row([Value(vVal=Vertex('vid')), Value(eVal=Edge(name='e',type=-1,src='1',dst='2',ranking=-1,props={'p1': Value(iVal=0), 'p2': Value(lVal=List([Value(iVal=1),Value(iVal=2),Value(iVal=3)]))})), Value(vVal=Vertex())]), Row([Value(pVal=Path(src=Vertex(),steps=[Step(type=1,dst=Vertex()),Step(type=-1,dst=Vertex())])), Value(vVal=Vertex()), Value(sVal='prop')]), Row([Value(), Value(nVal=NullType.__NULL__), Value(nVal=NullType.BAD_TYPE)]) ]) table = bh.Table(headings=headings, rows=rows) dataset = parse(table) assert dataset == expected,\ "Parsed DataSet doesn't match, \nexpected: %s, \nactual: %s" % (expected, dataset)