コード例 #1
0
ファイル: test_ranges.py プロジェクト: roskakori/cutplace
 def test_fails_on_parse_symbolic_range(self):
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError,
         "range must be specified using decimal or integer numbers and ellipsis (...) but found: 'TAB'*",
         ranges.DecimalRange, "TAB")
     self.assertRaises(errors.InterfaceError, ranges.DecimalRange, "vt")
     self.assertRaises(errors.InterfaceError, ranges.DecimalRange, "Tab...Vt")
     self.assertRaises(errors.InterfaceError, ranges.DecimalRange, "Tab...11")
コード例 #2
0
ファイル: test_ranges.py プロジェクト: butterhirsch/cutplace
 def test_fails_on_parse_symbolic_range(self):
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError,
         "range must be specified using decimal or integer numbers and ellipsis (...) but found: 'TAB'*",
         ranges.DecimalRange, "TAB")
     self.assertRaises(errors.InterfaceError, ranges.DecimalRange, "vt")
     self.assertRaises(errors.InterfaceError, ranges.DecimalRange, "Tab...Vt")
     self.assertRaises(errors.InterfaceError, ranges.DecimalRange, "Tab...11")
コード例 #3
0
ファイル: test_data.py プロジェクト: roskakori/cutplace
 def _test_fails_on_broken_validated_character(self, value, anticipated_error_message_pattern):
     dev_test.assert_raises_and_fnmatches(
         self,
         errors.InterfaceError,
         anticipated_error_message_pattern,
         data.DataFormat._validated_character,
         "x",
         value,
         self._location,
     )
コード例 #4
0
ファイル: test_data.py プロジェクト: roskakori/cutplace
 def test_fails_on_zero_item_delimiter(self):
     delimited_format = data.DataFormat(data.FORMAT_DELIMITED)
     dev_test.assert_raises_and_fnmatches(
         self,
         errors.InterfaceError,
         "data format property 'item_delimiter' must not be 0 (*)",
         delimited_format.set_property,
         data.KEY_ITEM_DELIMITER,
         "\x00",
     )
コード例 #5
0
ファイル: test_fields.py プロジェクト: roskakori/cutplace
 def test_fails_on_invalid_character(self):
     data_format = data.DataFormat(data.FORMAT_DELIMITED)
     data_format.set_property(data.KEY_ALLOWED_CHARACTERS, '"a"..."c"')
     field_format = fields.AbstractFieldFormat('something', False, '3...5', '', data_format)
     field_format.validate_characters('cba')
     dev_test.assert_raises_and_fnmatches(
         self, errors.FieldValueError,
         "character 'x' (code point U+0078, decimal 120) in field 'something' at column 3 "
         + "must be an allowed character: 97...99",
         field_format.validate_characters, 'abxba'
     )
コード例 #6
0
ファイル: test_ranges.py プロジェクト: roskakori/cutplace
 def test_fails_on_inconsistent_overlapping_multi_range(self):
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError,
         "overlapping parts in decimal range must be cleaned up: '1.0...2.4' and '2.3...3.4'",
         ranges.DecimalRange, '1...2.4, 9...10, 2.3...3.4')
     self.assertRaises(errors.InterfaceError, ranges.DecimalRange, "1...2.4, 2.3...3.4")
     self.assertRaises(errors.InterfaceError, ranges.DecimalRange, "1..., 2...3.1")
     self.assertRaises(errors.InterfaceError, ranges.DecimalRange, "...5.9, 2...3")
     self.assertRaises(errors.InterfaceError, ranges.DecimalRange, "...5, ...4.9")
     self.assertRaises(errors.InterfaceError, ranges.DecimalRange, "...5, 1...")
     self.assertRaises(errors.InterfaceError, ranges.DecimalRange, "...5, 2")
コード例 #7
0
 def test_fails_on_invalid_character(self):
     data_format = data.DataFormat(data.FORMAT_DELIMITED)
     data_format.set_property(data.KEY_ALLOWED_CHARACTERS, '"a"..."c"')
     field_format = fields.AbstractFieldFormat('something', False, '3...5', '', data_format)
     field_format.validate_characters('cba')
     dev_test.assert_raises_and_fnmatches(
         self, errors.FieldValueError,
         "character 'x' (code point U+0078, decimal 120) in field 'something' at column 3 "
         + "must be an allowed character: 97...99",
         field_format.validate_characters, 'abxba'
     )
