import pytest

from eche.reader import read_str
from eche.printer import print_str


@pytest.mark.parametrize("test_input", [
    '1',
    '-1',
])
def test_read_atom(test_input):
    assert print_str(read_str(test_input)) == test_input


@pytest.mark.parametrize("test_input", [
    'nil',
])
def test_nil(test_input):
    assert print_str(read_str(test_input)) == test_input


@pytest.mark.parametrize("test_input", [
    'true',
    'false',
])
def test_nil(test_input):
    assert print_str(read_str(test_input)) == test_input


@pytest.mark.parametrize("test_input", [
    '*',
    'abc',
    'abc5',
    'abc-def',
])
def test_eche_type_symbol(test_input):
    assert print_str(read_str(test_input)) == test_input


@pytest.mark.parametrize("test_input", [
    '()',
    '(* 1 2)',
])
def test_eche_type_list(test_input):
    assert print_str(read_str(test_input)) == test_input

@@ -77,16 +77,29 @@
 nt_str%0A%0A
+import math%0A%0A
 %0A@pytest
@@ -151,16 +151,59 @@
   '-1',%0A
+    '0',%0A    str(math.pi),%0A    str(math.e)%0A
 %5D)%0Adef t
@@ -210,17 +210,15 @@
 est_
-read_atom
+numbers
 (tes
@@ -336,28 +336,87 @@
    '
-nil',%0A%5D)%0Adef test_ni
+*',%0A    '+',%0A    'abc',%0A    'test1',%0A    'abc-def',%0A%5D)%0Adef test_eche_type_symbo
 l(te
@@ -535,20 +535,18 @@
    '
-true
+()
 ',%0A    '
 fals
@@ -545,31 +545,70 @@
    '
-false',%0A%5D)%0Adef test_nil
+(* 1 2)',%0A    '(+ (* 1 5) (/ 1 0))'%0A%5D)%0Adef test_eche_type_list
 (tes
@@ -726,77 +726,28 @@
    '
-*',%0A    'abc',%0A    'abc5',%0A    'abc-def',%0A%5D)%0Adef test_eche_type_symbo
+nil',%0A%5D)%0Adef test_ni
 l(te
@@ -858,34 +858,36 @@
 ut%22, %5B%0A    '
-()
+true
 ',%0A    '
 (* 1 2)',%0A%5D)
@@ -874,23 +874,21 @@
 ',%0A    '
-(* 1 2)
+false
 ',%0A%5D)%0Ade
@@ -890,38 +890,28 @@
 %5D)%0Adef test_
-eche_type_list
+bool
 (test_input)
@@ -949,28 +949,30 @@
 (test_input)) == test_input%0A
+%0A%0A

Add more tests.