def test_parse_duration_prescribed_notime_outoforder(self): #Ensure durations are required to be in the correct order #https://bitbucket.org/nielsenb/aniso8601/issues/8/durations-with-components-in-wrong-order with self.assertRaises(ISOFormatError): _parse_duration_prescribed_notime('P1H1M', None) with self.assertRaises(ISOFormatError): _parse_duration_prescribed_notime('P1D1Y1M', None)
def test_parse_duration_prescribed_notime_negative(self): with self.assertRaises(NegativeDurationError): _parse_duration_prescribed_notime('P-1Y', None) with self.assertRaises(NegativeDurationError): _parse_duration_prescribed_notime('P-2M', None) with self.assertRaises(NegativeDurationError): _parse_duration_prescribed_notime('P-3D', None) with self.assertRaises(NegativeDurationError): _parse_duration_prescribed_notime('P-7W', None) with self.assertRaises(NegativeDurationError): _parse_duration_prescribed_notime('P-1Y2M3D', None)
def test_parse_duration_prescribed_notime(self): testtuples = ( ("P1Y2M3D", {"PnY": "1", "PnM": "2", "PnW": None, "PnD": "3"}), ("P1Y2M3.5D", {"PnY": "1", "PnM": "2", "PnW": None, "PnD": "3.5"}), ("P1Y2M3,5D", {"PnY": "1", "PnM": "2", "PnW": None, "PnD": "3.5"}), ("P1Y", {"PnY": "1", "PnM": None, "PnW": None, "PnD": None}), ("P1.5Y", {"PnY": "1.5", "PnM": None, "PnW": None, "PnD": None}), ("P1,5Y", {"PnY": "1.5", "PnM": None, "PnW": None, "PnD": None}), ("P1M", {"PnY": None, "PnM": "1", "PnW": None, "PnD": None}), ("P1.5M", {"PnY": None, "PnM": "1.5", "PnW": None, "PnD": None}), ("P1,5M", {"PnY": None, "PnM": "1.5", "PnW": None, "PnD": None}), ("P1W", {"PnY": None, "PnM": None, "PnW": "1", "PnD": None}), ("P1.5W", {"PnY": None, "PnM": None, "PnW": "1.5", "PnD": None}), ("P1,5W", {"PnY": None, "PnM": None, "PnW": "1.5", "PnD": None}), ("P1D", {"PnY": None, "PnM": None, "PnW": None, "PnD": "1"}), ("P1.5D", {"PnY": None, "PnM": None, "PnW": None, "PnD": "1.5"}), ("P1,5D", {"PnY": None, "PnM": None, "PnW": None, "PnD": "1.5"}), ) for testtuple in testtuples: mockBuilder = mock.Mock() mockBuilder.build_duration.return_value = testtuple[1] result = _parse_duration_prescribed_notime(testtuple[0], mockBuilder) self.assertEqual(result, testtuple[1]) mockBuilder.build_duration.assert_called_once_with(**testtuple[1])
def test_parse_duration_prescribed_notime_timepart(self): #Ensure no time part is allowed with self.assertRaises(ISOFormatError): _parse_duration_prescribed_notime('P1S', None) with self.assertRaises(ISOFormatError): _parse_duration_prescribed_notime('P1D1S', None) with self.assertRaises(ISOFormatError): _parse_duration_prescribed_notime('P1H1M', None) with self.assertRaises(ISOFormatError): _parse_duration_prescribed_notime('P1Y2M3D4H', None) with self.assertRaises(ISOFormatError): _parse_duration_prescribed_notime('P1Y2M3D4H5S', None)
def test_parse_duration_prescribed_notime(self): testtuples = (('P1Y2M3D', {'PnY': '1', 'PnM': '2', 'PnW': None, 'PnD': '3'}), ('P1Y2M3.5D', {'PnY': '1', 'PnM': '2', 'PnW': None, 'PnD': '3.5'}), ('P1Y2M3,5D', {'PnY': '1', 'PnM': '2', 'PnW': None, 'PnD': '3.5'}), ('P1Y', {'PnY': '1', 'PnM': None, 'PnW': None, 'PnD': None}), ('P1.5Y', {'PnY': '1.5', 'PnM': None, 'PnW': None, 'PnD': None}), ('P1,5Y', {'PnY': '1.5', 'PnM': None, 'PnW': None, 'PnD': None}), ('P1M', {'PnY': None, 'PnM': '1', 'PnW': None, 'PnD': None}), ('P1.5M', {'PnY': None, 'PnM': '1.5', 'PnW': None, 'PnD': None}), ('P1,5M', {'PnY': None, 'PnM': '1.5', 'PnW': None, 'PnD': None}), ('P1W', {'PnY': None, 'PnM': None, 'PnW': '1', 'PnD': None}), ('P1.5W', {'PnY': None, 'PnM': None, 'PnW': '1.5', 'PnD': None}), ('P1,5W', {'PnY': None, 'PnM': None, 'PnW': '1.5', 'PnD': None}), ('P1D', {'PnY': None, 'PnM': None, 'PnW': None, 'PnD': '1'}), ('P1.5D', {'PnY': None, 'PnM': None, 'PnW': None, 'PnD': '1.5'}), ('P1,5D', {'PnY': None, 'PnM': None, 'PnW': None, 'PnD': '1.5'})) for testtuple in testtuples: mockBuilder = mock.Mock() mockBuilder.build_duration.return_value = testtuple[1] result = _parse_duration_prescribed_notime(testtuple[0], mockBuilder) self.assertEqual(result, testtuple[1]) mockBuilder.build_duration.assert_called_once_with(**testtuple[1])
def test_parse_duration_prescribed_notime(self): testtuples = (('P1Y2M3D', {'PnY': '1', 'PnM': '2', 'PnW': None, 'PnD': '3'}), ('P1Y2M3,5D', {'PnY': '1', 'PnM': '2', 'PnW': None, 'PnD': '3.5'}), ('P1Y2M3.5D', {'PnY': '1', 'PnM': '2', 'PnW': None, 'PnD': '3.5'}), ('P1Y', {'PnY': '1', 'PnM': None, 'PnW': None, 'PnD': None}), ('P1,5Y', {'PnY': '1.5', 'PnM': None, 'PnW': None, 'PnD': None}), ('P1.5Y', {'PnY': '1.5', 'PnM': None, 'PnW': None, 'PnD': None}), ('P1M', {'PnY': None, 'PnM': '1', 'PnW': None, 'PnD': None}), ('P1,5M', {'PnY': None, 'PnM': '1.5', 'PnW': None, 'PnD':None}), ('P1.5M', {'PnY': None, 'PnM': '1.5', 'PnW': None, 'PnD':None}), ('P1W', {'PnY': None, 'PnM': None, 'PnW': '1', 'PnD': None}), ('P1,5W', {'PnY': None, 'PnM': None, 'PnW': '1.5', 'PnD': None}), ('P1.5W', {'PnY': None, 'PnM': None, 'PnW': '1.5', 'PnD': None}), ('P1D', {'PnY': None, 'PnM': None, 'PnW': None, 'PnD': '1'}), ('P1,5D', {'PnY': None, 'PnM': None, 'PnW': None, 'PnD': '1.5'}), ('P1.5D', {'PnY': None, 'PnM': None, 'PnW': None, 'PnD': '1.5'})) for testtuple in testtuples: result = _parse_duration_prescribed_notime(testtuple[0]) self.assertEqual(result, testtuple[1])
def test_parse_duration_prescribed_notime(self): resultduration = _parse_duration_prescribed_notime('P1Y2M3D') self.assertEqual(resultduration, (1, 2, 0, 3, 0, 0, 0)) resultduration = _parse_duration_prescribed_notime('P1Y2M3.5D') self.assertEqual(resultduration, (1, 2, 0, 3.5, 0, 0, 0)) resultduration = _parse_duration_prescribed_notime('P1Y2M3,5D') self.assertEqual(resultduration, (1, 2, 0, 3.5, 0, 0, 0)) resultduration = _parse_duration_prescribed_notime('P1Y') self.assertEqual(resultduration, (1, 0, 0, 0, 0, 0, 0)) resultduration = _parse_duration_prescribed_notime('P1.5Y') self.assertEqual(resultduration, (1.5, 0, 0, 0, 0, 0, 0)) resultduration = _parse_duration_prescribed_notime('P1,5Y') self.assertEqual(resultduration, (1.5, 0, 0, 0, 0, 0, 0)) resultduration = _parse_duration_prescribed_notime('P1M') self.assertEqual(resultduration, (0, 1, 0, 0, 0, 0, 0)) resultduration = _parse_duration_prescribed_notime('P1.5M') self.assertEqual(resultduration, (0, 1.5, 0, 0, 0, 0, 0)) resultduration = _parse_duration_prescribed_notime('P1,5M') self.assertEqual(resultduration, (0, 1.5, 0, 0, 0, 0, 0)) resultduration = _parse_duration_prescribed_notime('P1W') self.assertEqual(resultduration, (0, 0, 1, 0, 0, 0, 0)) resultduration = _parse_duration_prescribed_notime('P1.5W') self.assertEqual(resultduration, (0, 0, 1.5, 0, 0, 0, 0)) resultduration = _parse_duration_prescribed_notime('P1,5W') self.assertEqual(resultduration, (0, 0, 1.5, 0, 0, 0, 0)) resultduration = _parse_duration_prescribed_notime('P1D') self.assertEqual(resultduration, (0, 0, 0, 1, 0, 0, 0)) resultduration = _parse_duration_prescribed_notime('P1.5D') self.assertEqual(resultduration, (0, 0, 0, 1.5, 0, 0, 0)) resultduration = _parse_duration_prescribed_notime('P1,5D') self.assertEqual(resultduration, (0, 0, 0, 1.5, 0, 0, 0))
def test_parse_duration_prescribed_notime_badstr(self): with self.assertRaises(ISOFormatError): _parse_duration_prescribed_notime("P1S") with self.assertRaises(ISOFormatError): _parse_duration_prescribed_notime("P1D1S")
def test_parse_duration_prescribed_notime(self): testtuples = ( ("P1Y2M3D", { "PnY": "1", "PnM": "2", "PnW": None, "PnD": "3" }), ("P1Y2M3,5D", { "PnY": "1", "PnM": "2", "PnW": None, "PnD": "3.5" }), ("P1Y2M3.5D", { "PnY": "1", "PnM": "2", "PnW": None, "PnD": "3.5" }), ("P1Y3D", { "PnY": "1", "PnM": None, "PnW": None, "PnD": "3" }), ("P1Y2M", { "PnY": "1", "PnM": "2", "PnW": None, "PnD": None }), ("P2M3D", { "PnY": None, "PnM": "2", "PnW": None, "PnD": "3" }), ("P1Y", { "PnY": "1", "PnM": None, "PnW": None, "PnD": None }), ("P1,5Y", { "PnY": "1.5", "PnM": None, "PnW": None, "PnD": None }), ("P1.5Y", { "PnY": "1.5", "PnM": None, "PnW": None, "PnD": None }), ("P1M", { "PnY": None, "PnM": "1", "PnW": None, "PnD": None }), ("P1,5M", { "PnY": None, "PnM": "1.5", "PnW": None, "PnD": None }), ("P1.5M", { "PnY": None, "PnM": "1.5", "PnW": None, "PnD": None }), ("P1W", { "PnY": None, "PnM": None, "PnW": "1", "PnD": None }), ("P1,5W", { "PnY": None, "PnM": None, "PnW": "1.5", "PnD": None }), ("P1.5W", { "PnY": None, "PnM": None, "PnW": "1.5", "PnD": None }), ("P1D", { "PnY": None, "PnM": None, "PnW": None, "PnD": "1" }), ("P1,5D", { "PnY": None, "PnM": None, "PnW": None, "PnD": "1.5" }), ("P1.5D", { "PnY": None, "PnM": None, "PnW": None, "PnD": "1.5" }), ) for testtuple in testtuples: result = _parse_duration_prescribed_notime(testtuple[0]) self.assertEqual(result, testtuple[1])