コード例 #8
0
ファイル: test_ranges.py プロジェクト: butterhirsch/cutplace
 def test_fails_on_inconsistent_overlapping_multi_range(self):
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError,
         "overlapping parts in decimal range must be cleaned up: '1.0...2.4' and '2.3...3.4'",
         ranges.DecimalRange, '1...2.4, 9...10, 2.3...3.4')
     self.assertRaises(errors.InterfaceError, ranges.DecimalRange, "1...2.4, 2.3...3.4")
     self.assertRaises(errors.InterfaceError, ranges.DecimalRange, "1..., 2...3.1")
     self.assertRaises(errors.InterfaceError, ranges.DecimalRange, "...5.9, 2...3")
     self.assertRaises(errors.InterfaceError, ranges.DecimalRange, "...5, ...4.9")
     self.assertRaises(errors.InterfaceError, ranges.DecimalRange, "...5, 1...")
     self.assertRaises(errors.InterfaceError, ranges.DecimalRange, "...5, 2")
コード例 #9
0
ファイル: test_fields.py プロジェクト: roskakori/cutplace
 def test_fails_on_inconsistent_fixed_length_and_rule(self):
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError,
         "length must be consistent with rule: "
         "length of partial rule limit '1234' is 4 but must be within range: 1...3",
         fields.IntegerFieldFormat, 'x', False, '3', '...1234', _FIXED_FORMAT
     )
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError,
         "length must be consistent with rule: "
         "length of partial rule limit '1234' is 4 but must be within range: 1...3",
         fields.IntegerFieldFormat, 'x', False, '3', '123...456, 1234...', _FIXED_FORMAT
     )
コード例 #10
0
 def test_fails_on_inconsistent_fixed_length_and_rule(self):
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError,
         "length must be consistent with rule: "
         "length of partial rule limit '1234' is 4 but must be within range: 1...3",
         fields.IntegerFieldFormat, 'x', False, '3', '...1234', _FIXED_FORMAT
     )
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError,
         "length must be consistent with rule: "
         "length of partial rule limit '1234' is 4 but must be within range: 1...3",
         fields.IntegerFieldFormat, 'x', False, '3', '123...456, 1234...', _FIXED_FORMAT
     )
コード例 #11
0
ファイル: test_ranges.py プロジェクト: roskakori/cutplace
    def test_fails_on_value_out_of_range(self):
        lower_and_upper_range = ranges.DecimalRange("-1.2...1.5")
        dev_test.assert_raises_and_fnmatches(
            self, errors.RangeValueError, "x is Decimal('-1.3') but must be within range: '-1.2...1.5'",
            lower_and_upper_range.validate, "x", '-1.3')
        self.assertRaises(errors.RangeValueError, lower_and_upper_range.validate, "x", decimal.Decimal('1.6'))

        lower_range = ranges.DecimalRange("1.1...")
        self.assertRaises(errors.RangeValueError, lower_range.validate, "x", 1)

        upper_range = ranges.DecimalRange("...1.1")
        self.assertRaises(errors.RangeValueError, upper_range.validate, "x", decimal.Decimal('1.2'))

        multi_range = ranges.DecimalRange("1.1...4.9, 7.1...9")
        self.assertRaises(errors.RangeValueError, multi_range.validate, "x", 1)
        self.assertRaises(errors.RangeValueError, multi_range.validate, "x", 5)
        self.assertRaises(errors.RangeValueError, multi_range.validate, "x", 7)
        self.assertRaises(errors.RangeValueError, multi_range.validate, "x", decimal.Decimal('9.1'))
