1/* 2 * Copyright (C) 2013 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17#include <gtest/gtest.h> 18 19#include <errno.h> 20#include <locale.h> 21#include <strings.h> 22 23#if defined(NOFORTIFY) 24#define STRINGS_TEST strings_nofortify 25#else 26#define STRINGS_TEST strings 27#endif 28 29TEST(STRINGS_TEST, ffs) { 30 ASSERT_EQ( 0, ffs(0x00000000)); 31 ASSERT_EQ( 1, ffs(0x00000001)); 32 ASSERT_EQ( 6, ffs(0x00000020)); 33 ASSERT_EQ(11, ffs(0x00000400)); 34 ASSERT_EQ(16, ffs(0x00008000)); 35 ASSERT_EQ(17, ffs(0x00010000)); 36 ASSERT_EQ(22, ffs(0x00200000)); 37 ASSERT_EQ(27, ffs(0x04000000)); 38 ASSERT_EQ(32, ffs(0x80000000)); 39} 40 41TEST(STRINGS_TEST, strcasecmp) { 42 ASSERT_EQ(0, strcasecmp("hello", "HELLO")); 43 ASSERT_LT(strcasecmp("hello1", "hello2"), 0); 44 ASSERT_GT(strcasecmp("hello2", "hello1"), 0); 45} 46 47TEST(STRINGS_TEST, strcasecmp_l) { 48 locale_t l = newlocale(LC_ALL, "C", 0); 49 ASSERT_EQ(0, strcasecmp_l("hello", "HELLO", l)); 50 ASSERT_LT(strcasecmp_l("hello1", "hello2", l), 0); 51 ASSERT_GT(strcasecmp_l("hello2", "hello1", l), 0); 52 freelocale(l); 53} 54 55TEST(STRINGS_TEST, strncasecmp) { 56 ASSERT_EQ(0, strncasecmp("hello", "HELLO", 3)); 57 ASSERT_EQ(0, strncasecmp("abcXX", "ABCYY", 3)); 58 ASSERT_LT(strncasecmp("hello1", "hello2", 6), 0); 59 ASSERT_GT(strncasecmp("hello2", "hello1", 6), 0); 60} 61 62TEST(STRINGS_TEST, strncasecmp_l) { 63 locale_t l = newlocale(LC_ALL, "C", 0); 64 ASSERT_EQ(0, strncasecmp_l("hello", "HELLO", 3, l)); 65 ASSERT_EQ(0, strncasecmp_l("abcXX", "ABCYY", 3, l)); 66 ASSERT_LT(strncasecmp_l("hello1", "hello2", 6, l), 0); 67 ASSERT_GT(strncasecmp_l("hello2", "hello1", 6, l), 0); 68 freelocale(l); 69} 70