clm5/python/ctsm/test/test_unit_iso_utils.py
2024-05-09 15:14:01 +08:00

54 lines
1.7 KiB
Python

#!/usr/bin/env python3
"""Unit tests for the iso functions in utils
"""
import unittest
from ctsm import unit_testing
from ctsm.utils import parse_isoduration, get_isosplit
# Allow names that pylint doesn't like, because otherwise I find it hard
# to make readable unit test names
# pylint: disable=invalid-name
class TestIsoUtils(unittest.TestCase):
"""Tests of iso functions in utils"""
def test_iso_split_for_Year(self):
"""
Tests the get_isosplit function for a strings with Years
"""
iso_string = "0Y"
self.assertEqual(get_isosplit(iso_string, "Y"), ("0", ""))
iso_string = "1Y"
self.assertEqual(get_isosplit(iso_string, "Y"), ("1", ""))
iso_string = "4Y"
self.assertEqual(get_isosplit(iso_string, "Y"), ("4", ""))
iso_string = "100Y"
self.assertEqual(get_isosplit(iso_string, "Y"), ("100", ""))
iso_string = "999999Y"
self.assertEqual(get_isosplit(iso_string, "Y"), ("999999", ""))
def test_parse_isoduration_for_Years(self):
"""
Tests the parse_isoduration function for iso strings with Years
"""
days_in_year = 365
iso_string = "0Y"
self.assertEqual(parse_isoduration(iso_string), 0)
iso_string = "1Y"
self.assertEqual(parse_isoduration(iso_string), days_in_year)
iso_string = "4Y"
self.assertEqual(parse_isoduration(iso_string), 4 * days_in_year)
iso_string = "100Y"
self.assertEqual(parse_isoduration(iso_string), 100 * days_in_year)
iso_string = "999999Y"
self.assertEqual(parse_isoduration(iso_string), 999999 * days_in_year)
if __name__ == "__main__":
unit_testing.setup_for_tests()
unittest.main()