1# Copyright (c) 2018 Ultimaker B.V. 2# Uranium is released under the terms of the LGPLv3 or higher. 3 4from UM.Version import Version 5from unittest import TestCase 6import pytest 7 8major_versions = [Version("1"), Version(b"1"), Version(1), Version([1]), Version(["1"]), Version("1."), Version("MOD-1"), Version("1B"), Version(Version("1"))] 9major_minor_versions = [Version("1.2"), Version("1-2"), Version("1_2"), Version(b"1.2"), Version("1.2BETA"), Version([1, 2]), Version(["1", "2"]), Version([1, "2"]), Version([1, b"2"])] 10major_minor_revision_versions = [Version("1.2.3"), Version("1.2.3BETA"), Version("1_2-3"), Version(b"1.2.3"), Version([1, 2, 3]), Version(["1", "2", "3"]), Version([1, "2", 3]), Version("MOD-1.2.3"), Version(["1", 2, b"3"])] 11 12 13def check_version_equals(first_version: Version, second_version: Version): 14 assert first_version == second_version 15 assert first_version.getMajor() == second_version.getMajor() 16 assert first_version.getMinor() == second_version.getMinor() 17 assert first_version.getRevision() == second_version.getRevision() 18 19 20@pytest.mark.parametrize("first_version", major_versions) 21@pytest.mark.parametrize("second_version", major_versions) 22def test_major_equals(first_version, second_version): 23 check_version_equals(first_version, second_version) 24 25 26@pytest.mark.parametrize("first_version", major_minor_versions) 27@pytest.mark.parametrize("second_version", major_minor_versions) 28def test_major_and_minor_equals(first_version, second_version): 29 check_version_equals(first_version, second_version) 30 31 32@pytest.mark.parametrize("first_version", major_minor_revision_versions) 33@pytest.mark.parametrize("second_version", major_minor_revision_versions) 34def test_major_minor_revision_equals(first_version, second_version): 35 check_version_equals(first_version, second_version) 36 37 38@pytest.mark.parametrize("first_version", major_versions) 39@pytest.mark.parametrize("second_version", major_minor_versions) 40def test_check_version_smaller(first_version, second_version): 41 assert first_version < second_version 42 43 # Just to be on the really safe side 44 assert first_version != second_version 45 assert not first_version > second_version 46 47 48@pytest.mark.parametrize("first_version", major_minor_versions) 49@pytest.mark.parametrize("second_version", major_minor_revision_versions) 50def test_check_version_smaller_2(first_version, second_version): 51 assert first_version < second_version 52 53 # Just to be on the really safe side 54 assert first_version != second_version 55 assert not first_version > second_version 56 57 58def test_versionPostfix(): 59 version = Version("1.2.3-alpha.4") 60 assert version.getPostfixType() == "alpha" 61 assert version.getPostfixVersion() == 4 62 assert version.hasPostFix() 63 assert not Version("").hasPostFix() 64 65 assert version <= Version("1.2.3-alpha.5") 66 assert version < Version("1.2.3-alpha.5") 67 68 69def test_versionWeirdCompares(): 70 version = Version("1.2.3-alpha.4") 71 assert not version == 12 72 73 74def test_wrongType(): 75 version = Version(None) 76 assert version == Version("0") 77 78def test_compareStrings(): 79 version_string = "1.0.0" 80 version = Version(version_string) 81 assert version == version_string 82 assert version >= version_string 83 84 assert version < "2.0.0" 85 assert version <= "2.0.0" 86 assert "0" < version 87 88 assert Version("1.0.0") > Version("1.0.0-alpha.7") 89 90 # Defend people from ignoring the typing. 91 assert not version > None 92 assert not version < None