def test_extract_format_spec__with_align_only_raises_error(self): # -- INVALID-FORMAT: Width without type. for align in Field.ALIGN_CHARS: with self.assertRaises(ValueError) as cm: Field.extract_format_spec(align) self.assertEqual("INVALID-FORMAT: %s (without type)" % align, str(cm.exception))
def test_extract_format_spec_with_fill_and_align_only_raises_error(self): # -- INVALID-FORMAT: Width without type. fill = "_" for align in Field.ALIGN_CHARS: with self.assertRaises(ValueError) as cm: format = fill + align Field.extract_format_spec(format) self.assertEqual("INVALID-FORMAT: %s (without type)" % format, str(cm.exception))
def test_extract_format_spec__with_all(self): for format, expected_spec in self.FORMAT_AND_FORMAT_SPEC_DATA: format_spec = Field.extract_format_spec(format) self.assertEqual(format_spec, expected_spec) self.assertValidFormatWidth(format_spec.width) if format_spec.align is not None: self.assertValidFormatAlign(format_spec.align)
def test_extract_format_spec__with_zero_and_type(self): formats = ["0s", "0d", "0Number", "0Number+"] for format in formats: format_spec = Field.extract_format_spec(format) expected_type = format[1:] expected_spec = make_format_spec(type=expected_type, zero=True) self.assertEqual(format_spec, expected_spec)
def test_extract_format_spec__with_width_and_type(self): formats = ["1s", "2d", "6s", "10d", "60f", "123456789s"] for format in formats: format_spec = Field.extract_format_spec(format) expected_type = format[-1] expected_width = format[:-1] expected_spec = make_format_spec(type=expected_type, width=expected_width) self.assertEqual(format_spec, expected_spec) self.assertValidFormatWidth(format_spec.width)
def test_extract_format_spec__with_type(self): format_types = ["d", "w", "Number", "Number?", "Number*", "Number+"] for format_type in format_types: format_spec = Field.extract_format_spec(format_type) expected_spec = make_format_spec(format_type) self.assertEqual(format_spec.type, format_type) self.assertEqual(format_spec.width, "") self.assertEqual(format_spec.zero, False) self.assertIsNone(format_spec.align) self.assertIsNone(format_spec.fill) self.assertEqual(format_spec, expected_spec)
def test_extract_format_spec__with_align_and_type(self): # -- ALIGN_CHARS = "<>=^" formats = ["<s", ">d", "=Number", "^Number+"] for format in formats: format_spec = Field.extract_format_spec(format) expected_align = format[0] expected_type = format[1:] expected_spec = make_format_spec(type=expected_type, align=expected_align) self.assertEqual(format_spec, expected_spec) self.assertValidFormatAlign(format_spec.align)
def test_extract_format_spec__with_zero_only_raises_error(self): # -- INVALID-FORMAT: Width without type. with self.assertRaises(ValueError) as cm: Field.extract_format_spec("0") self.assertEqual("INVALID-FORMAT: 0 (without type)", str(cm.exception))
def test_make_format(self): for expected_format, format_spec in self.FORMAT_AND_FORMAT_SPEC_DATA: format = Field.make_format(format_spec) self.assertEqual(format, expected_format) format_spec2 = Field.extract_format_spec(format) self.assertEqual(format_spec2, format_spec)
def test_extract_format_spec__with_empty_string_raises_error(self): with self.assertRaises(ValueError) as cm: Field.extract_format_spec("") self.assertIn("INVALID-FORMAT", str(cm.exception))