|
@@ -1,6 +1,6 @@
|
|
|
import unittest
|
|
import unittest
|
|
|
|
|
|
|
|
-from src.possibilities import MESSAGES, Possibility as P, filter_duplicates
|
|
|
|
|
|
|
+from src.possibilities import MESSAGES, Possibility as P
|
|
|
from src.rules.numerics import add_numerics
|
|
from src.rules.numerics import add_numerics
|
|
|
from tests.rulestestcase import tree
|
|
from tests.rulestestcase import tree
|
|
|
|
|
|
|
@@ -41,7 +41,7 @@ class TestPossibilities(unittest.TestCase):
|
|
|
|
|
|
|
|
def test_multiple_input(self):
|
|
def test_multiple_input(self):
|
|
|
parser = ParserWrapper(Parser)
|
|
parser = ParserWrapper(Parser)
|
|
|
- parser.run(['1+2', '3+4'])
|
|
|
|
|
|
|
+ parser.run(['1+2', '?', '3+4', '?'])
|
|
|
possibilities = parser.parser.possibilities
|
|
possibilities = parser.parser.possibilities
|
|
|
self.assertEqual('\n'.join([repr(pos) for pos in possibilities]),
|
|
self.assertEqual('\n'.join([repr(pos) for pos in possibilities]),
|
|
|
'<Possibility root="3 + 4" handler=add_numerics' \
|
|
'<Possibility root="3 + 4" handler=add_numerics' \
|
|
@@ -49,7 +49,7 @@ class TestPossibilities(unittest.TestCase):
|
|
|
|
|
|
|
|
def test_multiple_runs(self):
|
|
def test_multiple_runs(self):
|
|
|
parser = ParserWrapper(Parser)
|
|
parser = ParserWrapper(Parser)
|
|
|
- parser.run(['1+2'])
|
|
|
|
|
|
|
+ parser.run(['1+2', '?'])
|
|
|
possibilities = parser.parser.possibilities
|
|
possibilities = parser.parser.possibilities
|
|
|
self.assertEqual('\n'.join([repr(pos) for pos in possibilities]),
|
|
self.assertEqual('\n'.join([repr(pos) for pos in possibilities]),
|
|
|
'<Possibility root="1 + 2" handler=add_numerics' \
|
|
'<Possibility root="1 + 2" handler=add_numerics' \
|
|
@@ -58,32 +58,32 @@ class TestPossibilities(unittest.TestCase):
|
|
|
# Remove previous possibilities after second run() call.
|
|
# Remove previous possibilities after second run() call.
|
|
|
parser.run(['', ' '])
|
|
parser.run(['', ' '])
|
|
|
possibilities = parser.parser.possibilities
|
|
possibilities = parser.parser.possibilities
|
|
|
- self.assertEqual(possibilities, [])
|
|
|
|
|
|
|
+ self.assertEqual(possibilities, None)
|
|
|
|
|
|
|
|
# Overwrite previous possibilities with new ones
|
|
# Overwrite previous possibilities with new ones
|
|
|
- parser.run(['3+4'])
|
|
|
|
|
|
|
+ parser.run(['3+4', '?'])
|
|
|
possibilities = parser.parser.possibilities
|
|
possibilities = parser.parser.possibilities
|
|
|
self.assertEqual('\n'.join([repr(pos) for pos in possibilities]),
|
|
self.assertEqual('\n'.join([repr(pos) for pos in possibilities]),
|
|
|
'<Possibility root="3 + 4" handler=add_numerics' \
|
|
'<Possibility root="3 + 4" handler=add_numerics' \
|
|
|
' args=(<Scope of "3 + 4">, 3, 4)>')
|
|
' args=(<Scope of "3 + 4">, 3, 4)>')
|
|
|
|
|
|
|
|
- def test_filter_duplicates(self):
|
|
|
|
|
- a, b = ab = tree('a + b')
|
|
|
|
|
- p0 = P(a, dummy_handler, (1, 2))
|
|
|
|
|
- p1 = P(ab, dummy_handler, (1, 2))
|
|
|
|
|
- p2 = P(ab, dummy_handler, (1, 2, 3))
|
|
|
|
|
- p3 = P(ab, dummy_handler_msg, (1, 2))
|
|
|
|
|
-
|
|
|
|
|
- self.assertEqual(filter_duplicates([]), [])
|
|
|
|
|
- self.assertEqual(filter_duplicates([p0, p1]), [p1])
|
|
|
|
|
- self.assertEqual(filter_duplicates([p1, p2]), [p1, p2])
|
|
|
|
|
- self.assertEqual(filter_duplicates([p1, p3]), [p1, p3])
|
|
|
|
|
- self.assertEqual(filter_duplicates([p0, p1, p2, p3]), [p1, p2, p3])
|
|
|
|
|
-
|
|
|
|
|
- # Docstrings example
|
|
|
|
|
- (l1, l2), l3 = left, l3 = right = tree('1 + 2 + 3')
|
|
|
|
|
- p0 = P(left, add_numerics, (1, 2, 1, 2))
|
|
|
|
|
- p1 = P(right, add_numerics, (1, 2, 1, 2))
|
|
|
|
|
- p2 = P(right, add_numerics, (1, 3, 1, 3))
|
|
|
|
|
- p3 = P(right, add_numerics, (2, 3, 2, 3))
|
|
|
|
|
- self.assertEqual(filter_duplicates([p0, p1, p2, p3]), [p1, p2, p3])
|
|
|
|
|
|
|
+ #def test_filter_duplicates(self):
|
|
|
|
|
+ # a, b = ab = tree('a + b')
|
|
|
|
|
+ # p0 = P(a, dummy_handler, (1, 2))
|
|
|
|
|
+ # p1 = P(ab, dummy_handler, (1, 2))
|
|
|
|
|
+ # p2 = P(ab, dummy_handler, (1, 2, 3))
|
|
|
|
|
+ # p3 = P(ab, dummy_handler_msg, (1, 2))
|
|
|
|
|
+
|
|
|
|
|
+ # self.assertEqual(filter_duplicates([]), [])
|
|
|
|
|
+ # self.assertEqual(filter_duplicates([p0, p1]), [p1])
|
|
|
|
|
+ # self.assertEqual(filter_duplicates([p1, p2]), [p1, p2])
|
|
|
|
|
+ # self.assertEqual(filter_duplicates([p1, p3]), [p1, p3])
|
|
|
|
|
+ # self.assertEqual(filter_duplicates([p0, p1, p2, p3]), [p1, p2, p3])
|
|
|
|
|
+
|
|
|
|
|
+ # # Docstrings example
|
|
|
|
|
+ # (l1, l2), l3 = left, l3 = right = tree('1 + 2 + 3')
|
|
|
|
|
+ # p0 = P(left, add_numerics, (1, 2, 1, 2))
|
|
|
|
|
+ # p1 = P(right, add_numerics, (1, 2, 1, 2))
|
|
|
|
|
+ # p2 = P(right, add_numerics, (1, 3, 1, 3))
|
|
|
|
|
+ # p3 = P(right, add_numerics, (2, 3, 2, 3))
|
|
|
|
|
+ # self.assertEqual(filter_duplicates([p0, p1, p2, p3]), [p1, p2, p3])
|