blob: 5b15d5defdcea66cc9ee802e0ae55fa52a4868dc [file] [log] [blame]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "remoting/client/notification/version_range.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace remoting {
TEST(VersionRangeTest, ExactVersionMatch) {
VersionRange range("1.2.3");
ASSERT_TRUE(range.IsValid());
ASSERT_TRUE(range.ContainsVersion("1.2.3"));
ASSERT_FALSE(range.ContainsVersion("1.2.1"));
ASSERT_FALSE(range.ContainsVersion("1.2.5"));
}
TEST(VersionRangeTest, UnboundMinimumExclusiveMaximum) {
VersionRange range("[-1.2.3)");
ASSERT_TRUE(range.IsValid());
ASSERT_TRUE(range.ContainsVersion("0.1"));
ASSERT_TRUE(range.ContainsVersion("1.2"));
ASSERT_TRUE(range.ContainsVersion("1.2.2"));
ASSERT_FALSE(range.ContainsVersion("1.2.3"));
ASSERT_FALSE(range.ContainsVersion("1.2.5"));
ASSERT_FALSE(range.ContainsVersion("2"));
}
TEST(VersionRangeTest, UnboundMinimumInclusiveMaximum) {
VersionRange range("[-1.2.3]");
ASSERT_TRUE(range.IsValid());
ASSERT_TRUE(range.ContainsVersion("0.1"));
ASSERT_TRUE(range.ContainsVersion("1.2"));
ASSERT_TRUE(range.ContainsVersion("1.2.2"));
ASSERT_TRUE(range.ContainsVersion("1.2.3"));
ASSERT_FALSE(range.ContainsVersion("1.2.5"));
ASSERT_FALSE(range.ContainsVersion("2"));
}
TEST(VersionRangeTest, InclusiveMinimumUnboundMaximum) {
VersionRange range("[1.2.3-)");
ASSERT_TRUE(range.IsValid());
ASSERT_FALSE(range.ContainsVersion("0.1"));
ASSERT_FALSE(range.ContainsVersion("1.2.2"));
ASSERT_TRUE(range.ContainsVersion("1.2.3"));
ASSERT_TRUE(range.ContainsVersion("1.2.5"));
ASSERT_TRUE(range.ContainsVersion("2"));
}
TEST(VersionRangeTest, ExclusiveMinimumUnboundMaximum) {
VersionRange range("(1.2.3-)");
ASSERT_TRUE(range.IsValid());
ASSERT_FALSE(range.ContainsVersion("0.1"));
ASSERT_FALSE(range.ContainsVersion("1.2.2"));
ASSERT_FALSE(range.ContainsVersion("1.2.3"));
ASSERT_TRUE(range.ContainsVersion("1.2.5"));
ASSERT_TRUE(range.ContainsVersion("2"));
}
TEST(VersionRangeTest, InclusiveMinimumExclusiveMaximum) {
VersionRange range("[1.2-3)");
ASSERT_TRUE(range.IsValid());
ASSERT_FALSE(range.ContainsVersion("0.1"));
ASSERT_FALSE(range.ContainsVersion("1.1"));
ASSERT_TRUE(range.ContainsVersion("1.2"));
ASSERT_TRUE(range.ContainsVersion("1.2.2"));
ASSERT_TRUE(range.ContainsVersion("1.2.3"));
ASSERT_TRUE(range.ContainsVersion("2"));
ASSERT_FALSE(range.ContainsVersion("3"));
ASSERT_FALSE(range.ContainsVersion("4"));
}
TEST(VersionRangeTest, ExclusiveMinimumInclusiveMaximum) {
VersionRange range("(1.2-3]");
ASSERT_TRUE(range.IsValid());
ASSERT_FALSE(range.ContainsVersion("0.1"));
ASSERT_FALSE(range.ContainsVersion("1.1"));
ASSERT_FALSE(range.ContainsVersion("1.2"));
ASSERT_TRUE(range.ContainsVersion("1.2.2"));
ASSERT_TRUE(range.ContainsVersion("1.2.3"));
ASSERT_TRUE(range.ContainsVersion("2"));
ASSERT_TRUE(range.ContainsVersion("3"));
ASSERT_FALSE(range.ContainsVersion("3.1"));
ASSERT_FALSE(range.ContainsVersion("4"));
}
TEST(VersionRangeTest, ExclusiveMinimumExclusiveMaximum) {
VersionRange range("(1.2-3)");
ASSERT_TRUE(range.IsValid());
ASSERT_FALSE(range.ContainsVersion("0.1"));
ASSERT_FALSE(range.ContainsVersion("1.1"));
ASSERT_FALSE(range.ContainsVersion("1.2"));
ASSERT_TRUE(range.ContainsVersion("1.2.2"));
ASSERT_TRUE(range.ContainsVersion("1.2.3"));
ASSERT_TRUE(range.ContainsVersion("2"));
ASSERT_FALSE(range.ContainsVersion("3"));
ASSERT_FALSE(range.ContainsVersion("3.1"));
ASSERT_FALSE(range.ContainsVersion("4"));
}
TEST(VersionRangeTest, AnyVersion1) {
VersionRange range("(-)");
ASSERT_TRUE(range.IsValid());
ASSERT_TRUE(range.ContainsVersion("1"));
ASSERT_TRUE(range.ContainsVersion("1.1"));
ASSERT_TRUE(range.ContainsVersion("2"));
ASSERT_TRUE(range.ContainsVersion("3"));
ASSERT_TRUE(range.ContainsVersion("4"));
}
TEST(VersionRangeTest, AnyVersion2) {
VersionRange range("[-]");
ASSERT_TRUE(range.IsValid());
ASSERT_TRUE(range.ContainsVersion("1"));
ASSERT_TRUE(range.ContainsVersion("1.1"));
ASSERT_TRUE(range.ContainsVersion("2"));
ASSERT_TRUE(range.ContainsVersion("3"));
ASSERT_TRUE(range.ContainsVersion("4"));
}
TEST(VersionRangeTest, InvalidRangeSpec_SyntaxError1) {
VersionRange range("");
ASSERT_FALSE(range.IsValid());
ASSERT_FALSE(range.ContainsVersion("0"));
ASSERT_FALSE(range.ContainsVersion("1"));
}
TEST(VersionRangeTest, InvalidRangeSpec_SyntaxError2) {
VersionRange range("90j3awef");
ASSERT_FALSE(range.IsValid());
ASSERT_FALSE(range.ContainsVersion("0"));
ASSERT_FALSE(range.ContainsVersion("1"));
}
TEST(VersionRangeTest, InvalidRangeSpec_SyntaxError3) {
VersionRange range("[1.2)");
ASSERT_FALSE(range.IsValid());
ASSERT_FALSE(range.ContainsVersion("0"));
ASSERT_FALSE(range.ContainsVersion("1.2"));
}
TEST(VersionRangeTest, InvalidRangeSpec_SyntaxError4) {
VersionRange range("[1.2-");
ASSERT_FALSE(range.IsValid());
ASSERT_FALSE(range.ContainsVersion("0"));
ASSERT_FALSE(range.ContainsVersion("1.2"));
}
TEST(VersionRangeTest, InvalidRangeSpec_SyntaxError5) {
VersionRange range("1.2-)");
ASSERT_FALSE(range.IsValid());
ASSERT_FALSE(range.ContainsVersion("0"));
ASSERT_FALSE(range.ContainsVersion("1.2"));
}
TEST(VersionRangeTest, InvalidRangeSpec_SyntaxError6) {
VersionRange range("1.2-");
ASSERT_FALSE(range.IsValid());
ASSERT_FALSE(range.ContainsVersion("0"));
ASSERT_FALSE(range.ContainsVersion("1.2"));
}
TEST(VersionRangeTest, InvalidRangeSpec_SyntaxError7) {
VersionRange range("-1.2");
ASSERT_FALSE(range.IsValid());
ASSERT_FALSE(range.ContainsVersion("0"));
ASSERT_FALSE(range.ContainsVersion("1.2"));
}
TEST(VersionRangeTest, InvalidRangeSpec_SyntaxError8) {
VersionRange range("[-1.2");
ASSERT_FALSE(range.IsValid());
ASSERT_FALSE(range.ContainsVersion("0"));
ASSERT_FALSE(range.ContainsVersion("1.2"));
}
TEST(VersionRangeTest, InvalidRangeSpec_SyntaxError9) {
VersionRange range("-1.2)");
ASSERT_FALSE(range.IsValid());
ASSERT_FALSE(range.ContainsVersion("0"));
ASSERT_FALSE(range.ContainsVersion("1.2"));
}
TEST(VersionRangeTest, InvalidRangeSpec_MinBiggerThanMax) {
VersionRange range("[3.4-1.2)");
ASSERT_FALSE(range.IsValid());
ASSERT_FALSE(range.ContainsVersion("1.2"));
ASSERT_FALSE(range.ContainsVersion("2.0"));
ASSERT_FALSE(range.ContainsVersion("3.4"));
}
} // namespace remoting