mirror of https://github.com/morpheus65535/bazarr
304 lines
8.8 KiB
Python
304 lines
8.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
# Copyright (c) 2021, Brandon Nielsen
|
|
# All rights reserved.
|
|
#
|
|
# This software may be modified and distributed under the terms
|
|
# of the BSD license. See the LICENSE file for details.
|
|
|
|
import unittest
|
|
|
|
import aniso8601
|
|
from aniso8601.date import get_date_resolution, parse_date
|
|
from aniso8601.exceptions import DayOutOfBoundsError, ISOFormatError
|
|
from aniso8601.resolution import DateResolution
|
|
from aniso8601.tests.compat import mock
|
|
|
|
|
|
class TestDateResolutionFunctions(unittest.TestCase):
|
|
def test_get_date_resolution_year(self):
|
|
self.assertEqual(get_date_resolution("2013"), DateResolution.Year)
|
|
self.assertEqual(get_date_resolution("0001"), DateResolution.Year)
|
|
self.assertEqual(get_date_resolution("19"), DateResolution.Year)
|
|
|
|
def test_get_date_resolution_month(self):
|
|
self.assertEqual(get_date_resolution("1981-04"), DateResolution.Month)
|
|
|
|
def test_get_date_resolution_week(self):
|
|
self.assertEqual(get_date_resolution("2004-W53"), DateResolution.Week)
|
|
self.assertEqual(get_date_resolution("2009-W01"), DateResolution.Week)
|
|
self.assertEqual(get_date_resolution("2004W53"), DateResolution.Week)
|
|
|
|
def test_get_date_resolution_day(self):
|
|
self.assertEqual(get_date_resolution("2004-04-11"), DateResolution.Day)
|
|
self.assertEqual(get_date_resolution("20090121"), DateResolution.Day)
|
|
|
|
def test_get_date_resolution_year_weekday(self):
|
|
self.assertEqual(get_date_resolution("2004-W53-6"), DateResolution.Weekday)
|
|
self.assertEqual(get_date_resolution("2004W536"), DateResolution.Weekday)
|
|
|
|
def test_get_date_resolution_year_ordinal(self):
|
|
self.assertEqual(get_date_resolution("1981-095"), DateResolution.Ordinal)
|
|
self.assertEqual(get_date_resolution("1981095"), DateResolution.Ordinal)
|
|
|
|
def test_get_date_resolution_badtype(self):
|
|
testtuples = (None, 1, False, 1.234)
|
|
|
|
for testtuple in testtuples:
|
|
with self.assertRaises(ValueError):
|
|
get_date_resolution(testtuple)
|
|
|
|
def test_get_date_resolution_extended_year(self):
|
|
testtuples = ("+2000", "+30000")
|
|
|
|
for testtuple in testtuples:
|
|
with self.assertRaises(NotImplementedError):
|
|
get_date_resolution(testtuple)
|
|
|
|
def test_get_date_resolution_badweek(self):
|
|
testtuples = ("2004-W1", "2004W1")
|
|
|
|
for testtuple in testtuples:
|
|
with self.assertRaises(ISOFormatError):
|
|
get_date_resolution(testtuple)
|
|
|
|
def test_get_date_resolution_badweekday(self):
|
|
testtuples = ("2004-W53-67", "2004W5367")
|
|
|
|
for testtuple in testtuples:
|
|
with self.assertRaises(ISOFormatError):
|
|
get_date_resolution(testtuple)
|
|
|
|
def test_get_date_resolution_badstr(self):
|
|
testtuples = (
|
|
"W53",
|
|
"2004-W",
|
|
"2014-01-230",
|
|
"2014-012-23",
|
|
"201-01-23",
|
|
"201401230",
|
|
"201401",
|
|
"",
|
|
)
|
|
|
|
for testtuple in testtuples:
|
|
with self.assertRaises(ISOFormatError):
|
|
get_date_resolution(testtuple)
|
|
|
|
|
|
class TestDateParserFunctions(unittest.TestCase):
|
|
def test_parse_date(self):
|
|
testtuples = (
|
|
(
|
|
"2013",
|
|
{
|
|
"YYYY": "2013",
|
|
"MM": None,
|
|
"DD": None,
|
|
"Www": None,
|
|
"D": None,
|
|
"DDD": None,
|
|
},
|
|
),
|
|
(
|
|
"0001",
|
|
{
|
|
"YYYY": "0001",
|
|
"MM": None,
|
|
"DD": None,
|
|
"Www": None,
|
|
"D": None,
|
|
"DDD": None,
|
|
},
|
|
),
|
|
(
|
|
"19",
|
|
{
|
|
"YYYY": "19",
|
|
"MM": None,
|
|
"DD": None,
|
|
"Www": None,
|
|
"D": None,
|
|
"DDD": None,
|
|
},
|
|
),
|
|
(
|
|
"1981-04-05",
|
|
{
|
|
"YYYY": "1981",
|
|
"MM": "04",
|
|
"DD": "05",
|
|
"Www": None,
|
|
"D": None,
|
|
"DDD": None,
|
|
},
|
|
),
|
|
(
|
|
"19810405",
|
|
{
|
|
"YYYY": "1981",
|
|
"MM": "04",
|
|
"DD": "05",
|
|
"Www": None,
|
|
"D": None,
|
|
"DDD": None,
|
|
},
|
|
),
|
|
(
|
|
"1981-04",
|
|
{
|
|
"YYYY": "1981",
|
|
"MM": "04",
|
|
"DD": None,
|
|
"Www": None,
|
|
"D": None,
|
|
"DDD": None,
|
|
},
|
|
),
|
|
(
|
|
"2004-W53",
|
|
{
|
|
"YYYY": "2004",
|
|
"MM": None,
|
|
"DD": None,
|
|
"Www": "53",
|
|
"D": None,
|
|
"DDD": None,
|
|
},
|
|
),
|
|
(
|
|
"2009-W01",
|
|
{
|
|
"YYYY": "2009",
|
|
"MM": None,
|
|
"DD": None,
|
|
"Www": "01",
|
|
"D": None,
|
|
"DDD": None,
|
|
},
|
|
),
|
|
(
|
|
"2004-W53-6",
|
|
{
|
|
"YYYY": "2004",
|
|
"MM": None,
|
|
"DD": None,
|
|
"Www": "53",
|
|
"D": "6",
|
|
"DDD": None,
|
|
},
|
|
),
|
|
(
|
|
"2004W53",
|
|
{
|
|
"YYYY": "2004",
|
|
"MM": None,
|
|
"DD": None,
|
|
"Www": "53",
|
|
"D": None,
|
|
"DDD": None,
|
|
},
|
|
),
|
|
(
|
|
"2004W536",
|
|
{
|
|
"YYYY": "2004",
|
|
"MM": None,
|
|
"DD": None,
|
|
"Www": "53",
|
|
"D": "6",
|
|
"DDD": None,
|
|
},
|
|
),
|
|
(
|
|
"1981-095",
|
|
{
|
|
"YYYY": "1981",
|
|
"MM": None,
|
|
"DD": None,
|
|
"Www": None,
|
|
"D": None,
|
|
"DDD": "095",
|
|
},
|
|
),
|
|
(
|
|
"1981095",
|
|
{
|
|
"YYYY": "1981",
|
|
"MM": None,
|
|
"DD": None,
|
|
"Www": None,
|
|
"D": None,
|
|
"DDD": "095",
|
|
},
|
|
),
|
|
(
|
|
"1980366",
|
|
{
|
|
"YYYY": "1980",
|
|
"MM": None,
|
|
"DD": None,
|
|
"Www": None,
|
|
"D": None,
|
|
"DDD": "366",
|
|
},
|
|
),
|
|
)
|
|
|
|
for testtuple in testtuples:
|
|
with mock.patch.object(
|
|
aniso8601.date.PythonTimeBuilder, "build_date"
|
|
) as mockBuildDate:
|
|
mockBuildDate.return_value = testtuple[1]
|
|
|
|
result = parse_date(testtuple[0])
|
|
|
|
self.assertEqual(result, testtuple[1])
|
|
mockBuildDate.assert_called_once_with(**testtuple[1])
|
|
|
|
def test_parse_date_badtype(self):
|
|
testtuples = (None, 1, False, 1.234)
|
|
|
|
for testtuple in testtuples:
|
|
with self.assertRaises(ValueError):
|
|
parse_date(testtuple, builder=None)
|
|
|
|
def test_parse_date_badstr(self):
|
|
testtuples = (
|
|
"W53",
|
|
"2004-W",
|
|
"2014-01-230",
|
|
"2014-012-23",
|
|
"201-01-23",
|
|
"201401230",
|
|
"201401",
|
|
"9999 W53",
|
|
"20.50230",
|
|
"198104",
|
|
"bad",
|
|
"",
|
|
)
|
|
|
|
for testtuple in testtuples:
|
|
with self.assertRaises(ISOFormatError):
|
|
parse_date(testtuple, builder=None)
|
|
|
|
def test_parse_date_mockbuilder(self):
|
|
mockBuilder = mock.Mock()
|
|
|
|
expectedargs = {
|
|
"YYYY": "1981",
|
|
"MM": "04",
|
|
"DD": "05",
|
|
"Www": None,
|
|
"D": None,
|
|
"DDD": None,
|
|
}
|
|
|
|
mockBuilder.build_date.return_value = expectedargs
|
|
|
|
result = parse_date("1981-04-05", builder=mockBuilder)
|
|
|
|
self.assertEqual(result, expectedargs)
|
|
mockBuilder.build_date.assert_called_once_with(**expectedargs)
|