コード例 #12
0
ファイル: test_ranges.py プロジェクト: butterhirsch/cutplace
    def test_fails_on_value_out_of_range(self):
        lower_and_upper_range = ranges.DecimalRange("-1.2...1.5")
        dev_test.assert_raises_and_fnmatches(
            self, errors.RangeValueError, "x is Decimal('-1.3') but must be within range: '-1.2...1.5'",
            lower_and_upper_range.validate, "x", '-1.3')
        self.assertRaises(errors.RangeValueError, lower_and_upper_range.validate, "x", decimal.Decimal('1.6'))

        lower_range = ranges.DecimalRange("1.1...")
        self.assertRaises(errors.RangeValueError, lower_range.validate, "x", 1)

        upper_range = ranges.DecimalRange("...1.1")
        self.assertRaises(errors.RangeValueError, upper_range.validate, "x", decimal.Decimal('1.2'))

        multi_range = ranges.DecimalRange("1.1...4.9, 7.1...9")
        self.assertRaises(errors.RangeValueError, multi_range.validate, "x", 1)
        self.assertRaises(errors.RangeValueError, multi_range.validate, "x", 5)
        self.assertRaises(errors.RangeValueError, multi_range.validate, "x", 7)
        self.assertRaises(errors.RangeValueError, multi_range.validate, "x", decimal.Decimal('9.1'))
コード例 #13
0
ファイル: test_data.py プロジェクト: butterhirsch/cutplace
 def _test_fails_on_broken_validated_character(self, value, anticipated_error_message_pattern):
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError, anticipated_error_message_pattern,
         data.DataFormat._validated_character, 'x', value, self._location)
コード例 #14
0
ファイル: test_validio.py プロジェクト: ytec-nl/ytec-cutplace
 def test_fails_on_csv_with_fewer_elements_than_expected(self):
     cid = interface.Cid(dev_test.CID_CUSTOMERS_XLS_PATH)
     with validio.Reader(cid, dev_test.path_to_test_data("broken_customers_fewer_elements.csv")) as reader:
         dev_test.assert_raises_and_fnmatches(
             self, errors.DataError,
             "*(R3C1): row must contain 5 fields but only has 4: *'19253', *'Webster Inc.', *'', *''?", reader.validate_rows)
コード例 #15
0
 def test_fails_on_multiple_tokens_in_rule(self):
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError, "constant rule must be a single Python token but also found: ';'",
         fields.ConstantFieldFormat, 'multiple_tokens', False, None, '"x";', _ANY_FORMAT)
コード例 #16
0
 def test_fails_on_missing_empty_flag_with_empty_rule(self):
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError, 'field must be marked as empty to describe a constant empty value',
         fields.ConstantFieldFormat, 'broken_empty', False, None, '', _ANY_FORMAT)
コード例 #17
0
ファイル: test_data.py プロジェクト: sushrutgirdhari/cutplace
 def test_fails_on_zero_item_delimiter(self):
     delimited_format = data.DataFormat(data.FORMAT_DELIMITED)
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError, "data format property 'item_delimiter' must not be 0 (*)",
         delimited_format.set_property, data.KEY_ITEM_DELIMITER, '\x00')
コード例 #18
0
ファイル: test_ranges.py プロジェクト: butterhirsch/cutplace
 def test_fails_on_parse_text_range(self):
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError,
         "range must be specified using decimal or integer numbers and ellipsis (...) but found: 'a'*",
         ranges.DecimalRange, "a")
コード例 #19
0
ファイル: test_ranges.py プロジェクト: butterhirsch/cutplace
 def test_fails_on_parse_hex_range(self):
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError, "number must be an decimal or integer but is: '0x7f'",
         ranges.DecimalRange, '0x7f')
     self.assertRaises(errors.InterfaceError, ranges.DecimalRange, "0x7F")
コード例 #20
0
ファイル: test_fields.py プロジェクト: roskakori/cutplace
 def test_fails_on_other_value(self):
     dev_test.assert_raises_and_fnmatches(
         self, errors.FieldValueError, "value is 'other' but must be constant: 'some'",
         self._constant_format.validated, 'other'
     )
コード例 #21
0
ファイル: test_ranges.py プロジェクト: roskakori/cutplace
 def test_fails_on_parse_text_range(self):
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError,
         "range must be specified using decimal or integer numbers and ellipsis (...) but found: 'a'*",
         ranges.DecimalRange, "a")
