vFW and vDNS support added to azure-plugin
[multicloud/azure.git] / azure / aria / aria-extension-cloudify / src / aria / tests / utils / test_versions.py
1 # Licensed to the Apache Software Foundation (ASF) under one or more
2 # contributor license agreements.  See the NOTICE file distributed with
3 # this work for additional information regarding copyright ownership.
4 # The ASF licenses this file to You under the Apache License, Version 2.0
5 # (the "License"); you may not use this file except in compliance with
6 # the License.  You may obtain a copy of the License at
7 #
8 #     http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15
16 from aria.utils.versions import (VersionString, parse_version_string)
17
18
19 def test_version_string():
20     # No qualifiers
21     assert VersionString('20') == VersionString('20')
22     assert VersionString('20') == VersionString('20.0')
23     assert VersionString('20') == VersionString('20.0.0')
24     assert VersionString('20') < VersionString('20.0.1')
25
26     # With numeric qualifiers
27     assert VersionString('20.0.1-1') < VersionString('20.0.1-2')
28     assert VersionString('20.0.1-0') < VersionString('20.0.1')
29     assert VersionString('20.0.1-1') < VersionString('20.0.1')
30
31     # With prefixed qualifiers
32     assert VersionString('20.0.1-beta1') < VersionString('20.0.1-beta2')
33     assert VersionString('20.0.1-beta1') < VersionString('20.0.1-1')
34     assert VersionString('20.0.1-beta1') < VersionString('20.0.1')
35     assert VersionString('20.0.1-beta2') < VersionString('20.0.1-rc2')
36     assert VersionString('20.0.1-alpha2') < VersionString('20.0.1-beta1')
37     assert VersionString('20.0.1-dev2') < VersionString('20.0.1-alpha1')
38     assert VersionString('20.0.1-DEV2') < VersionString('20.0.1-ALPHA1')
39
40     # Coercive comparisons
41     assert VersionString('20.0.0') == VersionString(10 * 2)
42     assert VersionString('20.0.0') == VersionString(20.0)
43
44     # Non-VersionString comparisons
45     assert VersionString('20.0.0') == 20
46     assert VersionString('20.0.0') < '20.0.1'
47
48     # Nulls
49     assert VersionString() == VersionString()
50     assert VersionString() == VersionString.NULL
51     assert VersionString(None) == VersionString.NULL
52     assert VersionString.NULL == None # pylint: disable=singleton-comparison
53     assert VersionString.NULL == 0
54
55     # Invalid version strings
56     assert VersionString('maxim is maxim') == VersionString.NULL
57     assert VersionString('20.maxim.0') == VersionString.NULL
58     assert VersionString('20.0.0-maxim1') == VersionString.NULL
59     assert VersionString('20.0.1-1.1') == VersionString.NULL
60
61     # Sorts
62     v1 = VersionString('20.0.0')
63     v2 = VersionString('20.0.1-beta1')
64     v3 = VersionString('20.0.1')
65     v4 = VersionString('20.0.2')
66     assert [v1, v2, v3, v4] == sorted([v4, v3, v2, v1], key=lambda v: v.key)
67
68     # Sets
69     v1 = VersionString('20.0.0')
70     v2 = VersionString('20.0')
71     v3 = VersionString('20')
72     assert set([v1]) == set([v1, v2, v3])
73
74     # Dicts
75     the_dict = {v1: 'test'}
76     assert the_dict.get(v2) == 'test'
77
78 def test_parse_version_string():
79     # One test of each type from the groups above should be enough
80     assert parse_version_string('20') < parse_version_string('20.0.1')
81     assert parse_version_string('20.0.1-1') < parse_version_string('20.0.1-2')
82     assert parse_version_string('20.0.1-beta1') < parse_version_string('20.0.1-beta2')
83     assert parse_version_string('20.0.0') == parse_version_string(10 * 2)
84     assert parse_version_string(None) == parse_version_string(0)
85     assert parse_version_string(None) == parse_version_string('maxim is maxim')