1aa966638b9428e78837eff93ef29f10f31193256Kenny Root/* 2aa966638b9428e78837eff93ef29f10f31193256Kenny Root * Copyright (C) 2010 The Android Open Source Project 3aa966638b9428e78837eff93ef29f10f31193256Kenny Root * 4aa966638b9428e78837eff93ef29f10f31193256Kenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 5aa966638b9428e78837eff93ef29f10f31193256Kenny Root * you may not use this file except in compliance with the License. 6aa966638b9428e78837eff93ef29f10f31193256Kenny Root * You may obtain a copy of the License at 7aa966638b9428e78837eff93ef29f10f31193256Kenny Root * 8aa966638b9428e78837eff93ef29f10f31193256Kenny Root * http://www.apache.org/licenses/LICENSE-2.0 9aa966638b9428e78837eff93ef29f10f31193256Kenny Root * 10aa966638b9428e78837eff93ef29f10f31193256Kenny Root * Unless required by applicable law or agreed to in writing, software 11aa966638b9428e78837eff93ef29f10f31193256Kenny Root * distributed under the License is distributed on an "AS IS" BASIS, 12aa966638b9428e78837eff93ef29f10f31193256Kenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13aa966638b9428e78837eff93ef29f10f31193256Kenny Root * See the License for the specific language governing permissions and 14aa966638b9428e78837eff93ef29f10f31193256Kenny Root * limitations under the License. 15aa966638b9428e78837eff93ef29f10f31193256Kenny Root */ 16aa966638b9428e78837eff93ef29f10f31193256Kenny Root 17aa966638b9428e78837eff93ef29f10f31193256Kenny Root#define LOG_TAG "String8_test" 18aa966638b9428e78837eff93ef29f10f31193256Kenny Root#include <utils/Log.h> 19aa966638b9428e78837eff93ef29f10f31193256Kenny Root#include <utils/String8.h> 20aa966638b9428e78837eff93ef29f10f31193256Kenny Root 21aa966638b9428e78837eff93ef29f10f31193256Kenny Root#include <gtest/gtest.h> 22aa966638b9428e78837eff93ef29f10f31193256Kenny Root 23aa966638b9428e78837eff93ef29f10f31193256Kenny Rootnamespace android { 24aa966638b9428e78837eff93ef29f10f31193256Kenny Root 25aa966638b9428e78837eff93ef29f10f31193256Kenny Rootclass String8Test : public testing::Test { 26aa966638b9428e78837eff93ef29f10f31193256Kenny Rootprotected: 27aa966638b9428e78837eff93ef29f10f31193256Kenny Root virtual void SetUp() { 28aa966638b9428e78837eff93ef29f10f31193256Kenny Root } 29aa966638b9428e78837eff93ef29f10f31193256Kenny Root 30aa966638b9428e78837eff93ef29f10f31193256Kenny Root virtual void TearDown() { 31aa966638b9428e78837eff93ef29f10f31193256Kenny Root } 32aa966638b9428e78837eff93ef29f10f31193256Kenny Root}; 33aa966638b9428e78837eff93ef29f10f31193256Kenny Root 34aa966638b9428e78837eff93ef29f10f31193256Kenny RootTEST_F(String8Test, Cstr) { 35aa966638b9428e78837eff93ef29f10f31193256Kenny Root String8 tmp("Hello, world!"); 36aa966638b9428e78837eff93ef29f10f31193256Kenny Root 37aa966638b9428e78837eff93ef29f10f31193256Kenny Root EXPECT_STREQ(tmp.string(), "Hello, world!"); 38aa966638b9428e78837eff93ef29f10f31193256Kenny Root} 39aa966638b9428e78837eff93ef29f10f31193256Kenny Root 40aa966638b9428e78837eff93ef29f10f31193256Kenny RootTEST_F(String8Test, OperatorPlus) { 41aa966638b9428e78837eff93ef29f10f31193256Kenny Root String8 src1("Hello, "); 42aa966638b9428e78837eff93ef29f10f31193256Kenny Root 43aa966638b9428e78837eff93ef29f10f31193256Kenny Root // Test adding String8 + const char* 44aa966638b9428e78837eff93ef29f10f31193256Kenny Root const char* ccsrc2 = "world!"; 45aa966638b9428e78837eff93ef29f10f31193256Kenny Root String8 dst1 = src1 + ccsrc2; 46aa966638b9428e78837eff93ef29f10f31193256Kenny Root EXPECT_STREQ(dst1.string(), "Hello, world!"); 47aa966638b9428e78837eff93ef29f10f31193256Kenny Root EXPECT_STREQ(src1.string(), "Hello, "); 48aa966638b9428e78837eff93ef29f10f31193256Kenny Root EXPECT_STREQ(ccsrc2, "world!"); 49aa966638b9428e78837eff93ef29f10f31193256Kenny Root 50aa966638b9428e78837eff93ef29f10f31193256Kenny Root // Test adding String8 + String8 51aa966638b9428e78837eff93ef29f10f31193256Kenny Root String8 ssrc2("world!"); 52aa966638b9428e78837eff93ef29f10f31193256Kenny Root String8 dst2 = src1 + ssrc2; 53aa966638b9428e78837eff93ef29f10f31193256Kenny Root EXPECT_STREQ(dst2.string(), "Hello, world!"); 54aa966638b9428e78837eff93ef29f10f31193256Kenny Root EXPECT_STREQ(src1.string(), "Hello, "); 55aa966638b9428e78837eff93ef29f10f31193256Kenny Root EXPECT_STREQ(ssrc2.string(), "world!"); 56aa966638b9428e78837eff93ef29f10f31193256Kenny Root} 57aa966638b9428e78837eff93ef29f10f31193256Kenny Root 58aa966638b9428e78837eff93ef29f10f31193256Kenny RootTEST_F(String8Test, OperatorPlusEquals) { 59aa966638b9428e78837eff93ef29f10f31193256Kenny Root String8 src1("My voice"); 60aa966638b9428e78837eff93ef29f10f31193256Kenny Root 61aa966638b9428e78837eff93ef29f10f31193256Kenny Root // Testing String8 += String8 62aa966638b9428e78837eff93ef29f10f31193256Kenny Root String8 src2(" is my passport."); 63aa966638b9428e78837eff93ef29f10f31193256Kenny Root src1 += src2; 64aa966638b9428e78837eff93ef29f10f31193256Kenny Root EXPECT_STREQ(src1.string(), "My voice is my passport."); 65aa966638b9428e78837eff93ef29f10f31193256Kenny Root EXPECT_STREQ(src2.string(), " is my passport."); 66aa966638b9428e78837eff93ef29f10f31193256Kenny Root 67aa966638b9428e78837eff93ef29f10f31193256Kenny Root // Adding const char* to the previous string. 68aa966638b9428e78837eff93ef29f10f31193256Kenny Root const char* src3 = " Verify me."; 69aa966638b9428e78837eff93ef29f10f31193256Kenny Root src1 += src3; 70aa966638b9428e78837eff93ef29f10f31193256Kenny Root EXPECT_STREQ(src1.string(), "My voice is my passport. Verify me."); 71aa966638b9428e78837eff93ef29f10f31193256Kenny Root EXPECT_STREQ(src2.string(), " is my passport."); 72aa966638b9428e78837eff93ef29f10f31193256Kenny Root EXPECT_STREQ(src3, " Verify me."); 73aa966638b9428e78837eff93ef29f10f31193256Kenny Root} 74aa966638b9428e78837eff93ef29f10f31193256Kenny Root 75aa966638b9428e78837eff93ef29f10f31193256Kenny Root} 76