2015-07-03 13:29:31 -07:00
|
|
|
#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;
|
2015-07-03 17:21:57 -07:00
|
|
|
ASSERT_EQ(nullptr, ToNT(v).str);
|
|
|
|
|
ASSERT_EQ(0u, ToNT(v).len);
|
2015-07-03 13:29:31 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(StringValueTest, ConstructStringRef) {
|
|
|
|
|
StringValue v("hello");
|
2015-07-03 17:21:57 -07:00
|
|
|
ASSERT_EQ("hello", llvm::StringRef(v));
|
|
|
|
|
ASSERT_EQ(llvm::StringRef("hello"), ToNT(v).str);
|
|
|
|
|
ASSERT_EQ(5u, ToNT(v).len);
|
2015-07-03 13:29:31 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(StringValueTest, ConstructMove) {
|
|
|
|
|
StringValue v("hello");
|
|
|
|
|
char* orig = ToNT(v).str;
|
|
|
|
|
ASSERT_NE(orig, nullptr);
|
2015-07-03 17:21:57 -07:00
|
|
|
ASSERT_EQ(5u, ToNT(v).len);
|
2015-07-03 13:29:31 -07:00
|
|
|
StringValue v2(std::move(v));
|
2015-07-03 17:21:57 -07:00
|
|
|
ASSERT_EQ(nullptr, ToNT(v).str);
|
|
|
|
|
ASSERT_EQ(0u, ToNT(v).len);
|
|
|
|
|
ASSERT_EQ(orig, ToNT(v2).str);
|
|
|
|
|
ASSERT_EQ(5u, ToNT(v2).len);
|
2015-07-03 13:29:31 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(StringValueTest, AssignMove) {
|
|
|
|
|
StringValue v("hello");
|
|
|
|
|
char* orig = ToNT(v).str;
|
|
|
|
|
ASSERT_NE(orig, nullptr);
|
2015-07-03 17:21:57 -07:00
|
|
|
ASSERT_EQ(5u, ToNT(v).len);
|
2015-07-03 13:29:31 -07:00
|
|
|
StringValue v2("goodbye");
|
|
|
|
|
ASSERT_NE(ToNT(v2).str, nullptr);
|
2015-07-03 17:21:57 -07:00
|
|
|
ASSERT_EQ(7u, ToNT(v2).len);
|
2015-07-03 13:29:31 -07:00
|
|
|
v2 = std::move(v);
|
2015-07-03 17:21:57 -07:00
|
|
|
ASSERT_EQ(nullptr, ToNT(v).str);
|
|
|
|
|
ASSERT_EQ(0u, ToNT(v).len);
|
|
|
|
|
ASSERT_EQ(orig, ToNT(v2).str);
|
|
|
|
|
ASSERT_EQ(5u, ToNT(v2).len);
|
2015-07-03 13:29:31 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // namespace ntimpl
|