1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "mojo/public/cpp/bindings/string.h" 6 #include "testing/gtest/include/gtest/gtest.h" 7 8 namespace mojo { 9 namespace test { 10 11 namespace { 12 const char* kHelloWorld = "hello world"; 13 } // namespace 14 15 TEST(StringTest, DefaultIsNotNull) { 16 String s; 17 EXPECT_FALSE(s.is_null()); 18 } 19 20 TEST(StringTest, ConstructedWithNULL) { 21 String s(nullptr); 22 EXPECT_TRUE(s.is_null()); 23 } 24 25 TEST(StringTest, ConstructedWithNullCharPointer) { 26 const char* null = nullptr; 27 String s(null); 28 EXPECT_TRUE(s.is_null()); 29 } 30 31 TEST(StringTest, AssignedNULL) { 32 String s(""); 33 EXPECT_FALSE(s.is_null()); 34 s = nullptr; 35 EXPECT_TRUE(s.is_null()); 36 } 37 38 TEST(StringTest, Empty) { 39 String s(""); 40 EXPECT_FALSE(s.is_null()); 41 EXPECT_TRUE(s.get().empty()); 42 } 43 44 TEST(StringTest, Basic) { 45 String s(kHelloWorld); 46 EXPECT_EQ(std::string(kHelloWorld), s.get()); 47 } 48 49 TEST(StringTest, Assignment) { 50 String s(kHelloWorld); 51 String t = s; // Makes a copy. 52 EXPECT_FALSE(t.is_null()); 53 EXPECT_EQ(std::string(kHelloWorld), t.get()); 54 EXPECT_FALSE(s.is_null()); 55 } 56 57 TEST(StringTest, Equality) { 58 String s(kHelloWorld); 59 String t(kHelloWorld); 60 EXPECT_EQ(s, t); 61 EXPECT_TRUE(s == s); 62 EXPECT_FALSE(s != s); 63 EXPECT_TRUE(s == t); 64 EXPECT_FALSE(s != t); 65 EXPECT_TRUE(kHelloWorld == s); 66 EXPECT_TRUE(s == kHelloWorld); 67 EXPECT_TRUE("not" != s); 68 EXPECT_FALSE("not" == s); 69 EXPECT_TRUE(s != "not"); 70 EXPECT_FALSE(s == "not"); 71 72 // Test null strings. 73 String n1; 74 String n2; 75 EXPECT_TRUE(n1 == n1); 76 EXPECT_FALSE(n1 != n2); 77 EXPECT_TRUE(n1 == n2); 78 EXPECT_FALSE(n1 != n2); 79 EXPECT_TRUE(n1 != s); 80 EXPECT_FALSE(n1 == s); 81 EXPECT_TRUE(s != n1); 82 EXPECT_FALSE(s == n1); 83 } 84 85 TEST(StringTest, LessThanNullness) { 86 String null; 87 String null2; 88 EXPECT_FALSE(null < null2); 89 EXPECT_FALSE(null2 < null); 90 91 String real("real"); 92 EXPECT_TRUE(null < real); 93 EXPECT_FALSE(real < null); 94 } 95 96 TEST(StringTest, MoveConstructors) { 97 std::string std_str(kHelloWorld); 98 99 String str1(std::move(std_str)); 100 EXPECT_TRUE(kHelloWorld == str1); 101 102 String str2(std::move(str1)); 103 EXPECT_TRUE(kHelloWorld == str2); 104 EXPECT_TRUE(str1.is_null()); 105 } 106 107 TEST(StringTest, MoveAssignments) { 108 std::string std_str(kHelloWorld); 109 110 String str1; 111 str1 = std::move(std_str); 112 EXPECT_TRUE(kHelloWorld == str1); 113 114 String str2; 115 str2 = std::move(str1); 116 EXPECT_TRUE(kHelloWorld == str2); 117 EXPECT_TRUE(str1.is_null()); 118 } 119 120 TEST(StringTest, Storage) { 121 String str(kHelloWorld); 122 123 EXPECT_TRUE(kHelloWorld == str.storage()); 124 125 std::string storage = str.PassStorage(); 126 EXPECT_TRUE(str.is_null()); 127 EXPECT_TRUE(kHelloWorld == storage); 128 } 129 130 } // namespace test 131 } // namespace mojo 132