1 : // Copyright 2011 Google Inc. All Rights Reserved.
2 : //
3 : // Licensed under the Apache License, Version 2.0 (the "License");
4 : // you may not use this file except in compliance with the License.
5 : // You may obtain a copy of the License at
6 : //
7 : // http://www.apache.org/licenses/LICENSE-2.0
8 : //
9 : // Unless required by applicable law or agreed to in writing, software
10 : // distributed under the License is distributed on an "AS IS" BASIS,
11 : // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 : // See the License for the specific language governing permissions and
13 : // limitations under the License.
14 :
15 : #include "syzygy/version/syzygy_version.h"
16 :
17 : #include "gtest/gtest.h"
18 : #include "syzygy/core/serialization.h"
19 : #include "syzygy/core/unittest_util.h"
20 :
21 : namespace version {
22 :
23 E : TEST(SyzygyVersionTest, Equality) {
24 : SyzygyVersion version1(SYZYGY_MAJOR, SYZYGY_MINOR, SYZYGY_BUILD,
25 E : SYZYGY_PATCH, SYZYGY_LASTCHANGE_FULL);
26 E : SyzygyVersion version2;
27 :
28 E : EXPECT_TRUE(version1 == kSyzygyVersion);
29 E : EXPECT_FALSE(version2 == kSyzygyVersion);
30 E : }
31 :
32 E : TEST(SyzygyVersionTest, Compatibility) {
33 : // For now, this is the same unit test as Equality. However, we may eventually
34 : // change our notion of compatibility.
35 : SyzygyVersion version1(SYZYGY_MAJOR, SYZYGY_MINOR, SYZYGY_BUILD,
36 E : SYZYGY_PATCH, SYZYGY_LASTCHANGE_FULL);
37 E : SyzygyVersion version2;
38 :
39 E : EXPECT_TRUE(version1.IsCompatible(kSyzygyVersion));
40 E : EXPECT_FALSE(version2.IsCompatible(kSyzygyVersion));
41 E : }
42 :
43 E : TEST(SyzygyVersionTest, CompareOctets) {
44 E : SyzygyVersion v0001(0, 0, 0, 1, "a");
45 E : SyzygyVersion v0010(0, 0, 1, 0, "b");
46 E : SyzygyVersion v0100(0, 1, 0, 0, "c");
47 E : SyzygyVersion v1000(1, 0, 0, 0, "d");
48 :
49 E : EXPECT_EQ(0, v0001.CompareOctet(v0001));
50 E : EXPECT_GT(0, v0001.CompareOctet(v0010));
51 E : EXPECT_GT(0, v0001.CompareOctet(v0100));
52 E : EXPECT_GT(0, v0001.CompareOctet(v1000));
53 :
54 E : EXPECT_LT(0, v0010.CompareOctet(v0001));
55 E : EXPECT_EQ(0, v0010.CompareOctet(v0010));
56 E : EXPECT_GT(0, v0010.CompareOctet(v0100));
57 E : EXPECT_GT(0, v0010.CompareOctet(v1000));
58 :
59 E : EXPECT_LT(0, v0100.CompareOctet(v0001));
60 E : EXPECT_LT(0, v0100.CompareOctet(v0010));
61 E : EXPECT_EQ(0, v0100.CompareOctet(v0100));
62 E : EXPECT_GT(0, v0100.CompareOctet(v1000));
63 :
64 E : EXPECT_LT(0, v1000.CompareOctet(v0001));
65 E : EXPECT_LT(0, v1000.CompareOctet(v0010));
66 E : EXPECT_LT(0, v1000.CompareOctet(v0100));
67 E : EXPECT_EQ(0, v1000.CompareOctet(v1000));
68 :
69 : // Two versions with the same octet but a different last-change string
70 : // should compare equal.
71 E : SyzygyVersion v1000_2(1, 0, 0, 0, "e");
72 E : EXPECT_EQ(0, v1000.CompareOctet(v1000_2));
73 E : }
74 :
75 E : TEST(SyzygyVersionTest, Serialization) {
76 E : EXPECT_TRUE(testing::TestSerialization(kSyzygyVersion));
77 E : }
78 :
79 E : TEST(SyzygyVersionTest, Mutators) {
80 E : SyzygyVersion version;
81 E : EXPECT_EQ(0, version.major());
82 E : EXPECT_EQ(0, version.minor());
83 E : EXPECT_EQ(0, version.build());
84 E : EXPECT_EQ(0, version.patch());
85 E : EXPECT_TRUE(version.last_change() == "");
86 :
87 E : version.set_major(1);
88 E : version.set_minor(2);
89 E : version.set_build(3);
90 E : version.set_patch(4);
91 E : version.set_last_change("5");
92 :
93 E : EXPECT_EQ(1, version.major());
94 E : EXPECT_EQ(2, version.minor());
95 E : EXPECT_EQ(3, version.build());
96 E : EXPECT_EQ(4, version.patch());
97 E : EXPECT_TRUE(version.last_change() == "5");
98 E : }
99 :
100 E : TEST(SyzygyVersionTest, VersionString) {
101 E : EXPECT_TRUE(kSyzygyVersion.GetVersionString() == SYZYGY_VERSION_STRING);
102 :
103 : // An empty last-change string should not be appended.
104 E : SyzygyVersion version(0, 0, 0, 0, "");
105 E : EXPECT_TRUE(version.GetVersionString() == "0.0.0.0");
106 E : }
107 :
108 : } // namespace version
|