mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-20 00:51:42 +00:00
Add unit tests for StringValue and Value.
Add unit test framework to CMakeLists.txt. Fix a couple of bugs found by unit tests. Change-Id: I2092a7f0570fae0f19f9e083c4837ccefcc4ca1a
This commit is contained in:
52
test/unit/test_StringValue.cpp
Normal file
52
test/unit/test_StringValue.cpp
Normal file
@@ -0,0 +1,52 @@
|
||||
#include "Value.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
namespace ntimpl {
|
||||
|
||||
class StringValueTest : public ::testing::Test {
|
||||
public:
|
||||
NT_String& ToNT(StringValue& v) { return v; }
|
||||
};
|
||||
|
||||
TEST_F(StringValueTest, ConstructEmpty) {
|
||||
StringValue v;
|
||||
ASSERT_EQ(ToNT(v).str, nullptr);
|
||||
ASSERT_EQ(ToNT(v).len, 0u);
|
||||
}
|
||||
|
||||
TEST_F(StringValueTest, ConstructStringRef) {
|
||||
StringValue v("hello");
|
||||
ASSERT_EQ(llvm::StringRef(v), "hello");
|
||||
ASSERT_EQ(ToNT(v).str, llvm::StringRef("hello"));
|
||||
ASSERT_EQ(ToNT(v).len, 5u);
|
||||
}
|
||||
|
||||
TEST_F(StringValueTest, ConstructMove) {
|
||||
StringValue v("hello");
|
||||
char* orig = ToNT(v).str;
|
||||
ASSERT_NE(orig, nullptr);
|
||||
ASSERT_EQ(ToNT(v).len, 5u);
|
||||
StringValue v2(std::move(v));
|
||||
ASSERT_EQ(ToNT(v).str, nullptr);
|
||||
ASSERT_EQ(ToNT(v).len, 0u);
|
||||
ASSERT_EQ(ToNT(v2).str, orig);
|
||||
ASSERT_EQ(ToNT(v2).len, 5u);
|
||||
}
|
||||
|
||||
TEST_F(StringValueTest, AssignMove) {
|
||||
StringValue v("hello");
|
||||
char* orig = ToNT(v).str;
|
||||
ASSERT_NE(orig, nullptr);
|
||||
ASSERT_EQ(ToNT(v).len, 5u);
|
||||
StringValue v2("goodbye");
|
||||
ASSERT_NE(ToNT(v2).str, nullptr);
|
||||
ASSERT_EQ(ToNT(v2).len, 7u);
|
||||
v2 = std::move(v);
|
||||
ASSERT_EQ(ToNT(v).str, nullptr);
|
||||
ASSERT_EQ(ToNT(v).len, 0u);
|
||||
ASSERT_EQ(ToNT(v2).str, orig);
|
||||
ASSERT_EQ(ToNT(v2).len, 5u);
|
||||
}
|
||||
|
||||
} // namespace ntimpl
|
||||
Reference in New Issue
Block a user