示例#1
0
def test_coerce_boolean():
    """Test coerce_boolean."""
    validator = ParsecValidator()
    # The good
    for value, result in [
        ('True', True),
        (' True ', True),
        ('"True"', True),
        ("'True'", True),
        ('true', True),
        (' true ', True),
        ('"true"', True),
        ("'true'", True),
        ('False', False),
        (' False ', False),
        ('"False"', False),
        ("'False'", False),
        ('false', False),
        (' false ', False),
        ('"false"', False),
        ("'false'", False),
        ('', None),
        ('  ', None)
    ]:
        assert validator.coerce_boolean(value, ['whatever']) == result
    # The bad
    for value in [
        'None', ' Who cares? ', '3.14', '[]', '[True]', 'True, False'
    ]:
        with pytest.raises(IllegalValueError):
            validator.coerce_boolean(value, ['whatever'])
示例#2
0
 def test_coerce_int_list(self):
     """Test coerce_int_list."""
     validator = ParsecValidator()
     # The good
     for value, results in [
         ('', []),
         ('3', [3]),
         ('1..10, 11..20..2',
          [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19]),
         ('18 .. 24', [18, 19, 20, 21, 22, 23, 24]),
         ('18 .. 24 .. 3', [18, 21, 24]),
         ('-10..10..3', [-10, -7, -4, -1, 2, 5, 8]),
         ('10*3, 4*-6', [3] * 10 + [-6] * 4),
         ('10*128, -78..-72, 2048',
          [128] * 10 + [-78, -77, -76, -75, -74, -73, -72, 2048])
     ]:
         self.assertEqual(
             validator.coerce_int_list(value, ['whatever']), results)
     # The bad
     for value in [
         'None', 'e, i, e, i, o', '[]', '1..3, x', 'one..ten'
     ]:
         self.assertRaises(
             IllegalValueError,
             validator.coerce_int_list, value, ['whatever'])
示例#3
0
 def test_coerce_float(self):
     """Test coerce_float."""
     validator = ParsecValidator()
     # The good
     for value, result in [
         ('3', 3.0),
         ('9.80', 9.80),
         ('3.141592654', 3.141592654),
         ('"3.141592654"', 3.141592654),
         ("'3.141592654'", 3.141592654),
         ('-3', -3.0),
         ('-3.1', -3.1),
         ('0', 0.0),
         ('-0', -0.0),
         ('0.0', 0.0),
         ('1e20', 1.0e20),
         ('6.02e23', 6.02e23),
         ('-1.6021765e-19', -1.6021765e-19),
         ('6.62607004e-34', 6.62607004e-34)
     ]:
         self.assertAlmostEqual(
             validator.coerce_float(value, ['whatever']), result)
     self.assertEqual(
         validator.coerce_int('', ['whatever']), None)  # not a number
     # The bad
     for value in [
         'None', ' Who cares? ', 'True', '[]', '[3.14]', '3.14, 2.72'
     ]:
         self.assertRaises(
             IllegalValueError,
             validator.coerce_float, value, ['whatever'])
示例#4
0
 def test_coerce_int_list(self):
     """Test coerce_int_list."""
     validator = ParsecValidator()
     # The good
     for value, results in [
         ('', []),
         ('3', [3]),
         ('1..10, 11..20..2',
          [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19]),
         ('18 .. 24', [18, 19, 20, 21, 22, 23, 24]),
         ('18 .. 24 .. 3', [18, 21, 24]),
         ('-10..10..3', [-10, -7, -4, -1, 2, 5, 8]),
         ('10*3, 4*-6', [3] * 10 + [-6] * 4),
         ('10*128, -78..-72, 2048',
          [128] * 10 + [-78, -77, -76, -75, -74, -73, -72, 2048])
     ]:
         self.assertEqual(
             validator.coerce_int_list(value, ['whatever']), results)
     # The bad
     for value in [
         'None', 'e, i, e, i, o', '[]', '1..3, x', 'one..ten'
     ]:
         self.assertRaises(
             IllegalValueError,
             validator.coerce_int_list, value, ['whatever'])
