blob: c0c40be93f71498658383554844c20a8bf070227 [file] [log] [blame]
// 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