1 : // Copyright 2011 Google Inc.
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/common/syzygy_version.h"
16 : #include "syzygy/core/serialization.h"
17 : #include "syzygy/core/unittest_util.h"
18 : #include "gtest/gtest.h"
19 :
20 : namespace common {
21 :
22 E : TEST(SyzygyVersionTest, Equality) {
23 : SyzygyVersion version1(SYZYGY_MAJOR, SYZYGY_MINOR, SYZYGY_BUILD,
24 E : SYZYGY_PATCH, SYZYGY_LASTCHANGE);
25 E : SyzygyVersion version2;
26 :
27 E : EXPECT_TRUE(version1 == kSyzygyVersion);
28 E : EXPECT_FALSE(version2 == kSyzygyVersion);
29 E : }
30 :
31 E : TEST(SyzygyVersionTest, Compatibility) {
32 : // For now, this is the same unit test as Equality. However, we may eventually
33 : // change our notion of compatibility.
34 : SyzygyVersion version1(SYZYGY_MAJOR, SYZYGY_MINOR, SYZYGY_BUILD,
35 E : SYZYGY_PATCH, SYZYGY_LASTCHANGE);
36 E : SyzygyVersion version2;
37 :
38 E : EXPECT_TRUE(version1.IsCompatible(kSyzygyVersion));
39 E : EXPECT_FALSE(version2.IsCompatible(kSyzygyVersion));
40 E : }
41 :
42 E : TEST(SyzygyVersionTest, CompareOctets) {
43 E : SyzygyVersion v0001(0, 0, 0, 1, "a");
44 E : SyzygyVersion v0010(0, 0, 1, 0, "b");
45 E : SyzygyVersion v0100(0, 1, 0, 0, "c");
46 E : SyzygyVersion v1000(1, 0, 0, 0, "d");
47 :
48 E : EXPECT_EQ(0, v0001.CompareOctet(v0001));
49 E : EXPECT_GT(0, v0001.CompareOctet(v0010));
50 E : EXPECT_GT(0, v0001.CompareOctet(v0100));
51 E : EXPECT_GT(0, v0001.CompareOctet(v1000));
52 :
53 E : EXPECT_LT(0, v0010.CompareOctet(v0001));
54 E : EXPECT_EQ(0, v0010.CompareOctet(v0010));
55 E : EXPECT_GT(0, v0010.CompareOctet(v0100));
56 E : EXPECT_GT(0, v0010.CompareOctet(v1000));
57 :
58 E : EXPECT_LT(0, v0100.CompareOctet(v0001));
59 E : EXPECT_LT(0, v0100.CompareOctet(v0010));
60 E : EXPECT_EQ(0, v0100.CompareOctet(v0100));
61 E : EXPECT_GT(0, v0100.CompareOctet(v1000));
62 :
63 E : EXPECT_LT(0, v1000.CompareOctet(v0001));
64 E : EXPECT_LT(0, v1000.CompareOctet(v0010));
65 E : EXPECT_LT(0, v1000.CompareOctet(v0100));
66 E : EXPECT_EQ(0, v1000.CompareOctet(v1000));
67 :
68 : // Two versions with the same octet but a different last-change string
69 : // should compare equal.
70 E : SyzygyVersion v1000_2(1, 0, 0, 0, "e");
71 E : EXPECT_EQ(0, v1000.CompareOctet(v1000_2));
72 E : }
73 :
74 E : TEST(SyzygyVersionTest, Serialization) {
75 E : EXPECT_TRUE(testing::TestSerialization(kSyzygyVersion));
76 E : }
77 :
78 E : TEST(SyzygyVersionTest, Mutators) {
79 E : SyzygyVersion version;
80 E : EXPECT_EQ(0, version.major());
81 E : EXPECT_EQ(0, version.minor());
82 E : EXPECT_EQ(0, version.build());
83 E : EXPECT_EQ(0, version.patch());
84 E : EXPECT_TRUE(version.last_change() == "");
85 :
86 E : version.set_major(1);
87 E : version.set_minor(2);
88 E : version.set_build(3);
89 E : version.set_patch(4);
90 E : version.set_last_change("5");
91 :
92 E : EXPECT_EQ(1, version.major());
93 E : EXPECT_EQ(2, version.minor());
94 E : EXPECT_EQ(3, version.build());
95 E : EXPECT_EQ(4, version.patch());
96 E : EXPECT_TRUE(version.last_change() == "5");
97 E : }
98 :
99 E : TEST(SyzygyVersionTest, VersionString) {
100 E : EXPECT_TRUE(kSyzygyVersion.GetVersionString() == SYZYGY_VERSION_STRING);
101 :
102 : // An empty last-change string should not be appended.
103 E : SyzygyVersion version(0, 0, 0, 0, "");
104 E : EXPECT_TRUE(version.GetVersionString() == "0.0.0.0");
105 E : }
106 :
107 : } // namespace common
|