示例#5
0
 def test_coerce_boolean(self):
     """Test coerce_boolean."""
     validator = ParsecValidator()
     # The good
     for value, result in [
         ('True', True),
         (' True ', True),
         ('"True"', True),
         ("'True'", True),
         ('true', True),
         (' true ', True),
         ('"true"', True),
         ("'true'", True),
         ('False', False),
         (' False ', False),
         ('"False"', False),
         ("'False'", False),
         ('false', False),
         (' false ', False),
         ('"false"', False),
         ("'false'", False),
         ('', None),
         ('  ', None)
     ]:
         self.assertEqual(
             validator.coerce_boolean(value, ['whatever']), result)
     # The bad
     for value in [
         'None', ' Who cares? ', '3.14', '[]', '[True]', 'True, False'
     ]:
         self.assertRaises(
             IllegalValueError,
             validator.coerce_boolean, value, ['whatever'])
示例#6
0
 def test_coerce_float(self):
     """Test coerce_float."""
     validator = ParsecValidator()
     # The good
     for value, result in [
         ('3', 3.0),
         ('9.80', 9.80),
         ('3.141592654', 3.141592654),
         ('"3.141592654"', 3.141592654),
         ("'3.141592654'", 3.141592654),
         ('-3', -3.0),
         ('-3.1', -3.1),
         ('0', 0.0),
         ('-0', -0.0),
         ('0.0', 0.0),
         ('1e20', 1.0e20),
         ('6.02e23', 6.02e23),
         ('-1.6021765e-19', -1.6021765e-19),
         ('6.62607004e-34', 6.62607004e-34)
     ]:
         self.assertAlmostEqual(
             validator.coerce_float(value, ['whatever']), result)
     self.assertEqual(
         validator.coerce_int('', ['whatever']), None)  # not a number
     # The bad
     for value in [
         'None', ' Who cares? ', 'True', '[]', '[3.14]', '3.14, 2.72'
     ]:
         self.assertRaises(
             IllegalValueError,
             validator.coerce_float, value, ['whatever'])
示例#7
0
 def test_coerce_boolean(self):
     """Test coerce_boolean."""
     validator = ParsecValidator()
     # The good
     for value, result in [
         ('True', True),
         (' True ', True),
         ('"True"', True),
         ("'True'", True),
         ('true', True),
         (' true ', True),
         ('"true"', True),
         ("'true'", True),
         ('False', False),
         (' False ', False),
         ('"False"', False),
         ("'False'", False),
         ('false', False),
         (' false ', False),
         ('"false"', False),
         ("'false'", False),
         ('', None),
         ('  ', None)
     ]:
         self.assertEqual(
             validator.coerce_boolean(value, ['whatever']), result)
     # The bad
     for value in [
         'None', ' Who cares? ', '3.14', '[]', '[True]', 'True, False'
     ]:
         self.assertRaises(
             IllegalValueError,
             validator.coerce_boolean, value, ['whatever'])
示例#8
0
 def test_parsec_validator_invalid_key(self):
     parsec_validator = ParsecValidator()
     cfg = OrderedDictWithDefaults()
     cfg['section1'] = OrderedDictWithDefaults()
     cfg['section1']['value1'] = '1'
     cfg['section1']['value2'] = '2'
     cfg['section22'] = 'abc'
     with self.assertRaises(IllegalItemError):
         parsec_validator.validate(cfg, SAMPLE_SPEC_1)
示例#9
0
 def test_parsec_validator_invalid_key(self):
     parsec_validator = ParsecValidator()
     cfg = OrderedDictWithDefaults()
     cfg['section1'] = OrderedDictWithDefaults()
     cfg['section1']['value1'] = '1'
     cfg['section1']['value2'] = '2'
     cfg['section22'] = 'abc'
     with self.assertRaises(IllegalItemError):
         parsec_validator.validate(cfg, SAMPLE_SPEC_1)
