aboutsummaryrefslogtreecommitdiff
path: root/tests/test_versions.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_versions.py')
-rw-r--r--tests/test_versions.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/test_versions.py b/tests/test_versions.py
new file mode 100644
index 0000000..00150ce
--- /dev/null
+++ b/tests/test_versions.py
@@ -0,0 +1,41 @@
+# SPDX-License-Identifier: CC0-1.0
+
+# Copyright (C) 2022 Wojtek Kosior <koszko@koszko.org>
+#
+# Available under the terms of Creative Commons Zero v1.0 Universal.
+
+import pytest
+
+from hydrilla import versions
+
+sample_version_tuples = [(4, 5, 3), (1, 0, 5), (3,)]
+sample_version_strings = ['4.5.3', '1.0.5', '3']
+
+sample_versions = [*zip(sample_version_tuples, sample_version_strings)]
+
+@pytest.mark.parametrize('version_tuple', sample_version_tuples)
+def test_normalize(version_tuple):
+ """Verify that normalize() produces proper results."""
+ assert versions.normalize([*version_tuple]) == version_tuple
+ assert versions.normalize([*version_tuple, 0]) == version_tuple
+
+@pytest.mark.parametrize('version_tuple, string', sample_versions)
+def test_parse(version_tuple, string):
+ """Verify that parse() produces proper results."""
+ assert versions.parse(string)
+ assert versions.parse(string + '.0') == tuple([*version_tuple, 0])
+
+def test_parse_version_bad_string():
+ """Verify that parse() raises when passed an invalid string."""
+ with pytest.raises(ValueError):
+ versions.parse('i am not a valid version')
+
+@pytest.mark.parametrize('version_tuple, string', sample_versions)
+def test_version_string(version_tuple, string):
+ """Verify that version_string() produces proper results."""
+ for _version_tuple, _string in [
+ (version_tuple, string),
+ (tuple([*version_tuple, 0]), f'{string}.0')
+ ]:
+ assert versions.version_string(_version_tuple) == _string
+ assert versions.version_string(_version_tuple, 5) == f'{_string}-5'