aboutsummaryrefslogtreecommitdiff
path: root/pw_unit_test/framework_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'pw_unit_test/framework_test.cc')
-rw-r--r--pw_unit_test/framework_test.cc176
1 files changed, 168 insertions, 8 deletions
diff --git a/pw_unit_test/framework_test.cc b/pw_unit_test/framework_test.cc
index 939c818e0..211c665ce 100644
--- a/pw_unit_test/framework_test.cc
+++ b/pw_unit_test/framework_test.cc
@@ -57,6 +57,46 @@ TEST(PigweedTest, ExpectBasicComparisons) {
ASSERT_LE(-2, -2);
}
+TEST(PigweedTest, ExpectNearComparisons) {
+ EXPECT_NEAR(1, 2, 1);
+ ASSERT_NEAR(1, 2, 1);
+
+ EXPECT_NEAR(-5, 5, 10);
+ ASSERT_NEAR(-5, 5, 10);
+
+ int x = 17;
+ int epsilon = 5;
+
+ EXPECT_NEAR(x, 15, epsilon);
+ ASSERT_NEAR(x, 15, epsilon);
+}
+
+TEST(PigweedTest, ExpectFloatComparisons) {
+ EXPECT_FLOAT_EQ(5.0f, 10.0f / 2);
+ ASSERT_FLOAT_EQ(5.0f, 10.0f / 2);
+
+ EXPECT_FLOAT_EQ(-0.5f, -5.0f / 10);
+ ASSERT_FLOAT_EQ(-0.5f, -5.0f / 10);
+
+ float x = 17.0f / 20.0f;
+
+ EXPECT_FLOAT_EQ(x, 17.0f / 20.0f);
+ ASSERT_FLOAT_EQ(x, 17.0f / 20.0f);
+}
+
+TEST(PigweedTest, ExpectDoubleComparisons) {
+ EXPECT_DOUBLE_EQ(5.0, 10.0 / 2);
+ ASSERT_DOUBLE_EQ(5.0, 10.0 / 2);
+
+ EXPECT_DOUBLE_EQ(-0.5, -5.0 / 10);
+ ASSERT_DOUBLE_EQ(-0.5, -5.0 / 10);
+
+ double x = 17.0 / 20.0;
+
+ EXPECT_DOUBLE_EQ(x, 17.0 / 20.0);
+ ASSERT_DOUBLE_EQ(x, 17.0 / 20.0);
+}
+
TEST(PigweedTest, ExpectStringEquality) {
EXPECT_STREQ("", "");
EXPECT_STREQ("Yes", "Yes");
@@ -66,6 +106,9 @@ TEST(PigweedTest, ExpectStringEquality) {
EXPECT_STRNE("NO", "no");
ASSERT_STRNE("yes", no);
+
+ EXPECT_STREQ(nullptr, nullptr);
+ EXPECT_STRNE("abc", nullptr);
}
TEST(PigweedTest, SucceedAndFailMacros) {
@@ -85,6 +128,37 @@ TEST(PigweedTest, SkipMacro) {
EXPECT_TRUE(false);
}
+TEST(PigweedTest, Logs) {
+ EXPECT_TRUE(true) << "This message is ignored";
+ EXPECT_FALSE(false) << "This message is ignored";
+ EXPECT_EQ(0, 0) << "This message is ignored";
+ EXPECT_NE(0, 1) << "This message is ignored";
+ EXPECT_GT(1, 0) << "This message is ignored";
+ EXPECT_GE(0, 0) << "This message is ignored";
+ EXPECT_LT(0, 1) << "This message is ignored";
+ EXPECT_LE(0, 0) << "This message is ignored";
+ EXPECT_STREQ("", "") << "This message is ignored";
+ EXPECT_STRNE("", "?") << "This message is ignored";
+
+ ASSERT_TRUE(true) << "This message is ignored";
+ ASSERT_FALSE(false) << "This message is ignored";
+ ASSERT_EQ(0, 0) << "This message is ignored";
+ ASSERT_NE(0, 1) << "This message is ignored";
+ ASSERT_GT(1, 0) << "This message is ignored";
+ ASSERT_GE(0, 0) << "This message is ignored";
+ ASSERT_LT(0, 1) << "This message is ignored";
+ ASSERT_LE(0, 0) << "This message is ignored";
+ ASSERT_STREQ("", "") << "This message is ignored";
+ ASSERT_STRNE("", "?") << "This message is ignored";
+
+ if (false) {
+ ADD_FAILURE() << "This failed!" << 123;
+ GTEST_FAIL() << "This failed!" << 123 << '?';
+ GTEST_SKIP() << 1.0f << " skips!";
+ }
+ GTEST_SUCCEED() << "This message is ignored";
+}
+
class SkipOnSetUpTest : public ::testing::Test {
public:
void SetUp() override { GTEST_SKIP(); }
@@ -144,6 +218,13 @@ TEST(PigweedTest, MacroArgumentsOnlyAreEvaluatedOnce) {
EXPECT_EQ(i, 4);
}
+class ClassWithPrivateMethod {
+ FRIEND_TEST(FixtureTest, FriendClass);
+
+ private:
+ int Return314() { return 314; }
+};
+
class FixtureTest : public ::testing::Test {
public:
FixtureTest() : string_("hello world") {}
@@ -160,6 +241,10 @@ TEST_F(FixtureTest, CustomFixture) {
EXPECT_EQ(StringLength(), 11);
}
+TEST_F(FixtureTest, FriendClass) {
+ EXPECT_EQ(ClassWithPrivateMethod().Return314(), 314);
+}
+
class PigweedTestFixture : public ::testing::Test {
protected:
PigweedTestFixture() : cool_number_(35) {}
@@ -191,21 +276,96 @@ class Expectations : public ::testing::Test {
TEST_F(Expectations, SetCoolNumber) { cool_number_ = 14159; }
class SetUpAndTearDown : public ::testing::Test {
- protected:
- SetUpAndTearDown() : value_(0) { EXPECT_EQ(value_, 0); }
+ public:
+ static int value;
- ~SetUpAndTearDown() override { EXPECT_EQ(value_, 1); }
+ static void SetUpTestSuite() {
+ value = 1;
+ EXPECT_EQ(value, 1);
+ value++;
+ }
- void SetUp() override { value_ = 1337; }
+ static void TearDownTestSuite() {
+ EXPECT_EQ(value, 7);
+ value++;
+ }
- void TearDown() override { value_ = 1; }
+ protected:
+ SetUpAndTearDown() {
+ EXPECT_EQ(value, 2);
+ value++;
+ }
- int value_;
+ ~SetUpAndTearDown() override {
+ EXPECT_EQ(value, 6);
+ value++;
+ }
+
+ void SetUp() override {
+ EXPECT_EQ(value, 3);
+ value++;
+ }
+
+ void TearDown() override {
+ EXPECT_EQ(value, 5);
+ value++;
+ }
};
+int SetUpAndTearDown::value = 1;
+
TEST_F(SetUpAndTearDown, MakeSureItIsSet) {
- EXPECT_EQ(value_, 1337);
- value_ = 3210;
+ EXPECT_EQ(value, 4);
+ value++;
+}
+
+TEST(TestSuiteTearDown, MakeSureItRan) {
+ EXPECT_EQ(SetUpAndTearDown::value, 8);
+}
+
+TEST(UnknownTypeToString, SmallObject) {
+ struct {
+ char a = 0xa1;
+ } object;
+
+ StringBuffer<64> expected;
+ expected << "<1-byte object at 0x" << &object << '>';
+ ASSERT_EQ(OkStatus(), expected.status());
+
+ StringBuffer<64> actual;
+ actual << object;
+ ASSERT_EQ(OkStatus(), actual.status());
+ EXPECT_STREQ(expected.c_str(), actual.c_str());
+}
+
+TEST(UnknownTypeToString, NineByteObject) {
+ struct {
+ char a[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
+ } object;
+
+ StringBuffer<64> expected;
+ expected << "<9-byte object at 0x" << &object << '>';
+ ASSERT_EQ(OkStatus(), expected.status());
+
+ StringBuffer<64> actual;
+ actual << object;
+ ASSERT_EQ(OkStatus(), actual.status());
+ EXPECT_STREQ(expected.c_str(), actual.c_str());
+}
+
+TEST(UnknownTypeToString, TenByteObject) {
+ struct {
+ char a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+ } object;
+
+ StringBuffer<72> expected;
+ expected << "<10-byte object at 0x" << &object << '>';
+ ASSERT_EQ(OkStatus(), expected.status());
+
+ StringBuffer<72> actual;
+ actual << object;
+ ASSERT_EQ(OkStatus(), actual.status());
+ EXPECT_STREQ(expected.c_str(), actual.c_str());
}
} // namespace