Home | History | Annotate | Download | only in utils
      1 /*
      2  * Copyright (C) 2014 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 "utils/char_utils.h"
     18 
     19 #include <gtest/gtest.h>
     20 
     21 #include "defines.h"
     22 
     23 namespace latinime {
     24 namespace {
     25 
     26 TEST(CharUtilsTest, TestIsAsciiUpper) {
     27     EXPECT_TRUE(CharUtils::isAsciiUpper('A'));
     28     EXPECT_TRUE(CharUtils::isAsciiUpper('Z'));
     29     EXPECT_FALSE(CharUtils::isAsciiUpper('a'));
     30     EXPECT_FALSE(CharUtils::isAsciiUpper('z'));
     31     EXPECT_FALSE(CharUtils::isAsciiUpper('@'));
     32     EXPECT_FALSE(CharUtils::isAsciiUpper(' '));
     33     EXPECT_FALSE(CharUtils::isAsciiUpper(0x00C0 /* LATIN CAPITAL LETTER A WITH GRAVE */));
     34     EXPECT_FALSE(CharUtils::isAsciiUpper(0x00E0 /* LATIN SMALL LETTER A WITH GRAVE */));
     35     EXPECT_FALSE(CharUtils::isAsciiUpper(0x03C2 /* GREEK SMALL LETTER FINAL SIGMA */));
     36     EXPECT_FALSE(CharUtils::isAsciiUpper(0x0410 /* CYRILLIC CAPITAL LETTER A */));
     37     EXPECT_FALSE(CharUtils::isAsciiUpper(0x0430 /* CYRILLIC SMALL LETTER A */));
     38     EXPECT_FALSE(CharUtils::isAsciiUpper(0x3042 /* HIRAGANA LETTER A */));
     39     EXPECT_FALSE(CharUtils::isAsciiUpper(0x1F36A /* COOKIE */));
     40 }
     41 
     42 TEST(CharUtilsTest, TestToLowerCase) {
     43     EXPECT_EQ('a', CharUtils::toLowerCase('A'));
     44     EXPECT_EQ('z', CharUtils::toLowerCase('Z'));
     45     EXPECT_EQ('a', CharUtils::toLowerCase('a'));
     46     EXPECT_EQ('z', CharUtils::toLowerCase('z'));
     47     EXPECT_EQ('@', CharUtils::toLowerCase('@'));
     48     EXPECT_EQ(' ', CharUtils::toLowerCase(' '));
     49     EXPECT_EQ(0x00E0 /* LATIN SMALL LETTER A WITH GRAVE */,
     50             CharUtils::toLowerCase(0x00C0 /* LATIN CAPITAL LETTER A WITH GRAVE */));
     51     EXPECT_EQ(0x00E0 /* LATIN SMALL LETTER A WITH GRAVE */,
     52             CharUtils::toLowerCase(0x00E0 /* LATIN SMALL LETTER A WITH GRAVE */));
     53     EXPECT_EQ(0x03C2 /* GREEK SMALL LETTER FINAL SIGMA */,
     54             CharUtils::toLowerCase(0x03C2 /* GREEK SMALL LETTER FINAL SIGMA */));
     55     EXPECT_EQ(0x0430 /* CYRILLIC SMALL LETTER A */,
     56             CharUtils::toLowerCase(0x0410 /* CYRILLIC CAPITAL LETTER A */));
     57     EXPECT_EQ(0x0430 /* CYRILLIC SMALL LETTER A */,
     58             CharUtils::toLowerCase(0x0430 /* CYRILLIC SMALL LETTER A */));
     59     EXPECT_EQ(0x3042 /* HIRAGANA LETTER A */,
     60             CharUtils::toLowerCase(0x3042 /* HIRAGANA LETTER A */));
     61     EXPECT_EQ(0x1F36A /* COOKIE */, CharUtils::toLowerCase(0x1F36A /* COOKIE */));
     62 }
     63 
     64 TEST(CharUtilsTest, TestToBaseLowerCase) {
     65     EXPECT_EQ('a', CharUtils::toBaseLowerCase('A'));
     66     EXPECT_EQ('z', CharUtils::toBaseLowerCase('Z'));
     67     EXPECT_EQ('a', CharUtils::toBaseLowerCase('a'));
     68     EXPECT_EQ('z', CharUtils::toBaseLowerCase('z'));
     69     EXPECT_EQ('@', CharUtils::toBaseLowerCase('@'));
     70     EXPECT_EQ(' ', CharUtils::toBaseLowerCase(' '));
     71     EXPECT_EQ('a', CharUtils::toBaseLowerCase(0x00C0 /* LATIN CAPITAL LETTER A WITH GRAVE */));
     72     EXPECT_EQ('a', CharUtils::toBaseLowerCase(0x00E0 /* LATIN SMALL LETTER A WITH GRAVE */));
     73     EXPECT_EQ(0x03C2 /* GREEK SMALL LETTER FINAL SIGMA */,
     74             CharUtils::toBaseLowerCase(0x03C2 /* GREEK SMALL LETTER FINAL SIGMA */));
     75     EXPECT_EQ(0x0430 /* CYRILLIC SMALL LETTER A */,
     76             CharUtils::toBaseLowerCase(0x0410 /* CYRILLIC CAPITAL LETTER A */));
     77     EXPECT_EQ(0x0430 /* CYRILLIC SMALL LETTER A */,
     78             CharUtils::toBaseLowerCase(0x0430 /* CYRILLIC SMALL LETTER A */));
     79     EXPECT_EQ(0x3042 /* HIRAGANA LETTER A */,
     80             CharUtils::toBaseLowerCase(0x3042 /* HIRAGANA LETTER A */));
     81     EXPECT_EQ(0x1F36A /* COOKIE */, CharUtils::toBaseLowerCase(0x1F36A /* COOKIE */));
     82 }
     83 
     84 TEST(CharUtilsTest, TestToBaseCodePoint) {
     85     EXPECT_EQ('A', CharUtils::toBaseCodePoint('A'));
     86     EXPECT_EQ('Z', CharUtils::toBaseCodePoint('Z'));
     87     EXPECT_EQ('a', CharUtils::toBaseCodePoint('a'));
     88     EXPECT_EQ('z', CharUtils::toBaseCodePoint('z'));
     89     EXPECT_EQ('@', CharUtils::toBaseCodePoint('@'));
     90     EXPECT_EQ(' ', CharUtils::toBaseCodePoint(' '));
     91     EXPECT_EQ('A', CharUtils::toBaseCodePoint(0x00C0 /* LATIN CAPITAL LETTER A WITH GRAVE */));
     92     EXPECT_EQ('a', CharUtils::toBaseCodePoint(0x00E0 /* LATIN SMALL LETTER A WITH GRAVE */));
     93     EXPECT_EQ(0x03C2 /* GREEK SMALL LETTER FINAL SIGMA */,
     94             CharUtils::toBaseLowerCase(0x03C2 /* GREEK SMALL LETTER FINAL SIGMA */));
     95     EXPECT_EQ(0x0410 /* CYRILLIC CAPITAL LETTER A */,
     96             CharUtils::toBaseCodePoint(0x0410 /* CYRILLIC CAPITAL LETTER A */));
     97     EXPECT_EQ(0x0430 /* CYRILLIC SMALL LETTER A */,
     98             CharUtils::toBaseCodePoint(0x0430 /* CYRILLIC SMALL LETTER A */));
     99     EXPECT_EQ(0x3042 /* HIRAGANA LETTER A */,
    100             CharUtils::toBaseCodePoint(0x3042 /* HIRAGANA LETTER A */));
    101     EXPECT_EQ(0x1F36A /* COOKIE */, CharUtils::toBaseCodePoint(0x1F36A /* COOKIE */));
    102 }
    103 
    104 TEST(CharUtilsTest, TestIsIntentionalOmissionCodePoint) {
    105     EXPECT_TRUE(CharUtils::isIntentionalOmissionCodePoint('\''));
    106     EXPECT_TRUE(CharUtils::isIntentionalOmissionCodePoint('-'));
    107     EXPECT_FALSE(CharUtils::isIntentionalOmissionCodePoint('a'));
    108     EXPECT_FALSE(CharUtils::isIntentionalOmissionCodePoint('?'));
    109     EXPECT_FALSE(CharUtils::isIntentionalOmissionCodePoint('/'));
    110 }
    111 
    112 TEST(CharUtilsTest, TestIsInUnicodeSpace) {
    113     EXPECT_FALSE(CharUtils::isInUnicodeSpace(NOT_A_CODE_POINT));
    114     EXPECT_FALSE(CharUtils::isInUnicodeSpace(CODE_POINT_BEGINNING_OF_SENTENCE));
    115     EXPECT_TRUE(CharUtils::isInUnicodeSpace('a'));
    116     EXPECT_TRUE(CharUtils::isInUnicodeSpace(0x0410 /* CYRILLIC CAPITAL LETTER A */));
    117     EXPECT_TRUE(CharUtils::isInUnicodeSpace(0x3042 /* HIRAGANA LETTER A */));
    118     EXPECT_TRUE(CharUtils::isInUnicodeSpace(0x1F36A /* COOKIE */));
    119 }
    120 
    121 }  // namespace
    122 }  // namespace latinime
    123