diff -r 3a7dedc7067f Lib/test/test_formatter.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/test/test_formatter.py Sat Aug 24 12:44:16 2013 +0100 @@ -0,0 +1,186 @@ +import os +import unittest +from formatter import NullFormatter, AbstractFormatter, DumbWriter, NullWriter + +class FormatterTest(unittest.TestCase): + + def setUp(self): + self.file_write = None + self.file_read = None + self.dumbWriter = None + + def prepare_DumbWriter_test(self): + self.file_write = open('formatter-test-file.txt', 'w') + self.dumbWriter = DumbWriter(self.file_write) + + def tearDown(self): + if self.file_read is not None: + self.file_read.close() + if self.file_write is not None: + self.file_write.close() + self.dumbWriter = None + + def test_create_NullFormatter(self): + nullFormatter = NullFormatter() + self.assertIsInstance(nullFormatter.writer, NullWriter, + "writer attribute should be a Null Writer") + + def test_DumbWriter_send_line_break(self): + self.prepare_DumbWriter_test() + self.dumbWriter.send_line_break() + self.file_write.flush() + self.file_read = open('formatter-test-file.txt') + + file_lines = self.file_read.readlines() + + self.assertEqual(len(file_lines), 1, + "Original file does not have one line after calling send_line_break()") + + self.assertEqual(file_lines[0], "\n", "First Line of the file does not have newline") + + def test_DumbWriter_send_paragraph(self): + self.prepare_DumbWriter_test() + self.dumbWriter.send_paragraph(3) + self.file_write.flush() + self.file_read = open('formatter-test-file.txt') + file_lines = self.file_read.readlines() + + self.assertEqual(len(file_lines), 3, + "Original file does not have three line after calling paragraph(3)") + + self.assertTrue(all(line == '\n' for line in file_lines)) + + def test_DumbWriter_send_hor_rule(self): + self.prepare_DumbWriter_test() + self.file_write.write("Section 1") + + self.dumbWriter.send_hor_rule() + + self.file_write.write("Section 2") + + self.file_write.flush() + self.file_read = open('formatter-test-file.txt') + + file_lines = self.file_read.readlines() + + self.assertEqual(len(file_lines), 3, + "Original file does not have three line after calling send_hor_rule") + + self.assertEqual(file_lines[0], "Section 1\n", "First line changed!") + + self.assertEqual(file_lines[1], "-"*72+"\n", "Horizontal Rule is in a wrong format!") + + self.assertEqual(file_lines[2], "Section 2", "Last line changed!") + + + def test_DumbWriter_send_literal_data_simple(self): + self.prepare_DumbWriter_test() + data_simple = "This is a one line example without any escape characters." + + self.dumbWriter.send_literal_data(data_simple) + + self.file_write.flush() + self.file_read = open('formatter-test-file.txt') + file_lines = self.file_read.readlines() + + self.assertEqual(len(file_lines), 1, + "Original file does not have one line after calling send_literal_data") + + self.assertEqual(file_lines[0], data_simple, "The only line in output changed!") + + self.assertEqual(self.dumbWriter.col, len(data_simple), "column value is wrong!") + + + def test_DumbWriter_send_literal_data_newline(self): + self.prepare_DumbWriter_test() + data_with_newline = "This is another example with \n a newline." + + self.dumbWriter.send_literal_data(data_with_newline) + + self.file_write.flush() + self.file_read = open('formatter-test-file.txt') + file_lines = self.file_read.readlines() + + self.assertEqual(len(file_lines), 2, + "Original file does not have 2 lines after calling send_literal_data") + + self.assertEqual(file_lines[0], "This is another example with \n", + "The First line in output printed wrong!") + + self.assertEqual(file_lines[1], " a newline.", + "The First line in output printed wrong!") + + self.assertEqual(self.dumbWriter.col, len(" a newline."), "column value is wrong!") + + def test_DumbWriter_send_literal_data_complex(self): + self.prepare_DumbWriter_test() + data_complex = "Here is\nanother example\twith\ttabs" + + self.dumbWriter.send_literal_data(data_complex) + + self.file_write.flush() + self.file_read = open('formatter-test-file.txt') + file_lines = self.file_read.readlines() + + self.assertEqual(len(file_lines), 2, + "Original file does not have 2 lines after calling send_literal_data") + + self.assertEqual(file_lines[0], "Here is\n", + "The First line in output printed wrong!") + + self.assertEqual(file_lines[1], "another example\twith\ttabs", + "The First line in output printed wrong!") + + self.assertEqual(len("another example\twith\ttabs".expandtabs()), self.dumbWriter.col, "Column value is wrong!") + + def test_DumbWritter_send_flowing_data(self): + self.prepare_DumbWriter_test() + data = ("The procrastinator is often remarkably optimistic about his ability to " + "complete a task on a tight deadline; this is usually accompanied by " + "expressions of reassurance that everything is under control. (Therefore, " + "there is no need to start.) Lulled by a false sense of security, time " + "passes. At some point, he crosses over an imaginary starting time and " + "suddenly realizes, \"Oh no! I am not in control! There isn't enough " + "time!\"") + + self.dumbWriter.send_flowing_data(data) + + self.file_write.flush() + self.file_read = open('formatter-test-file.txt') + file_lines = self.file_read.readlines() + + self.assertEqual(len(file_lines), 7, + "Original file does not have 7 lines after calling send_flowing_data") + + self.assertEqual(file_lines[0], + "The procrastinator is often remarkably optimistic about his ability to\n", + "The First line in output printed wrong!") + + self.assertEqual(file_lines[1], + "complete a task on a tight deadline; this is usually accompanied by\n", + "The Second line in output printed wrong!") + + self.assertEqual(file_lines[2], + "expressions of reassurance that everything is under control. (Therefore,\n", + "The Third line in output printed wrong!") + + self.assertEqual(file_lines[3], + "there is no need to start.) Lulled by a false sense of security, time\n", + "The Fourth line in output printed wrong!") + + self.assertEqual(file_lines[4], + "passes. At some point, he crosses over an imaginary starting time and\n", + "The Fifth line in output printed wrong!") + + self.assertEqual(file_lines[5], + "suddenly realizes, \"Oh no! I am not in control! There isn't enough\n", + "The Sixth line in output printed wrong!") + + self.assertEqual(file_lines[6], + "time!\"", + "The Last line in output printed wrong!") + + self.assertEqual(self.dumbWriter.col, len("time!\""), "Column value is wrong!") + +if __name__ == '__main__': + unittest.main()