示例#10
0
def test_parsec_validator_invalid_key(sample_spec):
    parsec_validator = ParsecValidator()
    cfg = OrderedDictWithDefaults()
    cfg['section1'] = OrderedDictWithDefaults()
    cfg['section1']['value1'] = '1'
    cfg['section1']['value2'] = '2'
    cfg['section22'] = 'abc'
    with pytest.raises(IllegalItemError):
        parsec_validator.validate(cfg, sample_spec)
示例#11
0
 def test_parsec_validator_invalid_key_with_many_1(self):
     parsec_validator = ParsecValidator()
     cfg = OrderedDictWithDefaults()
     cfg['section1'] = OrderedDictWithDefaults()
     cfg['section1']['value1'] = '1'
     cfg['section1']['value2'] = '2'
     cfg['section3000000'] = OrderedDictWithDefaults()
     parsec_validator.validate(cfg, SAMPLE_SPEC_1)
     # TBD assertIsNotNone when 2.6+
     self.assertTrue(parsec_validator is not None)
示例#12
0
def test_parsec_validator_invalid_key_with_many_spaces(sample_spec):
    parsec_validator = ParsecValidator()
    cfg = OrderedDictWithDefaults()
    cfg['section1'] = OrderedDictWithDefaults()
    cfg['section1']['value1'] = '1'
    cfg['section1']['value2'] = '2'
    cfg['section  3000000'] = 'test'
    with pytest.raises(IllegalItemError) as cm:
        parsec_validator.validate(cfg, sample_spec)
        assert "section  3000000 - (consecutive spaces)" == str(cm.exception)
示例#13
0
 def test_parsec_validator_invalid_key_with_many_1(self):
     parsec_validator = ParsecValidator()
     cfg = OrderedDictWithDefaults()
     cfg['section1'] = OrderedDictWithDefaults()
     cfg['section1']['value1'] = '1'
     cfg['section1']['value2'] = '2'
     cfg['section3000000'] = OrderedDictWithDefaults()
     parsec_validator.validate(cfg, SAMPLE_SPEC_1)
     # TBD assertIsNotNone when 2.6+
     self.assertTrue(parsec_validator is not None)
示例#14
0
def test_parsec_validator_invalid_key_with_many_1(sample_spec):
    parsec_validator = ParsecValidator()
    cfg = OrderedDictWithDefaults()
    cfg['section1'] = OrderedDictWithDefaults()
    cfg['section1']['value1'] = '1'
    cfg['section1']['value2'] = '2'
    cfg['section3000000'] = OrderedDictWithDefaults()
    parsec_validator.validate(cfg, sample_spec)
    # TBD assertIsNotNone when 2.6+
    assert parsec_validator is not None
示例#15
0
 def test_parsec_validator_invalid_key_with_many_2(self):
     parsec_validator = ParsecValidator()
     cfg = OrderedDictWithDefaults()
     cfg['section3'] = OrderedDictWithDefaults()
     cfg['section3']['title'] = '1'
     cfg['section3']['entries'] = OrderedDictWithDefaults()
     cfg['section3']['entries']['key'] = 'name'
     cfg['section3']['entries']['value'] = "1, 2, 3, 4"
     parsec_validator.validate(cfg, SAMPLE_SPEC_1)
     # TBD assertIsNotNone when 2.6+
     self.assertTrue(parsec_validator is not None)
示例#16
0
def test_parsec_validator(sample_spec):
    parsec_validator = ParsecValidator()
    cfg = OrderedDictWithDefaults()
    cfg['section1'] = OrderedDictWithDefaults()
    cfg['section1']['value1'] = '1'
    cfg['section1']['value2'] = '2'
    cfg['section3'] = OrderedDictWithDefaults()
    cfg['section3']['title'] = None
    parsec_validator.validate(cfg, sample_spec)
    # TBD assertIsNotNone when 2.6+
    assert parsec_validator is not None
