|
5 | 5 | from io import StringIO |
6 | 6 | from unittest import TestCase |
7 | 7 | from lambda_calculus.terms import Variable |
| 8 | +from lambda_calculus.terms.arithmetic import SUCCESSOR |
8 | 9 | from lambda_calculus.visitors.substitution.renaming import CountingSubstitution |
9 | 10 | from lambda_calculus.visitors.normalisation import BetaNormalisingVisitor |
10 | 11 | from lambda_repl import LambdaREPL |
@@ -93,6 +94,42 @@ def test_no_alias_value(self) -> None: |
93 | 94 | self.assertTrue(self.stdout.getvalue().startswith("invalid Command: ")) |
94 | 95 | self.assertTrue(self.stdout.getvalue().endswith("\n")) |
95 | 96 |
|
| 97 | + def test_import(self) -> None: |
| 98 | + """test importing aliases""" |
| 99 | + self.assertFalse(self.repl.onecmd( |
| 100 | + "import SUCC = lambda_calculus.terms.arithmetic.SUCCESSOR" |
| 101 | + )) |
| 102 | + self.assertEqual( |
| 103 | + self.repl.aliases, |
| 104 | + { |
| 105 | + "SUCC": SUCCESSOR |
| 106 | + } |
| 107 | + ) |
| 108 | + |
| 109 | + def test_invalid_import(self) -> None: |
| 110 | + """test handling of invalid imports""" |
| 111 | + for location in ( |
| 112 | + "lambda_calculus.terms.arithmetic.SUCCESSORX", |
| 113 | + "lambda_calculus.terms.arithmeticX.SUCCESSOR" |
| 114 | + ): |
| 115 | + self.assertFalse(self.repl.onecmd(f"import SUCC = {location}")) |
| 116 | + self.assertEqual(self.repl.aliases, {}) |
| 117 | + self.assertTrue(self.stdout.getvalue().startswith("Error while importing: ")) |
| 118 | + self.assertTrue(self.stdout.getvalue().endswith("\n")) |
| 119 | + self.stdout.seek(0) |
| 120 | + self.stdout.truncate(0) |
| 121 | + self.assertFalse(self.repl.onecmd("import SUCC = lambda_calculus.terms.arithmetic.number")) |
| 122 | + self.assertEqual(self.repl.aliases, {}) |
| 123 | + self.assertTrue(self.stdout.getvalue().startswith("Error")) |
| 124 | + self.assertTrue(self.stdout.getvalue().endswith("\n")) |
| 125 | + |
| 126 | + def test_no_import_value(self) -> None: |
| 127 | + """test handling missing import values""" |
| 128 | + self.assertFalse(self.repl.onecmd("import a")) |
| 129 | + self.assertEqual(self.repl.aliases, {}) |
| 130 | + self.assertTrue(self.stdout.getvalue().startswith("invalid Command: ")) |
| 131 | + self.assertTrue(self.stdout.getvalue().endswith("\n")) |
| 132 | + |
96 | 133 | def test_aliases(self) -> None: |
97 | 134 | """test listing aliases""" |
98 | 135 | self.assertFalse(self.repl.onecmd("alias x = 1")) |
|
0 commit comments