summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/coveragetest.py36
-rw-r--r--test/test_arcs.py18
2 files changed, 41 insertions, 13 deletions
diff --git a/test/coveragetest.py b/test/coveragetest.py
index 981beeea..277b4f03 100644
--- a/test/coveragetest.py
+++ b/test/coveragetest.py
@@ -176,18 +176,34 @@ class CoverageTest(TestCase):
".1 12 2." --> [(-1,1), (1,2), (2,-1)]
+ Minus signs can be included in the pairs:
+
+ "-11, 12, 2-5" --> [(-1,1), (1,2), (2,-5)]
+
"""
arcs = []
- for a,b in arcz.split():
- arcs.append((self._arcz_map[a], self._arcz_map[b]))
+ for pair in arcz.split():
+ asgn = bsgn = 1
+ if len(pair) == 2:
+ a,b = pair
+ else:
+ assert len(pair) == 3
+ if pair[0] == '-':
+ _,a,b = pair
+ asgn = -1
+ else:
+ assert pair[1] == '-'
+ a,_,b = pair
+ bsgn = -1
+ arcs.append((asgn*self._arcz_map[a], bsgn*self._arcz_map[b]))
return sorted(arcs)
- def assertEqualArcs(self, a1, a2):
+ def assertEqualArcs(self, a1, a2, msg=None):
"""Assert that the arc lists `a1` and `a2` are equal."""
# Make them into multi-line strings so we can see what's going wrong.
s1 = "\n".join([repr(a) for a in a1]) + "\n"
s2 = "\n".join([repr(a) for a in a2]) + "\n"
- self.assertMultiLineEqual(s1, s2)
+ self.assertMultiLineEqual(s1, s2, msg)
def check_coverage(self, text, lines=None, missing="", excludes=None,
report="", arcz=None, arcz_missing="", arcz_unpredicted=""):
@@ -265,14 +281,20 @@ class CoverageTest(TestCase):
)
if arcs is not None:
- self.assertEqualArcs(analysis.arc_possibilities(), arcs)
+ self.assertEqualArcs(
+ analysis.arc_possibilities(), arcs, "Possible arcs differ"
+ )
if arcs_missing is not None:
- self.assertEqualArcs(analysis.arcs_missing(), arcs_missing)
+ self.assertEqualArcs(
+ analysis.arcs_missing(), arcs_missing,
+ "Missing arcs differ"
+ )
if arcs_unpredicted is not None:
self.assertEqualArcs(
- analysis.arcs_unpredicted(), arcs_unpredicted
+ analysis.arcs_unpredicted(), arcs_unpredicted,
+ "Unpredicted arcs differ"
)
if report:
diff --git a/test/test_arcs.py b/test/test_arcs.py
index 5698ca5c..41731dba 100644
--- a/test/test_arcs.py
+++ b/test/test_arcs.py
@@ -28,7 +28,7 @@ class SimpleArcTest(CoverageTest):
c = 5
""",
- arcz=".2 23 35 5.")
+ arcz=".2 23 35 5-2")
def test_function_def(self):
self.check_coverage("""\
@@ -90,6 +90,12 @@ class SimpleArcTest(CoverageTest):
arcz=".1 14 45 5. .2 2. 23 3.", arcz_missing="23 3.")
def test_multiline(self):
+ # The firstlineno of the a assignment below differs among Python
+ # versions.
+ if sys.version_info >= (2, 5):
+ arcz = ".1 15 5-2"
+ else:
+ arcz = ".1 15 5-1"
self.check_coverage("""\
a = (
2 +
@@ -98,7 +104,7 @@ class SimpleArcTest(CoverageTest):
b = \\
6
""",
- arcz=".1 15 5.", arcz_missing="")
+ arcz=arcz, arcz_missing="")
def test_if_return(self):
self.check_coverage("""\
@@ -252,7 +258,7 @@ class LoopArcTest(CoverageTest):
arcz=
".1 18 8G GH H. "
".2 23 34 43 26 3. 6. "
- ".9 9A 9. AB BC CB B9 AE E9",
+ ".9 9A 9-8 AB BC CB B9 AE E9",
arcz_missing="26 6."
)
@@ -296,7 +302,7 @@ class ExceptionArcTest(CoverageTest):
b = 9
assert a == 5 and b == 9
""",
- arcz=".1 12 .3 3. 24 45 56 67 7A 89 9A A.",
+ arcz=".1 12 .3 3-2 24 45 56 67 7A 89 9A A.",
arcz_missing="67 7A", arcz_unpredicted="68")
def test_except_with_type(self):
@@ -315,7 +321,7 @@ class ExceptionArcTest(CoverageTest):
assert try_it(0) == 8 # C
assert try_it(1) == 6 # D
""",
- arcz=".1 12 .3 3. 24 4C CD D. .5 56 67 78 8B 9A AB B.",
+ arcz=".1 12 .3 3-2 24 4C CD D. .5 56 67 78 8B 9A AB B-4",
arcz_missing="",
arcz_unpredicted="79")
@@ -442,7 +448,7 @@ class ExceptionArcTest(CoverageTest):
c = 11
assert a == 5 and b == 9 and c == 11
""",
- arcz=".1 12 .3 3. 24 45 56 67 7B 89 9B BC C.",
+ arcz=".1 12 .3 3-2 24 45 56 67 7B 89 9B BC C.",
arcz_missing="67 7B", arcz_unpredicted="68")