| |
| // Copyright 2015 The Android Open Source Project |
| // |
| // This software is licensed under the terms of the GNU General Public |
| // License version 2, as published by the Free Software Foundation, and |
| // may be copied, distributed, and modified under those terms. |
| // |
| // This program is distributed in the hope that it will be useful, |
| // but WITHOUT ANY WARRANTY; without even the implied warranty of |
| // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| // GNU General Public License for more details. |
| |
| #include "android/base/Version.h" |
| |
| #include <gtest/gtest.h> |
| |
| namespace android { |
| namespace base { |
| |
| TEST(Version, NumberCtor) { |
| Version v1(1,1,1); |
| EXPECT_STREQ("1.1.1", v1.toString().c_str()); |
| |
| Version v2(1,1,0); |
| EXPECT_STREQ("1.1.0", v2.toString().c_str()); |
| |
| Version v3(1,1,0,12); |
| EXPECT_STREQ("1.1.0-12", v3.toString().c_str()); |
| } |
| |
| TEST(Version, Compare) { |
| Version v(1, 1, 1); |
| |
| EXPECT_NE(v, Version(1, 1, 0)); |
| EXPECT_NE(v, Version(1, 0, 1)); |
| EXPECT_NE(v, Version(0, 1, 1)); |
| EXPECT_NE(v, Version(1, 1, 1, 1)); |
| |
| EXPECT_EQ(v, Version(1, 1, 1)); |
| EXPECT_EQ(Version(1, 1, 1, 2), Version(1, 1, 1, 2)); |
| |
| EXPECT_LT(v, Version(2, 1, 1)); |
| EXPECT_LT(v, Version(1, 2, 1)); |
| EXPECT_LT(v, Version(1, 1, 2)); |
| EXPECT_LT(v, Version::invalid()); |
| |
| EXPECT_LT(v, Version(1, 1, 1, 1)); |
| } |
| |
| TEST(Version, StringCtor) { |
| Version v1("1.1.1"); |
| EXPECT_EQ(Version(1,1,1), v1); |
| |
| Version v2("12.1.0"); |
| EXPECT_EQ(Version(12,1,0), v2); |
| |
| EXPECT_EQ(Version(12,1,0), Version("12.1")); |
| EXPECT_EQ(Version(12,0,0), Version("12")); |
| |
| Version v3("12.0.0"); |
| EXPECT_EQ(Version(12,0,0), v3); |
| |
| Version v4("12.0.01"); |
| EXPECT_EQ(Version(12,0,1), v4); |
| |
| Version v5("12..1"); |
| EXPECT_EQ(Version::invalid(), v5); |
| |
| Version v6(".1"); |
| EXPECT_EQ(Version::invalid(), v6); |
| |
| Version v7("1.2.3.4.5"); |
| EXPECT_EQ(Version::invalid(), v7); |
| |
| Version v8("1.2.3.4."); |
| EXPECT_EQ(Version::invalid(), v8); |
| |
| Version v9("12.foobar"); |
| EXPECT_EQ(Version::invalid(), v9); |
| |
| Version v10("1.2.3-4"); |
| EXPECT_EQ(Version(1, 2, 3, 4), v10); |
| |
| EXPECT_EQ(Version::invalid(), Version("")); |
| EXPECT_EQ(Version::invalid(), Version(nullptr)); |
| EXPECT_EQ(Version::invalid(), Version("1.2.3.3 beta")); |
| EXPECT_EQ(Version::invalid(), Version("1.2.3 preview")); |
| EXPECT_EQ(Version::invalid(), Version(" 1.2.3")); |
| EXPECT_EQ(Version::invalid(), Version("1.2.3 ")); |
| |
| EXPECT_EQ(Version::invalid(), Version(Version::invalid().toString())); |
| } |
| |
| TEST(Version, ToString) { |
| Version v1(1,1,1); |
| EXPECT_STREQ("1.1.1", v1.toString().c_str()); |
| |
| Version v2(0, 0, 1); |
| EXPECT_STREQ("0.0.1", v2.toString().c_str()); |
| |
| Version v3(1,0,0); |
| EXPECT_STREQ("1.0.0", v3.toString().c_str()); |
| |
| Version v4(1,0,0,12); |
| EXPECT_STREQ("1.0.0-12", v4.toString().c_str()); |
| } |
| |
| TEST(Version, Accessors) { |
| Version ver(10,11,200,3030); |
| EXPECT_EQ(10, ver.component<Version::kMajor>()); |
| EXPECT_EQ(11, ver.component<Version::kMinor>()); |
| EXPECT_EQ(200, ver.component<Version::kMicro>()); |
| EXPECT_EQ(3030, ver.component<Version::kBuild>()); |
| } |
| |
| } // namespace base |
| } // namespace android |