Change logical ops names, add tests, general code cleanup

Changed the op names to

and
or
not
exc(ept)

Added more test-cases
Cleanup up the Selectors code

Code should be ready for merging now
This commit is contained in:
adam-urbanczyk
2016-07-10 18:51:45 +02:00
parent f5a91a6980
commit a42cad1c3e
2 changed files with 99 additions and 107 deletions

View File

@ -338,6 +338,10 @@ class TestCQSelectors(BaseTest):
# test 'and' (intersection) operator
el = c.edges(S('|X') & BS((-2,-2,0.1), (2,2,2))).vals()
self.assertEqual(2, len(el))
# test using extended string syntax
v = c.vertices(">X and >Y").vals()
self.assertEqual(2, len(v))
def testSumSelector(self):
c = CQ(makeUnitCube())
@ -356,14 +360,10 @@ class TestCQSelectors(BaseTest):
self.assertEqual(8, len(el))
# test using extended string syntax
fl = c.faces(">Z | <Z").vals()
fl = c.faces(">Z or <Z").vals()
self.assertEqual(2, len(fl))
el = c.edges("|X | |Y").vals()
el = c.edges("|X or |Y").vals()
self.assertEqual(8, len(el))
# test using extended string syntax
v = c.vertices(">X & >Y").vals()
self.assertEqual(2, len(v))
def testSubtractSelector(self):
c = CQ(makeUnitCube())
@ -378,7 +378,7 @@ class TestCQSelectors(BaseTest):
self.assertEqual(3, len(fl))
# test using extended string syntax
fl = c.faces("#Z ^ >X").vals()
fl = c.faces("#Z exc >X").vals()
self.assertEqual(3, len(fl))
def testInverseSelector(self):
@ -398,10 +398,17 @@ class TestCQSelectors(BaseTest):
self.assertEqual(3, len(el))
# test using extended string syntax
fl = c.faces('~>Z').vals()
fl = c.faces('not >Z').vals()
self.assertEqual(5, len(fl))
el = c.faces('>Z').edges('~>X').vals()
el = c.faces('>Z').edges('not >X').vals()
self.assertEqual(3, len(el))
def testComplexStringSelector(self):
c = CQ(makeUnitCube())
v = c.vertices('(>X and >Y) or (<X and <Y)').vals()
self.assertEqual(4, len(v))
def testFaceCount(self):
c = CQ(makeUnitCube())
@ -426,7 +433,7 @@ class TestCQSelectors(BaseTest):
Test if reasonable string selector expressions parse without an error
"""
gram = selectors._makeGrammar()
gram = selectors._expression_grammar
expressions = ['+X ',
'-Y',
@ -443,7 +450,9 @@ class TestCQSelectors(BaseTest):
'left',
'right',
'top',
'bottom']
'bottom',
'not |(1,1,0) and >(0,0,1) or XY except >(1,1,1)[-1]',
'(not |(1,1,0) and >(0,0,1)) exc XY and (Z or X)']
for e in expressions: gram.parseString(e)