diff --git a/EXERCISES.txt b/EXERCISES.txt index 9c4d086c4c7..24275add07b 100644 --- a/EXERCISES.txt +++ b/EXERCISES.txt @@ -9,6 +9,7 @@ nucleotide-count series largest-series-product octal +ocr-numbers difference-of-squares point-mutations phone-number diff --git a/ocr-numbers/example.py b/ocr-numbers/example.py new file mode 100644 index 00000000000..009f3030f88 --- /dev/null +++ b/ocr-numbers/example.py @@ -0,0 +1,16 @@ +def number(g): + if not g or len(g) < 4 or any(len(r)!=len(g[0]) for r in g): + raise ValueError('Ill-formed grid') + if g == [" _ ","| |","|_|"," "]: + return '0' + elif g == [" "," |"," |"," "]: + return '1' + else: + return '?' + +def grid(n): + if n == '0': + return [" _ ","| |","|_|"," "] + elif n == '1': + return [" "," |"," |"," "] + raise ValueError('Unknown digit') \ No newline at end of file diff --git a/ocr-numbers/ocr_test.py b/ocr-numbers/ocr_test.py new file mode 100644 index 00000000000..6134d3358e1 --- /dev/null +++ b/ocr-numbers/ocr_test.py @@ -0,0 +1,56 @@ +try: + from ocr import number, grid +except ImportError: + raise SystemExit('Could not find ocr.py. Does it exist?') + +import unittest + +class OcrTest(unittest.TestCase): + def test_0(self): + self.assertEqual('0', number([" _ ","| |","|_|"," "])) + + @unittest.skip("Not implemented yet") + def test_1(self): + self.assertEqual('1', number([" "," |"," |"," "])) + + @unittest.skip("Not implemented yet") + def test_garbage(self): + self.assertEqual('?', number([" _ "," _|"," |"," "])) + + @unittest.skip("Not implemented yet") + def test_last_line_nonblank(self): + self.assertEqual('?', number([" "," |"," |","| |"])) + + @unittest.skip("Not implemented yet") + def test_unknown_char(self): + self.assertEqual('?', number([" - "," _|"," X|"," "])) + + @unittest.skip("Not implemented yet") + def test_too_short_row(self): + with self.assertRaises(ValueError) as context: + number([" "," _|"," |"," "]) + self.assertEqual(context.exception.message, 'Ill-formed grid') + + @unittest.skip("Not implemented yet") + def test_insufficient_rows(self): + with self.assertRaises(ValueError) as context: + number([" "," _|"," X|"]) + self.assertEqual(context.exception.message, 'Ill-formed grid') + + @unittest.skip("Not implemented yet") + def test_grid0(self): + self.assertEqual([" _ ","| |","|_|"," "], grid('0')) + + @unittest.skip("Not implemented yet") + def test_grid1(self): + self.assertEqual([" "," |"," |"," "], grid('1')) + + @unittest.skip("Not implemented yet") + def test_invalid_digit(self): + with self.assertRaises(ValueError) as context: + grid('2') + self.assertEqual(context.exception.message, 'Unknown digit') + + +if __name__ == '__main__': + unittest.main()