probability_entry_test.cpp revision 08894842662eff666a713a7f4deb79204a322f8c
108894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi/* 208894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi * Copyright (C) 2014 The Android Open Source Project 308894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi * 408894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi * Licensed under the Apache License, Version 2.0 (the "License"); 508894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi * you may not use this file except in compliance with the License. 608894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi * You may obtain a copy of the License at 708894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi * 808894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi * http://www.apache.org/licenses/LICENSE-2.0 908894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi * 1008894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi * Unless required by applicable law or agreed to in writing, software 1108894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi * distributed under the License is distributed on an "AS IS" BASIS, 1208894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1308894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi * See the License for the specific language governing permissions and 1408894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi * limitations under the License. 1508894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi */ 1608894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi 1708894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi#include "suggest/policyimpl/dictionary/structure/v4/content/probability_entry.h" 1808894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi 1908894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi#include <gtest/gtest.h> 2008894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi 2108894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi#include "defines.h" 2208894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi 2308894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanaginamespace latinime { 2408894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanaginamespace { 2508894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi 2608894842662eff666a713a7f4deb79204a322f8cKeisuke KuroyanagiTEST(ProbabilityEntryTest, TestEncodeDecode) { 2708894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi const int flag = 0xFF; 2808894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi const int probability = 10; 2908894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi 3008894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi const ProbabilityEntry entry(flag, probability); 3108894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi const uint64_t encodedEntry = entry.encode(false /* hasHistoricalInfo */); 3208894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi const ProbabilityEntry decodedEntry = 3308894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi ProbabilityEntry::decode(encodedEntry, false /* hasHistoricalInfo */); 3408894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi EXPECT_EQ(0xFF0Aull, encodedEntry); 3508894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi EXPECT_EQ(flag, decodedEntry.getFlags()); 3608894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi EXPECT_EQ(probability, decodedEntry.getProbability()); 3708894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi} 3808894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi 3908894842662eff666a713a7f4deb79204a322f8cKeisuke KuroyanagiTEST(ProbabilityEntryTest, TestEncodeDecodeWithHistoricalInfo) { 4008894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi const int flag = 0xF0; 4108894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi const int timestamp = 0x3FFFFFFF; 4208894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi const int level = 3; 4308894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi const int count = 10; 4408894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi 4508894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi const HistoricalInfo historicalInfo(timestamp, level, count); 4608894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi const ProbabilityEntry entry(flag, NOT_A_PROBABILITY, &historicalInfo); 4708894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi 4808894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi const uint64_t encodedEntry = entry.encode(true /* hasHistoricalInfo */); 4908894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi EXPECT_EQ(0xF03FFFFFFF030Aull, encodedEntry); 5008894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi const ProbabilityEntry decodedEntry = 5108894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi ProbabilityEntry::decode(encodedEntry, true /* hasHistoricalInfo */); 5208894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi 5308894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi EXPECT_EQ(flag, decodedEntry.getFlags()); 5408894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi EXPECT_EQ(timestamp, decodedEntry.getHistoricalInfo()->getTimeStamp()); 5508894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi EXPECT_EQ(level, decodedEntry.getHistoricalInfo()->getLevel()); 5608894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi EXPECT_EQ(count, decodedEntry.getHistoricalInfo()->getCount()); 5708894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi} 5808894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi 5908894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi} // namespace 6008894842662eff666a713a7f4deb79204a322f8cKeisuke Kuroyanagi} // namespace latinime 61