From 7a1973590f3ad8d34df23f7fe0f5b3fa834dd16d Mon Sep 17 00:00:00 2001 From: Reid 'arrdem' McKenzie Date: Fri, 14 May 2021 18:47:02 -0600 Subject: [PATCH] Kill some dead tests --- projects/flowmetal/test/python/BUILD | 20 --- projects/flowmetal/test/python/conftest.py | 0 projects/flowmetal/test/python/test_parser.py | 161 ------------------ .../test/python/test_syntax_analyzer.py | 50 ------ 4 files changed, 231 deletions(-) delete mode 100644 projects/flowmetal/test/python/BUILD delete mode 100644 projects/flowmetal/test/python/conftest.py delete mode 100644 projects/flowmetal/test/python/test_parser.py delete mode 100644 projects/flowmetal/test/python/test_syntax_analyzer.py diff --git a/projects/flowmetal/test/python/BUILD b/projects/flowmetal/test/python/BUILD deleted file mode 100644 index c8f0792..0000000 --- a/projects/flowmetal/test/python/BUILD +++ /dev/null @@ -1,20 +0,0 @@ -py_library( - name = "conftest", - srcs = [ - "conftest.py" - ], - imports = [ - "." - ], -) - -py_pytest( - name = "test", - srcs = glob(["*.py"]), - deps = [ - "//projects/flowmetal:lib", - ":conftest", - py_requirement("pytest-cov"), - ], - args = ["--cov-report", "term", "--cov=flowmetal"], -) diff --git a/projects/flowmetal/test/python/conftest.py b/projects/flowmetal/test/python/conftest.py deleted file mode 100644 index e69de29..0000000 diff --git a/projects/flowmetal/test/python/test_parser.py b/projects/flowmetal/test/python/test_parser.py deleted file mode 100644 index b78caf4..0000000 --- a/projects/flowmetal/test/python/test_parser.py +++ /dev/null @@ -1,161 +0,0 @@ -""" -Tests covering the Flowmetal parser. -""" - -from math import nan - -import flowmetal.parser as p - -import pytest - - -def test_parse_list(): - """Trivial parsing a list.""" - assert isinstance(p.parses("()"), p.ListToken) - assert p.parses("()").paren == p.ListType.ROUND - - -@pytest.mark.parametrize('txt, val', [ - ('1', 1), - ('2', 2), - ('103', 103), - ('504', 504), - # Sign prefixes - ('-1', -1), - ('+1', +1), - # Underscores as whitespace - ('1_000_000', 1e6), - ('+1_000', 1000), - ('-1_000', -1000), - # Variable base - ('2r1', 1), - ('2r10', 2), - ('2r100', 4), - ('2r101', 5), - ('+2r10', 2), - ('-2r10', -2), - # Octal - ('00', 0), - ('01', 1), - ('010', 8), - ('+010', 8), - ('-010', -8), - # Hex - ('0x0', 0), - ('0xF', 15), - ('0x10', 16), - ('+0x10', 16), - ('-0x10', -16), -]) -def test_parse_num(txt, val): - """Some trivial cases of parsing numbers.""" - assert isinstance(p.parses(txt), p.IntegerToken) - assert p.parses(txt).data == val - - -@pytest.mark.parametrize('frac', [ - '1/2', '1/4', '1/512', -]) -def test_parse_ratio(frac): - """Test covering the ratio notation.""" - assert isinstance(p.parses(frac), p.FractionToken) - assert p.parses(frac).data == p.Fraction(frac) - - - -@pytest.mark.parametrize('sym,', [ - 'a', - 'b', - '*earmuff-style*', - '+kebab-style+', - 'JAVA_CONSTANT_STYLE', -]) -def test_parse_sym(sym): - """Some trivial cases of parsing symbols.""" - assert isinstance(p.parses(sym), p.SymbolToken) - assert p.parses(sym).data == sym - - -@pytest.mark.parametrize('txt, tokenization', [ - ('(1 2 3)', - [(p.IntegerToken, '1'), - (p.WhitespaceToken, ' '), - (p.IntegerToken, '2'), - (p.WhitespaceToken, ' '), - (p.IntegerToken, '3')]), - ('(a 1 b 2)', - [(p.SymbolToken, 'a'), - (p.WhitespaceToken, ' '), - (p.IntegerToken, '1'), - (p.WhitespaceToken, ' '), - (p.SymbolToken, 'b'), - (p.WhitespaceToken, ' '), - (p.IntegerToken, '2')]) -]) -def test_list_contents(txt, tokenization): - """Parse examples of list contents.""" - assert isinstance(p.parses(txt), p.ListToken) - - lelems = p.parses(txt).data - for (type, text), token in zip(tokenization, lelems): - assert isinstance(token, type) - assert token.raw == text - - -@pytest.mark.parametrize('txt, value', [ - ('1.0', 1.0), - ('-1.0', -1.0), - ('1.01', 1.01), - ('1e0', 1e0), - ('1e3', 1e3), - ('1e-3', 1e-3), - ('1.01e3', 1.01e3), - ('1_000e0', 1e3), -]) -def test_float_values(txt, value): - """Some examples of floats.""" - assert isinstance(p.parses(txt), p.FloatToken) - assert p.parses(txt).data == value - - -@pytest.mark.parametrize('txt, tokenization', [ - ('+1', p.IntegerToken), - ('+1+', p.SymbolToken), - ('+1e', p.SymbolToken), - ('+1e3', p.FloatToken), - ('+1.0', p.FloatToken), - ('+1.0e3', p.FloatToken), - ('a.b', p.SymbolToken), - ('1.b', p.SymbolToken), -]) -def test_ambiguous_floats(txt, tokenization): - """Parse examples of 'difficult' floats and symbols.""" - assert isinstance(p.parses(txt), tokenization), "Token type didn't match!" - assert p.parses(txt).raw == txt, "Parse wasn't total!" - - -@pytest.mark.parametrize('txt,', [ - r'""', - r'"foo"', - r'"foo bar baz qux"', - r'"foo\nbar\tbaz\lqux"', - r'''"foo - bar - baz - qux"''', - r'"\000 \x00"', - r'"\"\""', -]) -def test_string(txt): - """Some examples of strings, and of escape sequences.""" - assert isinstance(p.parses(txt), p.StringToken) - - -@pytest.mark.parametrize('txt,', [ - ':foo', - ':foo/bar', - ':foo.bar/baz?', -]) -def test_keyword(txt): - """Some examples of keywords.""" - assert isinstance(p.parses(txt), p.KeywordToken) diff --git a/projects/flowmetal/test/python/test_syntax_analyzer.py b/projects/flowmetal/test/python/test_syntax_analyzer.py deleted file mode 100644 index 7afde5d..0000000 --- a/projects/flowmetal/test/python/test_syntax_analyzer.py +++ /dev/null @@ -1,50 +0,0 @@ -""" -Tests covering the Flowmetal analyzer. -""" - -import flowmetal.parser as p -import flowmetal.syntax_analyzer as a - -import pytest - - -@pytest.mark.parametrize('txt, exprtype', [ - # Booleans - ('true', a.ConstExpr), - ('false', a.BooleanExpr), - # Integers - ('1', a.ConstExpr), - ('1', a.IntegerExpr), - # Fractions - ('1/2', a.ConstExpr), - ('1/2', a.FractionExpr), - # Floats - ('1.0', a.ConstExpr), - ('1.0', a.FloatExpr), - # Keywords - (':foo', a.ConstExpr), - (':foo', a.KeywordExpr), - # Strings - ('"foo"', a.ConstExpr), - ('"foo"', a.StringExpr), -]) -def test_analyze_constants(txt, exprtype): - """Make sure the analyzer can chew on constants.""" - assert isinstance(a.analyzes(txt), exprtype) - - -@pytest.mark.parametrize('txt', [ - '()', - '(list)', - '(list 1)', - '(do 1)', - '(do foo bar 1)', - '(let [a 1, b 2] 1)', - '(fn [] 1)', - '(fn [] ⊢ integer? x)', - '(fn [] x |- integer?)', - '(fn [] x :- integer?)', -]) -def test_analyze(txt): - """Make sure that do exprs work.""" - assert a.analyzes(txt)