From 170d827e642de4980049c2ea71ebcf1852e29c9c Mon Sep 17 00:00:00 2001 From: Matěj Cepl Date: Thu, 23 Feb 2012 16:44:57 +0100 Subject: Input/Read test succeed! --- test/test_reader.py | 212 +++++++++++++++++++--------------------------------- 1 file changed, 75 insertions(+), 137 deletions(-) (limited to 'test/test_reader.py') diff --git a/test/test_reader.py b/test/test_reader.py index 1694abe..e8d39d1 100644 --- a/test/test_reader.py +++ b/test/test_reader.py @@ -1,10 +1,7 @@ # -*- coding: utf-8 -*- -from __future__ import absolute_import, print_function, unicode_literals -import re -import unittest -import yamlish +import yaml -SCHEDULE = [ +test_data_list = [ { "name": 'Hello World', "in": [ '--- Hello, World', '...', ], @@ -26,45 +23,45 @@ SCHEDULE = [ "out": "Hello, World", }, { - "name": 'Hello World 4', - "in": [ '--- >', ' Hello,', ' World', '...', ], + "name": 'Hello World 5', + "in": [ '--- >', ' Hello,', ' World', '...', ], "out": "Hello, World\n", }, { - "name": 'Hello World 5', - "in": [ '--- >', ' Hello,', ' World', '...', ], - "error": re.compile(r"Missing\s+'[.][.][.]'"), + "name": 'Hello World 6', + "in": [ '--- >', ' Hello,', ' World', '...', ], + "error": yaml.parser.ParserError, }, { "name": 'Simple array', "in": [ '---', '- 1', '- 2', '- 3', '...', ], - "out": [ '1', '2', '3' ], + "out": [ 1, 2, 3 ], }, { "name": 'Mixed array', - "in": [ '---', '- 1', '- \'two\'', '- "three\n"', '...', ], - "out": [ '1', 'two', "three\n" ], + "in": [ '---', '- 1', "- 'two'", r'- "three\n"', '...', ], + "out": [ 1, 'two', "three\n" ], }, { "name": 'Hash in array', - "in": [ '---', '- 1', '- two: 2', '- 3', '...', ], - "out": [ '1', { "two": '2' }, '3' ], + "in": [ '---', ' - 1', ' - two: 2', ' - 3', '...', ], + "out": [ 1, { "two": 2 }, 3 ], }, { "name": 'Hash in array 2', "in": [ '---', '- 1', '- two: 2', ' three: 3', '- 4', '...', ], - "out": [ '1', { "two": '2', "three": '3' }, '4' ], + "out": [ 1, { "two": 2, "three": 3 }, 4 ], }, { "name": 'Nested array', "in": [ '---', '- one', - '-', - ' - two', - ' -', - ' - three', - ' - four', + '- ', + ' - two', + ' - ', + ' - three', + ' - four', '- five', '...', ], @@ -83,8 +80,8 @@ SCHEDULE = [ '...', ], "out": { - "one": { "two": { "three": '3', "four": '4' }, "five": '5' }, - "six": '6' + "one": { "two": { "three": 3, "four": 4 }, "five": 5 }, + "six": 6 }, }, @@ -98,7 +95,7 @@ SCHEDULE = [ ' given : Chris', ' family : Dumars', ' address:', - ' lines: |', + ' lines: | ', ' 458 Walkman Dr.', ' Suite #292', ' city : Royal Oak', @@ -122,36 +119,36 @@ SCHEDULE = [ '...', ], "out": { - "bill - to": { + "bill-to": { "given": 'Chris', "address": { "city": 'Royal Oak', - "postal": '48046', + "postal": 48046, "lines": "458 Walkman Dr.\nSuite #292\n", "state": 'MI' }, "family": 'Dumars' }, - "invoice": '34843', + "invoice": 34843, "date": '2001-01-23', - "tax": '251.42', + "tax": 251.42, "product": [ { "sku": 'BL394D', - "quantity": '4', - "price": '450.00', + "quantity": 4, + "price": 450.00, "description": 'Basketball' }, { "sku": 'BL4438H', - "quantity": '1', - "price": '2392.00', + "quantity": 1, + "price": 2392.00, "description": 'Super Hoop' } ], 'comments': "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338\n", - "total": '4443.52' + "total": 4443.52 } }, @@ -159,24 +156,25 @@ SCHEDULE = [ { "in": ['...'], "name": 'Regression: empty', - "error": re.compile(r"document\s+header\s+not\s+found") + "error": yaml.parser.ParserError, }, { "in": [ '# comment', '...' ], "name": 'Regression: only_comment', - "error": re.compile(r"document\s+ header\s+ not\s+ found") + "error": yaml.parser.ParserError, }, { + "skip": True, # A corner case, which is apparently not + # clear even from the spec file "out": None, "in": [ '---', '...' ], "name": 'Regression: only_header', - "error": re.compile(r"Premature\s+end", re.I), + "x-error": yaml.parser.ParserError, }, { - "out": None, "in": [ '---', '---', '...' ], "name": 'Regression: two_header', - "error": re.compile(r"Unexpected\s+start", re.I), + "error": yaml.composer.ComposerError, }, { "out": None, @@ -191,7 +189,7 @@ SCHEDULE = [ { "in": [ '--- ~', '---', '...' ], "name": 'Regression: two_undef', - "error": re.compile(r"Missing\s+'[.][.][.]'"), + "error": yaml.composer.ComposerError, }, { "out": 'foo', @@ -206,7 +204,7 @@ SCHEDULE = [ { "in": [ '--- foo', '--- bar', '...' ], "name": 'Regression: two_scalar', - "error": re.compile(r"Missing\s+'[.][.][.]'"), + "error": yaml.composer.ComposerError, }, { "out": ['foo'], @@ -310,49 +308,49 @@ SCHEDULE = [ }, { "name": "Unprintables", + "skip": False, "in": [ - " - - -", - " - \"\\z\\x01\\x02\\x03\\x04\\x05\\x06\\a\\x08\\t\\n\\v\\f\\r\\x0e\\x0f\"", - "- \"\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\e\\x1c\\x1d\\x1e\\x1f\"", - "- \" !\\\"#\$%&'()*+,-./\"", - "- 0123456789:;<=>?", - "- '\@ABCDEFGHIJKLMNO'", - "- 'PQRSTUVWXYZ[\\]^_'", - "- '`abcdefghijklmno'", - "- 'pqrstuvwxyz{|}~\177'", - "- \200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217", - "- \220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237", - "- \240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257", - "- \260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277", - "- \300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317", - "- \320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337", - "- \340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357", - "- \360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377", - "..." - ], + "---", + "- \"\\z\\x01\\x02\\x03\\x04\\x05\\x06\\a\\x08\\t\\n\\v\\f\\r\\x0e\\x0f\"", + "- \"\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\e\\x1c\\x1d\\x1e\\x1f\"", + "- \" !\\\"#\$%&'()*+,-./\"", + "- 0123456789:;<=>?", + "- '\@ABCDEFGHIJKLMNO'", + "- 'PQRSTUVWXYZ[\\]^_'", + "- '`abcdefghijklmno'", + "- 'pqrstuvwxyz{|}~\177'", + "- \200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217", + "- \220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237", + "- \240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257", + "- \260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277", + "- \300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317", + "- \320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337", + "- \340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357", + "- \360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377", + "..."], "out": [ - "\0\1\2\3\4\5\6\a\b\t\n\13\f\r\16\17", - "\20\21\22\23\24\25\26\27\30\31\32\e\34\35\36\37", - " !\"#\$%&'()*+,-./", - "0123456789:;<=>?", - "\@ABCDEFGHIJKLMNO", - "PQRSTUVWXYZ[\\]^_", - "`abcdefghijklmno", - "pqrstuvwxyz{|}~\177", - "\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217", - "\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237", - "\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257", - "\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277", - "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317", - "\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337", - "\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357", - "\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377" - ], + "\0\1\2\3\4\5\6\a\b\t\n\13\f\r\16\17", + "\20\21\22\23\24\25\26\27\30\31\32\e\34\35\36\37", + " !\"#\$%&'()*+,-./", + "0123456789:;<=>?", + "\@ABCDEFGHIJKLMNO", + "PQRSTUVWXYZ[\\]^_", + "`abcdefghijklmno", + "pqrstuvwxyz{|}~\177", + "\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217", + "\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237", + "\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257", + "\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277", + "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317", + "\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337", + "\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357", + "\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377" + ] }, { "name": 'Quoted hash keys', "in": [ - '---', ' "quoted": Magic!', ' "\n\t": newline, tab', '...', + '---', ' "quoted": Magic!', ' "\\n\\t": newline, tab', '...', ], "out": { "quoted": 'Magic!', @@ -360,63 +358,3 @@ SCHEDULE = [ }, }, ] - -# FIXME plan(tests=(len(SCHEDULE) * 5)) - -#sub iter { -# my $ar = shift; -# return sub { -# return shift @$ar; -# }; -#} - -class TestReader(unittest.TestCase): - def test_reader(self): - for test in SCHEDULE: - name = test['name'] - yaml = yamlish.Reader() - self.assert_(True, "%s: Created" % name) - self.assert_(isinstance(yaml, yamlish.Reader)) - - # diag "$name\n"; - - # unless ( $test->{in} ) { - # pass for 1 .. 2; - # use YAML; - # diag "Input for test:\n"; - # diag( Dump( $test->{out} ) ); - # next; - # } - - source = "\n".join([line for line in test['in']]) + "\n" - - try: - got = yaml.read(test['in']) # expecting test['in'] being an iterator - except IOError as exc: # FIXME no idea what - dollar_at = exc - - raw = yaml.get_raw() - - err = test['error'] # RE for testing results - if err: # if we have err, use it - if not err.search(dollar_at): # FIXME $@ (or dollar_at) is described - # in perlvar(1) the error status of the last eval(), which - # means that yaml.read(test['in']) - # if everything is alright, then it is None - self.assertFalse("%s: Error message" % name) - raise Exception(dollar_at) - self.assert_(not got, "%s: No result" % name) - else: - want = test['out'] - self.assert_(not dollar_at, "%s: No error\n%s" % (name, dollar_at)) - - self.assertEqual(got, want, """%s: Result matches - expected = %s - - observed = %s - """ % (name, want, got)) - self.assertEqual(raw, source, """%s: Captured source matches - expected = %s - - observed = %s - """ % (name, raw, source)) -- cgit