Home | History | Annotate | Download | only in header
      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 "dictionary/header/header_read_write_utils.h"
     18 
     19 #include <gtest/gtest.h>
     20 
     21 #include <cstring>
     22 #include <vector>
     23 
     24 #include "dictionary/interface/dictionary_header_structure_policy.h"
     25 
     26 namespace latinime {
     27 namespace {
     28 
     29 TEST(HeaderReadWriteUtilsTest, TestInsertCharactersIntoVector) {
     30     DictionaryHeaderStructurePolicy::AttributeMap::key_type vector;
     31 
     32     HeaderReadWriteUtils::insertCharactersIntoVector("", &vector);
     33     EXPECT_TRUE(vector.empty());
     34 
     35     static const char *str = "abc-xyz!?";
     36     HeaderReadWriteUtils::insertCharactersIntoVector(str, &vector);
     37     EXPECT_EQ(strlen(str) , vector.size());
     38     for (size_t i = 0; i < vector.size(); ++i) {
     39         EXPECT_EQ(str[i], vector[i]);
     40     }
     41 }
     42 
     43 TEST(HeaderReadWriteUtilsTest, TestAttributeMapForInt) {
     44     DictionaryHeaderStructurePolicy::AttributeMap attributeMap;
     45 
     46     // Returns default value if not exists.
     47     EXPECT_EQ(-1, HeaderReadWriteUtils::readIntAttributeValue(&attributeMap, "", -1));
     48     EXPECT_EQ(100, HeaderReadWriteUtils::readIntAttributeValue(&attributeMap, "abc", 100));
     49 
     50     HeaderReadWriteUtils::setIntAttribute(&attributeMap, "abc", 10);
     51     EXPECT_EQ(10, HeaderReadWriteUtils::readIntAttributeValue(&attributeMap, "abc", 100));
     52     HeaderReadWriteUtils::setIntAttribute(&attributeMap, "abc", 20);
     53     EXPECT_EQ(20, HeaderReadWriteUtils::readIntAttributeValue(&attributeMap, "abc", 100));
     54     HeaderReadWriteUtils::setIntAttribute(&attributeMap, "abcd", 30);
     55     EXPECT_EQ(30, HeaderReadWriteUtils::readIntAttributeValue(&attributeMap, "abcd", 100));
     56     EXPECT_EQ(20, HeaderReadWriteUtils::readIntAttributeValue(&attributeMap, "abc", 100));
     57 }
     58 
     59 TEST(HeaderReadWriteUtilsTest, TestAttributeMapCodeForPoints) {
     60     DictionaryHeaderStructurePolicy::AttributeMap attributeMap;
     61 
     62     // Returns empty vector if not exists.
     63     EXPECT_TRUE(HeaderReadWriteUtils::readCodePointVectorAttributeValue(&attributeMap, "").empty());
     64     EXPECT_TRUE(HeaderReadWriteUtils::readCodePointVectorAttributeValue(
     65             &attributeMap, "abc").empty());
     66 
     67     HeaderReadWriteUtils::setCodePointVectorAttribute(&attributeMap, "abc", {});
     68     EXPECT_TRUE(HeaderReadWriteUtils::readCodePointVectorAttributeValue(
     69             &attributeMap, "abc").empty());
     70 
     71     const std::vector<int> codePoints = { 0x0, 0x20, 0x1F, 0x100000 };
     72     HeaderReadWriteUtils::setCodePointVectorAttribute(&attributeMap, "abc", codePoints);
     73     EXPECT_EQ(codePoints, HeaderReadWriteUtils::readCodePointVectorAttributeValue(
     74             &attributeMap, "abc"));
     75 }
     76 
     77 }  // namespace
     78 }  // namespace latinime
     79