示例#17
0
 def test_parsec_validator_invalid_key_with_many_2(self):
     parsec_validator = ParsecValidator()
     cfg = OrderedDictWithDefaults()
     cfg['section3'] = OrderedDictWithDefaults()
     cfg['section3']['title'] = '1'
     cfg['section3']['entries'] = OrderedDictWithDefaults()
     cfg['section3']['entries']['key'] = 'name'
     cfg['section3']['entries']['value'] = "1, 2, 3, 4"
     parsec_validator.validate(cfg, SAMPLE_SPEC_1)
     # TBD assertIsNotNone when 2.6+
     self.assertTrue(parsec_validator is not None)
示例#18
0
 def test_parsec_validator_invalid_key_no_spec(self):
     parsec_validator = ParsecValidator()
     cfg = OrderedDictWithDefaults()
     cfg['section1'] = OrderedDictWithDefaults()
     cfg['section1']['value1'] = '1'
     cfg['section1']['value2'] = '2'
     cfg['section22'] = 'abc'
     spec = SAMPLE_SPEC_1.copy()
     del (spec['__MANY__'])
     with self.assertRaises(IllegalItemError):
         parsec_validator.validate(cfg, spec)
示例#19
0
 def test_parsec_validator(self):
     parsec_validator = ParsecValidator()
     cfg = OrderedDictWithDefaults()
     cfg['section1'] = OrderedDictWithDefaults()
     cfg['section1']['value1'] = '1'
     cfg['section1']['value2'] = '2'
     cfg['section3'] = OrderedDictWithDefaults()
     cfg['section3']['title'] = None
     parsec_validator.validate(cfg, SAMPLE_SPEC_1)
     # TBD assertIsNotNone when 2.6+
     self.assertTrue(parsec_validator is not None)
示例#20
0
def test_parsec_validator_invalid_key_with_many_2(sample_spec):
    parsec_validator = ParsecValidator()
    cfg = OrderedDictWithDefaults()
    cfg['section3'] = OrderedDictWithDefaults()
    cfg['section3']['title'] = '1'
    cfg['section3']['entries'] = OrderedDictWithDefaults()
    cfg['section3']['entries']['key'] = 'name'
    cfg['section3']['entries']['value'] = "1, 2, 3, 4"
    parsec_validator.validate(cfg, sample_spec)
    # TBD assertIsNotNone when 2.6+
    assert parsec_validator is not None
示例#21
0
 def test_parsec_validator_invalid_key_with_many_spaces(self):
     parsec_validator = ParsecValidator()
     cfg = OrderedDictWithDefaults()
     cfg['section1'] = OrderedDictWithDefaults()
     cfg['section1']['value1'] = '1'
     cfg['section1']['value2'] = '2'
     cfg['section  3000000'] = 'test'
     with self.assertRaises(IllegalItemError) as cm:
         parsec_validator.validate(cfg, SAMPLE_SPEC_1)
     self.assertEqual("section  3000000 - (consecutive spaces)",
                      str(cm.exception))
示例#22
0
 def test_parsec_validator(self):
     parsec_validator = ParsecValidator()
     cfg = OrderedDictWithDefaults()
     cfg['section1'] = OrderedDictWithDefaults()
     cfg['section1']['value1'] = '1'
     cfg['section1']['value2'] = '2'
     cfg['section3'] = OrderedDictWithDefaults()
     cfg['section3']['title'] = None
     parsec_validator.validate(cfg, SAMPLE_SPEC_1)
     # TBD assertIsNotNone when 2.6+
     self.assertTrue(parsec_validator is not None)
示例#23
0
 def test_parsec_validator_invalid_key_no_spec(self):
     parsec_validator = ParsecValidator()
     cfg = OrderedDictWithDefaults()
     cfg['section1'] = OrderedDictWithDefaults()
     cfg['section1']['value1'] = '1'
     cfg['section1']['value2'] = '2'
     cfg['section22'] = 'abc'
     spec = SAMPLE_SPEC_1.copy()
     del (spec['__MANY__'])
     with self.assertRaises(IllegalItemError):
         parsec_validator.validate(cfg, spec)
