147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org/* 247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * Copyright 2004 The WebRTC Project Authors. All rights reserved. 347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * 447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * Use of this source code is governed by a BSD-style license 547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * that can be found in the LICENSE file in the root of the source 647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * tree. An additional intellectual property rights grant can be found 747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * in the file PATENTS. All contributing project authors may 847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * be found in the AUTHORS file in the root of the source tree. 947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org */ 1047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 1147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "webrtc/base/gunit.h" 1247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "webrtc/base/stringutils.h" 1347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "webrtc/base/common.h" 1447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 1547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgnamespace rtc { 1647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 1747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// Tests for string_match(). 1847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 1947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(string_matchTest, Matches) { 2047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_TRUE( string_match("A.B.C.D", "a.b.c.d")); 2147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_TRUE( string_match("www.TEST.GOOGLE.COM", "www.*.com")); 2247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_TRUE( string_match("127.0.0.1", "12*.0.*1")); 2347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_TRUE( string_match("127.1.0.21", "12*.0.*1")); 2447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_FALSE(string_match("127.0.0.0", "12*.0.*1")); 2547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_FALSE(string_match("127.0.0.0", "12*.0.*1")); 2647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_FALSE(string_match("127.1.1.21", "12*.0.*1")); 2747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} 2847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 2947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// It's not clear if we will ever use wchar_t strings on unix. In theory, 3047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// all strings should be Utf8 all the time, except when interfacing with Win32 3147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// APIs that require Utf16. 3247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 3347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#if defined(WEBRTC_WIN) 3447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 3547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// Tests for ascii_string_compare(). 3647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 3747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// Tests NULL input. 3847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(ascii_string_compareTest, NullInput) { 3947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org // The following results in an access violation in 4047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org // ascii_string_compare. Is this a bug or by design? stringutils.h 4147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org // should document the expected behavior in this case. 4247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 4347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org // EXPECT_EQ(0, ascii_string_compare(NULL, NULL, 1, identity)); 4447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} 4547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 4647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// Tests comparing two strings of different lengths. 4747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(ascii_string_compareTest, DifferentLengths) { 4847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ(-1, ascii_string_compare(L"Test", "Test1", 5, identity)); 4947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} 5047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 5147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// Tests the case where the buffer size is smaller than the string 5247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// lengths. 5347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(ascii_string_compareTest, SmallBuffer) { 5447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ(0, ascii_string_compare(L"Test", "Test1", 3, identity)); 5547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} 5647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 5747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// Tests the case where the buffer is not full. 5847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(ascii_string_compareTest, LargeBuffer) { 5947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ(0, ascii_string_compare(L"Test", "Test", 10, identity)); 6047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} 6147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 6247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// Tests comparing two eqaul strings. 6347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(ascii_string_compareTest, Equal) { 6447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ(0, ascii_string_compare(L"Test", "Test", 5, identity)); 6547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ(0, ascii_string_compare(L"TeSt", "tEsT", 5, tolowercase)); 6647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} 6747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 6847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// Tests comparing a smller string to a larger one. 6947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(ascii_string_compareTest, LessThan) { 7047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ(-1, ascii_string_compare(L"abc", "abd", 4, identity)); 7147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ(-1, ascii_string_compare(L"ABC", "abD", 5, tolowercase)); 7247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} 7347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 7447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// Tests comparing a larger string to a smaller one. 7547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(ascii_string_compareTest, GreaterThan) { 7647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ(1, ascii_string_compare(L"xyz", "xy", 5, identity)); 7747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ(1, ascii_string_compare(L"abc", "ABB", 5, tolowercase)); 7847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} 7947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#endif // WEBRTC_WIN 8047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 8147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(string_trim_Test, Trimming) { 8247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ("temp", string_trim("\n\r\t temp \n\r\t")); 8347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ("temp\n\r\t temp", string_trim(" temp\n\r\t temp ")); 8447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ("temp temp", string_trim("temp temp")); 8547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ("", string_trim(" \r\n\t")); 8647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ("", string_trim("")); 8747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} 8847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 8947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(string_startsTest, StartsWith) { 9047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_TRUE(starts_with("foobar", "foo")); 9147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_TRUE(starts_with("foobar", "foobar")); 9247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_TRUE(starts_with("foobar", "")); 9347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_TRUE(starts_with("", "")); 9447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_FALSE(starts_with("foobar", "bar")); 9547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_FALSE(starts_with("foobar", "foobarbaz")); 9647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_FALSE(starts_with("", "f")); 9747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} 9847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 9947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST(string_endsTest, EndsWith) { 10047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_TRUE(ends_with("foobar", "bar")); 10147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_TRUE(ends_with("foobar", "foobar")); 10247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_TRUE(ends_with("foobar", "")); 10347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_TRUE(ends_with("", "")); 10447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_FALSE(ends_with("foobar", "foo")); 10547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_FALSE(ends_with("foobar", "foobarbaz")); 10647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_FALSE(ends_with("", "f")); 10747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} 10847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 10947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} // namespace rtc 110