コード例 #22
0
ファイル: test_fields.py プロジェクト: roskakori/cutplace
 def test_fails_on_multiple_tokens_in_rule(self):
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError, "constant rule must be a single Python token but also found: ';'",
         fields.ConstantFieldFormat, 'multiple_tokens', False, None, '"x";', _ANY_FORMAT)
コード例 #23
0
ファイル: test_ranges.py プロジェクト: roskakori/cutplace
 def test_fails_on_parse_hex_range(self):
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError, "number must be an decimal or integer but is: '0x7f'",
         ranges.DecimalRange, '0x7f')
     self.assertRaises(errors.InterfaceError, ranges.DecimalRange, "0x7F")
コード例 #24
0
ファイル: test_ranges.py プロジェクト: roskakori/cutplace
 def _test_fails_with_interface_error(self, description, anticipated_error_message_pattern):
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError, anticipated_error_message_pattern,
         ranges.DecimalRange, description)
コード例 #25
0
ファイル: test_ranges.py プロジェクト: butterhirsch/cutplace
 def _test_fails_with_interface_error(self, description, anticipated_error_message_pattern):
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError, anticipated_error_message_pattern,
         ranges.DecimalRange, description)
コード例 #26
0
ファイル: test_fields.py プロジェクト: roskakori/cutplace
 def test_fails_on_empty_constant_with_non_empty_rule(self):
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError,
         'to describe a Constant that can be empty, use a Choice field with a single choice',
         fields.ConstantFieldFormat, 'broken_empty', True, None, 'some', _ANY_FORMAT
     )
コード例 #27
0
ファイル: test_fields.py プロジェクト: roskakori/cutplace
 def test_fails_on_missing_empty_flag_with_empty_rule(self):
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError, 'field must be marked as empty to describe a constant empty value',
         fields.ConstantFieldFormat, 'broken_empty', False, None, '', _ANY_FORMAT)
コード例 #28
0
ファイル: test_validio.py プロジェクト: roskakori/cutplace
 def test_fails_on_csv_with_more_elements_than_expected(self):
     cid_reader = interface.Cid(dev_test.CID_CUSTOMERS_XLS_PATH)
     with validio.Reader(cid_reader, dev_test.path_to_test_data("broken_customers_more_elements.csv")) as reader:
         dev_test.assert_raises_and_fnmatches(
             self, errors.DataError,
             "*(R3C1): row must contain 5 fields but has 6, additional values are: *'error'*", reader.validate_rows)
コード例 #29
0
 def test_fails_on_other_value(self):
     dev_test.assert_raises_and_fnmatches(
         self, errors.FieldValueError, "value is 'other' but must be constant: 'some'",
         self._constant_format.validated, 'other'
     )
コード例 #30
0
ファイル: test_validio.py プロジェクト: ytec-nl/ytec-cutplace
 def test_fails_on_csv_with_more_elements_than_expected(self):
     cid_reader = interface.Cid(dev_test.CID_CUSTOMERS_XLS_PATH)
     with validio.Reader(cid_reader, dev_test.path_to_test_data("broken_customers_more_elements.csv")) as reader:
         dev_test.assert_raises_and_fnmatches(
             self, errors.DataError,
             "*(R3C1): row must contain 5 fields but has 6, additional values are: *'error'*", reader.validate_rows)
コード例 #31
0
 def test_fails_on_empty_constant_with_non_empty_rule(self):
     dev_test.assert_raises_and_fnmatches(
         self, errors.InterfaceError,
         'to describe a Constant that can be empty, use a Choice field with a single choice',
         fields.ConstantFieldFormat, 'broken_empty', True, None, 'some', _ANY_FORMAT
     )
コード例 #32
0
ファイル: test_validio.py プロジェクト: roskakori/cutplace
 def test_fails_on_csv_with_fewer_elements_than_expected(self):
     cid = interface.Cid(dev_test.CID_CUSTOMERS_XLS_PATH)
     with validio.Reader(cid, dev_test.path_to_test_data("broken_customers_fewer_elements.csv")) as reader:
         dev_test.assert_raises_and_fnmatches(
             self, errors.DataError,
             "*(R3C1): row must contain 5 fields but only has 4: *'19253', *'Webster Inc.', *'', *''?", reader.validate_rows)