示例#24
0
 def test_parsec_validator_invalid_key_with_many_spaces(self):
     parsec_validator = ParsecValidator()
     cfg = OrderedDictWithDefaults()
     cfg['section1'] = OrderedDictWithDefaults()
     cfg['section1']['value1'] = '1'
     cfg['section1']['value2'] = '2'
     cfg['section  3000000'] = 'test'
     with self.assertRaises(IllegalItemError) as cm:
         parsec_validator.validate(cfg, SAMPLE_SPEC_1)
     self.assertEqual(
         "section  3000000 - (consecutive spaces)",
         str(cm.exception))
示例#25
0
def test_coerce_str_list():
    """Test coerce_str_list."""
    validator = ParsecValidator()
    # The good
    for value, results in [
        ('', []), ('Hello', ['Hello']), ('"Hello"', ['Hello']), ('1', ['1']),
        ('Mercury, Venus, Earth, Mars', ['Mercury', 'Venus', 'Earth', 'Mars']),
        ('Mercury, Venus, Earth, Mars,\n"Jupiter",\n"Saturn"\n',
         ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn']),
        ('New Zealand, United Kingdom', ['New Zealand', 'United Kingdom'])
    ]:
        assert validator.coerce_str_list(value, ['whatever']) == results
示例#26
0
 def test_parsec_validator_invalid_key_with_many_invalid_values(self):
     for spec, cfg, msg in get_parsec_validator_invalid_values():
         parsec_validator = ParsecValidator()
         if msg is not None:
             with self.assertRaises(IllegalValueError) as cm:
                 parsec_validator.validate(cfg, spec)
             self.assertEqual(msg, str(cm.exception))
         else:
             # cylc.flow.parsec_validator.validate(cfg, spec)
             # let's use the alias `parsec_validate` here
             parsec_validate(cfg, spec)
             # TBD assertIsNotNone when 2.6+
             self.assertTrue(parsec_validator is not None)
示例#27
0
 def test_parsec_validator_invalid_key_with_many_invalid_values(self):
     for spec, cfg, msg in get_parsec_validator_invalid_values():
         parsec_validator = ParsecValidator()
         if msg is not None:
             with self.assertRaises(IllegalValueError) as cm:
                 parsec_validator.validate(cfg, spec)
             self.assertEqual(msg, str(cm.exception))
         else:
             # cylc.flow.parsec_validator.validate(cfg, spec)
             # let's use the alias `parsec_validate` here
             parsec_validate(cfg, spec)
             # TBD assertIsNotNone when 2.6+
             self.assertTrue(parsec_validator is not None)
示例#28
0
def test_parsec_validator_invalid_key_with_many_invalid_values(
        validator_invalid_values):
    for spec, cfg, msg in validator_invalid_values:
        parsec_validator = ParsecValidator()
        if msg is not None:
            with pytest.raises(IllegalValueError) as cm:
                parsec_validator.validate(cfg, spec)
            assert msg == str(cm.value)
        else:
            # cylc.flow.parsec_validator.validate(cfg, spec)
            # let's use the alias `parsec_validate` here
            parsec_validate(cfg, spec)
            # TBD assertIsNotNone when 2.6+
            assert parsec_validator is not None
示例#29
0
def test_parsec_validator_invalid_key_no_spec(sample_spec):
    parsec_validator = ParsecValidator()
    cfg = OrderedDictWithDefaults()
    cfg['section1'] = OrderedDictWithDefaults()
    cfg['section1']['value1'] = '1'
    cfg['section1']['value2'] = '2'
    cfg['section22'] = 'abc'
    # remove the user-defined section from the spec
    sample_spec._children = {
        key: value
        for key, value in sample_spec._children.items() if key != '__MANY__'
    }
    with pytest.raises(IllegalItemError):
        parsec_validator.validate(cfg, sample_spec)
示例#30
0
def test_coerce_str():
    """Test coerce_str."""
    validator = ParsecValidator()
    # The good
    for value, result in [
        ('', ''), ('Hello World!', 'Hello World!'),
        ('"Hello World!"', 'Hello World!'),
        ('"Hello Cylc\'s World!"', 'Hello Cylc\'s World!'),
        ("'Hello World!'", 'Hello World!'), ('0', '0'),
        ('My list is:\nfoo, bar, baz\n', 'My list is:\nfoo, bar, baz'),
        ('    Hello:\n    foo\n    bar\n    baz\n', 'Hello:\nfoo\nbar\nbaz'),
        ('    Hello:\n        foo\n    Greet\n        baz\n',
         'Hello:\n    foo\nGreet\n    baz'), ('False', 'False'),
        ('None', 'None'), (['a', 'b'], 'a\nb')
    ]:
        assert validator.coerce_str(value, ['whatever']) == result
示例#31
0
 def test_coerce_int(self):
     """Test coerce_int."""
     validator = ParsecValidator()
     # The good
     for value, result in [('0', 0), ('3', 3), ('-3', -3), ('-0', -0),
                           ('653456', 653456),
                           ('-8362583645365', -8362583645365)]:
         self.assertAlmostEqual(validator.coerce_int(value, ['whatever']),
                                result)
     self.assertEqual(validator.coerce_int('', ['whatever']),
                      None)  # not a number
     # The bad
     for value in [
             'None', ' Who cares? ', 'True', '4.8', '[]', '[3]', '60*60'
     ]:
         self.assertRaises(IllegalValueError, validator.coerce_int, value,
                           ['whatever'])
示例#32
0
 def test_coerce_str_list(self):
     """Test coerce_str_list."""
     validator = ParsecValidator()
     # The good
     for value, results in [
         ('', []),
         ('Hello', ['Hello']),
         ('"Hello"', ['Hello']),
         ('1', ['1']),
         ('Mercury, Venus, Earth, Mars',
          ['Mercury', 'Venus', 'Earth', 'Mars']),
         ('Mercury, Venus, Earth, Mars,\n"Jupiter",\n"Saturn"\n',
          ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn']),
         ('New Zealand, United Kingdom',
          ['New Zealand', 'United Kingdom'])
     ]:
         self.assertEqual(
             validator.coerce_str_list(value, ['whatever']), results)
示例#33
0
def test_coerce_float_list():
    """Test coerce_float_list."""
    validator = ParsecValidator()
    # The good
    for value, results in [('', []), ('3', [3.0]),
                           ('2*3.141592654', [3.141592654, 3.141592654]),
                           ('12*8, 8*12.0', [8.0] * 12 + [12.0] * 8),
                           ('-3, -2, -1, -0.0, 1.0',
                            [-3.0, -2.0, -1.0, -0.0, 1.0]),
                           ('6.02e23, -1.6021765e-19, 6.62607004e-34',
                            [6.02e23, -1.6021765e-19, 6.62607004e-34])]:
        items = validator.coerce_float_list(value, ['whatever'])
        for item, result in zip(items, results):
            pytest.approx(item, result)
    # The bad
    for value in [
            'None', 'e, i, e, i, o', '[]', '[3.14]', 'pi, 2.72', '2*True'
    ]:
        with pytest.raises(IllegalValueError):
            validator.coerce_float_list(value, ['whatever'])
示例#34
0
def test_coerce_none_fails():
    with pytest.raises(AttributeError):
        ParsecValidator.coerce_boolean(None, [])
    with pytest.raises(AttributeError):
        ParsecValidator.coerce_float(None, [])
    with pytest.raises(AttributeError):
        ParsecValidator.coerce_int(None, [])
示例#35
0
 def test_coerce_none_fails(self):
     with self.assertRaises(AttributeError):
         ParsecValidator.coerce_boolean(None, [])
     with self.assertRaises(AttributeError):
         ParsecValidator.coerce_float(None, [])
     with self.assertRaises(AttributeError):
         ParsecValidator.coerce_int(None, [])
示例#36
0
def test_coerce_float():
    """Test coerce_float."""
    validator = ParsecValidator()
    # The good
    for value, result in [
        ('3', 3.0),
        ('9.80', 9.80),
        ('3.141592654', 3.141592654),
        ('"3.141592654"', 3.141592654),
        ("'3.141592654'", 3.141592654),
        ('-3', -3.0),
        ('-3.1', -3.1),
        ('0', 0.0),
        ('-0', -0.0),
        ('0.0', 0.0),
        ('1e20', 1.0e20),
        ('6.02e23', 6.02e23),
        ('-1.6021765e-19', -1.6021765e-19),
        ('6.62607004e-34', 6.62607004e-34)
    ]:
        assert pytest.approx(
            validator.coerce_float(value, ['whatever']), result)
    assert validator.coerce_int('', ['whatever']) is None  # not a number
    # The bad
    for value in [
        'None', ' Who cares? ', 'True', '[]', '[3.14]', '3.14, 2.72'
    ]:
        with pytest.raises(IllegalValueError):
            validator.coerce_float(value, ['whatever'])
示例#37
0
 def test_coerce_none_fails(self):
     with self.assertRaises(AttributeError):
         ParsecValidator.coerce_boolean(None, [])
     with self.assertRaises(AttributeError):
         ParsecValidator.coerce_float(None, [])
     with self.assertRaises(AttributeError):
         ParsecValidator.coerce_int(None, [])
示例#38
0
 def test_coerce_str(self):
     """Test coerce_str."""
     validator = ParsecValidator()
     # The good
     for value, result in [
         ('', ''),
         ('Hello World!', 'Hello World!'),
         ('"Hello World!"', 'Hello World!'),
         ('"Hello Cylc\'s World!"', 'Hello Cylc\'s World!'),
         ("'Hello World!'", 'Hello World!'),
         ('0', '0'),
         ('My list is:\nfoo, bar, baz\n', 'My list is:\nfoo, bar, baz'),
         ('    Hello:\n    foo\n    bar\n    baz\n',
          'Hello:\nfoo\nbar\nbaz'),
         ('    Hello:\n        foo\n    Greet\n        baz\n',
          'Hello:\n    foo\nGreet\n    baz'),
         ('False', 'False'),
         ('None', 'None'),
         (['a', 'b'], 'a\nb')
     ]:
         self.assertEqual(
             validator.coerce_str(value, ['whatever']), result)
示例#39
0
 def test_coerce_float_list(self):
     """Test coerce_float_list."""
     validator = ParsecValidator()
     # The good
     for value, results in [
         ('', []),
         ('3', [3.0]),
         ('2*3.141592654', [3.141592654, 3.141592654]),
         ('12*8, 8*12.0', [8.0] * 12 + [12.0] * 8),
         ('-3, -2, -1, -0.0, 1.0', [-3.0, -2.0, -1.0, -0.0, 1.0]),
         ('6.02e23, -1.6021765e-19, 6.62607004e-34',
          [6.02e23, -1.6021765e-19, 6.62607004e-34])
     ]:
         items = validator.coerce_float_list(value, ['whatever'])
         for item, result in zip(items, results):
             self.assertAlmostEqual(item, result)
     # The bad
     for value in [
         'None', 'e, i, e, i, o', '[]', '[3.14]', 'pi, 2.72', '2*True'
     ]:
         self.assertRaises(
             IllegalValueError,
             validator.coerce_float_list, value, ['whatever'])
示例#40
0
def test_strip_and_unquote_list_parsec():
    """Test strip_and_unquote_list using ParsecValidator."""
    for value, results in [('"a"\n"b"', ['a', 'b']), ('"a", "b"', ['a', 'b']),
                           ('"a", "b"', ['a', 'b']), ('"c" # d', ['c']),
                           ('"a", "b", "c" # d', ['a', 'b', 'c']),
                           ('"a"\n"b"\n"c" # d', ['a', 'b', 'c']),
                           ("'a', 'b'", ['a', 'b']), ("'c' #d", ['c']),
                           ("'a', 'b', 'c' # d", ['a', 'b', 'c']),
                           ("'a'\n'b'\n'c' # d", ['a', 'b', 'c']),
                           ('a, b, c,', ['a', 'b', 'c']),
                           ('a, b, c # d', ['a', 'b', 'c']),
                           ('a, b, c\n"d"', ['a', 'b', 'd']),
                           ('a, b, c\n"d" # e', ['a', 'b', '"d"'])]:
        assert results == ParsecValidator.strip_and_unquote_list(['a'], value)
示例#41
0
 def test_coerce_int(self):
     """Test coerce_int."""
     validator = ParsecValidator()
     # The good
     for value, result in [
         ('0', 0),
         ('3', 3),
         ('-3', -3),
         ('-0', -0),
         ('653456', 653456),
         ('-8362583645365', -8362583645365)
     ]:
         self.assertAlmostEqual(
             validator.coerce_int(value, ['whatever']), result)
     self.assertEqual(
         validator.coerce_int('', ['whatever']), None)  # not a number
     # The bad
     for value in [
         'None', ' Who cares? ', 'True', '4.8', '[]', '[3]', '60*60'
     ]:
         self.assertRaises(
             IllegalValueError,
             validator.coerce_int, value, ['whatever'])
示例#42
0
def test_coerce_int():
    """Test coerce_int."""
    validator = ParsecValidator()
    # The good
    for value, result in [('0', 0), ('3', 3), ('-3', -3), ('-0', -0),
                          ('653456', 653456),
                          ('-8362583645365', -8362583645365)]:
        pytest.approx(validator.coerce_int(value, ['whatever']), result)
    assert validator.coerce_int('', ['whatever']) is None  # not a number
    # The bad
    for value in ['None', ' Who cares? ', 'True', '4.8', '[]', '[3]', '60*60']:
        with pytest.raises(IllegalValueError):
            validator.coerce_int(value, ['whatever'])
示例#43
0
 def test_strip_and_unquote_list(self):
     for value, results in [
         ('"a"\n"b"', ['a', 'b']),
         ('"a", "b"', ['a', 'b']),
         ('"a", "b"', ['a', 'b']),
         ('"c" # d', ['c']),
         ('"a", "b", "c" # d', ['a', 'b', 'c']),
         ('"a"\n"b"\n"c" # d', ['a', 'b', 'c']),
         ("'a', 'b'", ['a', 'b']),
         ("'c' #d", ['c']),
         ("'a', 'b', 'c' # d", ['a', 'b', 'c']),
         ("'a'\n'b'\n'c' # d", ['a', 'b', 'c']),
         ('a, b, c,', ['a', 'b', 'c']),
         ('a, b, c # d', ['a', 'b', 'c']),
         ('a, b, c\n"d"', ['a', 'b', 'd']),
         ('a, b, c\n"d" # e', ['a', 'b', '"d"'])
     ]:
         self.assertEqual(results, ParsecValidator.strip_and_unquote_list(
             ['a'], value))
示例#44
0
def test_strip_and_unquote_list_multiparam():
    with pytest.raises(ListValueError):
        ParsecValidator.strip_and_unquote_list(['a'], 'a, b, c<a,b>')
示例#45
0
def test_strip_and_unquote():
    with pytest.raises(IllegalValueError):
        ParsecValidator.strip_and_unquote(['a'], '"""')
示例#46
0
 def test_strip_and_unquote_list_multiparam(self):
     with self.assertRaises(ListValueError):
         ParsecValidator.strip_and_unquote_list(
             ['a'], 'a, b, c<a,b>'
         )
示例#47
0
 def test_strip_and_unquote_list_multiparam(self):
     with self.assertRaises(ListValueError):
         ParsecValidator.strip_and_unquote_list(
             ['a'], 'a, b, c<a,b>'
         )
示例#48
0
 def test_strip_and_unquote(self):
     with self.assertRaises(IllegalValueError):
         ParsecValidator.strip_and_unquote(['a'], '"""')