| // Copyright 2014 The Chromium 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 "mojo/public/cpp/bindings/string.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace mojo { |
| namespace test { |
| |
| namespace { |
| const char* kHelloWorld = "hello world"; |
| } // namespace |
| |
| TEST(StringTest, DefaultIsNotNull) { |
| String s; |
| EXPECT_FALSE(s.is_null()); |
| } |
| |
| TEST(StringTest, ConstructedWithNULL) { |
| String s(nullptr); |
| EXPECT_TRUE(s.is_null()); |
| } |
| |
| TEST(StringTest, ConstructedWithNullCharPointer) { |
| const char* null = nullptr; |
| String s(null); |
| EXPECT_TRUE(s.is_null()); |
| } |
| |
| TEST(StringTest, AssignedNULL) { |
| String s(""); |
| EXPECT_FALSE(s.is_null()); |
| s = nullptr; |
| EXPECT_TRUE(s.is_null()); |
| } |
| |
| TEST(StringTest, Empty) { |
| String s(""); |
| EXPECT_FALSE(s.is_null()); |
| EXPECT_TRUE(s.get().empty()); |
| } |
| |
| TEST(StringTest, Basic) { |
| String s(kHelloWorld); |
| EXPECT_EQ(std::string(kHelloWorld), s.get()); |
| } |
| |
| TEST(StringTest, Assignment) { |
| String s(kHelloWorld); |
| String t = s; // Makes a copy. |
| EXPECT_FALSE(t.is_null()); |
| EXPECT_EQ(std::string(kHelloWorld), t.get()); |
| EXPECT_FALSE(s.is_null()); |
| } |
| |
| TEST(StringTest, Equality) { |
| String s(kHelloWorld); |
| String t(kHelloWorld); |
| EXPECT_EQ(s, t); |
| EXPECT_TRUE(s == s); |
| EXPECT_FALSE(s != s); |
| EXPECT_TRUE(s == t); |
| EXPECT_FALSE(s != t); |
| EXPECT_TRUE(kHelloWorld == s); |
| EXPECT_TRUE(s == kHelloWorld); |
| EXPECT_TRUE("not" != s); |
| EXPECT_FALSE("not" == s); |
| EXPECT_TRUE(s != "not"); |
| EXPECT_FALSE(s == "not"); |
| |
| // Test null strings. |
| String n1; |
| String n2; |
| EXPECT_TRUE(n1 == n1); |
| EXPECT_FALSE(n1 != n2); |
| EXPECT_TRUE(n1 == n2); |
| EXPECT_FALSE(n1 != n2); |
| EXPECT_TRUE(n1 != s); |
| EXPECT_FALSE(n1 == s); |
| EXPECT_TRUE(s != n1); |
| EXPECT_FALSE(s == n1); |
| } |
| |
| TEST(StringTest, LessThanNullness) { |
| String null; |
| String null2; |
| EXPECT_FALSE(null < null2); |
| EXPECT_FALSE(null2 < null); |
| |
| String real("real"); |
| EXPECT_TRUE(null < real); |
| EXPECT_FALSE(real < null); |
| } |
| |
| TEST(StringTest, MoveConstructors) { |
| std::string std_str(kHelloWorld); |
| |
| String str1(std::move(std_str)); |
| EXPECT_TRUE(kHelloWorld == str1); |
| |
| String str2(std::move(str1)); |
| EXPECT_TRUE(kHelloWorld == str2); |
| EXPECT_TRUE(str1.is_null()); |
| } |
| |
| TEST(StringTest, MoveAssignments) { |
| std::string std_str(kHelloWorld); |
| |
| String str1; |
| str1 = std::move(std_str); |
| EXPECT_TRUE(kHelloWorld == str1); |
| |
| String str2; |
| str2 = std::move(str1); |
| EXPECT_TRUE(kHelloWorld == str2); |
| EXPECT_TRUE(str1.is_null()); |
| } |
| |
| TEST(StringTest, Storage) { |
| String str(kHelloWorld); |
| |
| EXPECT_TRUE(kHelloWorld == str.storage()); |
| |
| std::string storage = str.PassStorage(); |
| EXPECT_TRUE(str.is_null()); |
| EXPECT_TRUE(kHelloWorld == storage); |
| } |
| |
| } // namespace test |
| } // namespace mojo |