def test_list_with_two_items_without_opening_bracket(self):
        with self.assertRaises(readerEx.MalformedListException) as cm:
            self.stream.set_stream('10   123)')
            result = reader.read_from_stream(self.stream)
            printer.print_scheme_object(result, self.output_stream)

        desired_exception = cm.exception
        self.assertTrue(isinstance(desired_exception, readerEx.MalformedListException))
    def test_two_consecutive_malformed_lists(self):
        with self.assertRaises(readerEx.MalformedListException) as cm:
            self.stream.set_stream('10   123)')
            result = reader.read_from_stream(self.stream)
            printer.print_scheme_object(result, self.output_stream)

        desired_exception = cm.exception
        self.assertTrue(isinstance(desired_exception, readerEx.MalformedListException))

        with self.assertRaises(readerEx.MalformedListException) as cm2:
            self.stream.set_stream('asd   1234)')
            result = reader.read_from_stream(self.stream)
            printer.print_scheme_object(result, self.output_stream)

        desired_exception = cm2.exception
        self.assertTrue(isinstance(desired_exception, readerEx.MalformedListException))
 def test_nested_quote(self):
     self.stream.set_stream("(x (a '(a b c d e f g)))")
     result = reader.read_from_stream(self.stream)
     printer.print_scheme_object(result, self.output_stream)
     self.assertEqual(self.output_stream.get_stream(), "(x (a (quote (a b c d e f g))))")
def print_result(c):
    global output_stream
    printer.print_scheme_object(c.args[0], output_stream)
    return None
 def test_nested_list_plus_trailing(self):
     self.read_stream.set_stream("(a b c d (some-variable 12345) 10 15)")
     result = reader.read_from_stream(self.read_stream)
     printer.print_scheme_object(result, self.write_stream)
     self.assertEqual(self.write_stream.get_stream(), "(a b c d (some-variable 12345) 10 15)", "instead: " + self.write_stream.get_stream())
 def test_list_with_symbol_and_integer(self):
     self.read_stream.set_stream("(some-variable 12345)")
     result = reader.read_from_stream(self.read_stream)
     printer.print_scheme_object(result, self.write_stream)
     self.assertEqual(self.write_stream.get_stream(), "(some-variable 12345)", "instead: " + self.write_stream.get_stream())
 def test_float(self):
     self.read_stream.set_stream("0.34")
     result = reader.read_from_stream(self.read_stream)
     printer.print_scheme_object(result, self.write_stream)
     self.assertEqual(self.write_stream.get_stream(), "0.34", "instead: " + self.write_stream.get_stream())
 def test_nested_malformed_cons(self):
     parsed = SchemeCons(SchemeInteger(1), SchemeCons(SchemeCons(SchemeInteger(5), SchemeInteger(10))
                                                      , SchemeNil()))
     printer.print_scheme_object(parsed, self.output_stream)
     self.assertEqual(self.output_stream.get_stream(), "(1 (5 . 10))")
 def test_unevaled_nested_list_quote(self):
     self.input_stream.set_stream("'(a b (898 123.67 \"abcde\") c d e)")
     parsed = reader.read_from_stream(self.input_stream)
     printer.print_scheme_object(parsed, self.output_stream)
     self.assertEqual(self.output_stream.get_stream(), "(quote (a b (898 123.67 \"abcde\") c d e))")
 def test_unevaled_integer_quote(self):
     self.input_stream.set_stream("'10")
     parsed = reader.read_from_stream(self.input_stream)
     printer.print_scheme_object(parsed, self.output_stream)
     self.assertEqual(self.output_stream.get_stream(), "(quote 10)")