blob: a862d97ce1a400eca54789c343b49b24158da2e5 [file] [log] [blame]
// Copyright 2019 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "utils.h"
#include <vector>
#include <gtest/gtest.h>
namespace {
using huddly::NumericVersion;
using huddly::StripAnsiSgrCodes;
class UtilsTest : public ::testing::Test {
protected:
void SetUp() override {}
};
TEST_F(UtilsTest, NumericVersionDefaultCtor) {
EXPECT_EQ(NumericVersion{}, NumericVersion({0, 0, 0}));
}
TEST_F(UtilsTest, NumericVersionAssignmentCtor) {
const NumericVersion a({1, 2, 3});
const NumericVersion b = a;
EXPECT_EQ(b, a);
}
TEST_F(UtilsTest, NumericVersionCopyCtor) {
const NumericVersion a({4, 5, 6});
const NumericVersion b(a);
EXPECT_EQ(b, a);
}
TEST_F(UtilsTest, NumericVersionOperatorEquals) {
EXPECT_EQ(NumericVersion({1, 2, 3}), NumericVersion({1, 2, 3}));
EXPECT_FALSE(NumericVersion({1, 2, 3}) == NumericVersion({1, 2, 4}));
EXPECT_FALSE(NumericVersion({1, 2, 3}) == NumericVersion({1, 9, 3}));
EXPECT_FALSE(NumericVersion({1, 2, 3}) == NumericVersion({9, 2, 3}));
}
TEST_F(UtilsTest, NumericVersionOperatorNotEqual) {
EXPECT_NE(NumericVersion({1, 2, 3}), NumericVersion({1, 2, 4}));
EXPECT_NE(NumericVersion({1, 2, 3}), NumericVersion({1, 1, 3}));
EXPECT_NE(NumericVersion({1, 2, 3}), NumericVersion({0, 2, 3}));
EXPECT_FALSE(NumericVersion{} != NumericVersion{});
}
TEST_F(UtilsTest, NumericVersionOperatorLessThan) {
EXPECT_LT(NumericVersion({1, 2, 3}), NumericVersion({1, 2, 9}));
EXPECT_LT(NumericVersion({1, 2, 3}), NumericVersion({1, 9, 3}));
EXPECT_LT(NumericVersion({1, 2, 3}), NumericVersion({9, 2, 3}));
EXPECT_FALSE(NumericVersion({1, 2, 3}) < NumericVersion({1, 2, 3}));
EXPECT_FALSE(NumericVersion({1, 2, 4}) < NumericVersion({1, 2, 3}));
}
TEST_F(UtilsTest, NumericVersionOperatorGreaterThan) {
EXPECT_GT(NumericVersion({4, 5, 6}), NumericVersion({4, 5, 1}));
EXPECT_GT(NumericVersion({4, 5, 6}), NumericVersion({4, 1, 6}));
EXPECT_GT(NumericVersion({4, 5, 6}), NumericVersion({1, 5, 6}));
EXPECT_FALSE(NumericVersion({9, 9, 9}) > NumericVersion({9, 9, 9}));
EXPECT_FALSE(NumericVersion({1, 2, 2}) > NumericVersion({1, 2, 4}));
}
TEST_F(UtilsTest, NumericVersionOperatorLessOrEqual) {
EXPECT_LE(NumericVersion({1, 2, 3}), NumericVersion({1, 2, 3}));
EXPECT_LE(NumericVersion({1, 2, 3}), NumericVersion({1, 2, 9}));
EXPECT_LE(NumericVersion({1, 2, 3}), NumericVersion({1, 9, 3}));
EXPECT_LE(NumericVersion({1, 2, 3}), NumericVersion({9, 2, 3}));
EXPECT_FALSE(NumericVersion({1, 2, 4}) <= NumericVersion({1, 2, 3}));
}
TEST_F(UtilsTest, NumericVersionOperatorGreaterOrEqual) {
EXPECT_GE(NumericVersion({4, 5, 6}), NumericVersion({4, 5, 6}));
EXPECT_GE(NumericVersion({4, 5, 6}), NumericVersion({4, 5, 1}));
EXPECT_GE(NumericVersion({4, 5, 6}), NumericVersion({4, 1, 6}));
EXPECT_GE(NumericVersion({4, 5, 6}), NumericVersion({1, 5, 6}));
EXPECT_FALSE(NumericVersion({1, 2, 2}) >= NumericVersion({1, 2, 4}));
}
TEST_F(UtilsTest, StripAnsiSgrCodes_EmptyString) {
EXPECT_EQ("", StripAnsiSgrCodes(""));
}
TEST_F(UtilsTest, StripAnsiSgrCodes_SingleAnsiColorCodeAtEnd) {
std::string s("before\x1b[1;2m");
EXPECT_EQ("before", StripAnsiSgrCodes(s));
}
TEST_F(UtilsTest, StripAnsiSgrCodes_SingleAnsiColorCodeAtBeginning) {
std::string s("\x1b[1;2mafter");
EXPECT_EQ("after", StripAnsiSgrCodes(s));
}
TEST_F(UtilsTest, StripAnsiSgrCodes_SingleAnsiColorCodeInMiddle) {
std::string s("before\x1b[1;2mafter");
EXPECT_EQ("beforeafter", StripAnsiSgrCodes(s));
}
TEST_F(UtilsTest, StripAnsiSgrCodes_MultipleAnsiColorCodes) {
std::string s("\x1b[1mfirst\x1b[1;2msecond\x1b[2m");
EXPECT_EQ("firstsecond", StripAnsiSgrCodes(s));
}
TEST_F(UtilsTest, StripAnsiSgrCodes_IncompleteAnsiColorCode) {
EXPECT_EQ("", StripAnsiSgrCodes("\x1b"));
EXPECT_EQ("", StripAnsiSgrCodes("\x1b["));
EXPECT_EQ("", StripAnsiSgrCodes("\x1b[1"));
EXPECT_EQ("", StripAnsiSgrCodes("\x1b[1;"));
EXPECT_EQ("", StripAnsiSgrCodes("\x1b[1;100"));
}
} // namespace