140b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi/* 240b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi * Copyright (C) 2014 The Android Open Source Project 340b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi * 440b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi * Licensed under the Apache License, Version 2.0 (the "License"); 540b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi * you may not use this file except in compliance with the License. 640b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi * You may obtain a copy of the License at 740b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi * 840b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi * http://www.apache.org/licenses/LICENSE-2.0 940b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi * 1040b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi * Unless required by applicable law or agreed to in writing, software 1140b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi * distributed under the License is distributed on an "AS IS" BASIS, 1240b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1340b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi * See the License for the specific language governing permissions and 1440b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi * limitations under the License. 1540b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi */ 1640b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi 1740b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi#include "suggest/core/dicnode/dic_node_pool.h" 1840b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi 1940b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi#include <gtest/gtest.h> 2040b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi 2140b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanaginamespace latinime { 2240b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanaginamespace { 2340b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi 2440b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke KuroyanagiTEST(DicNodePoolTest, TestGet) { 2540b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi static const int CAPACITY = 10; 2640b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi DicNodePool dicNodePool(CAPACITY); 2740b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi 2840b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi for (int i = 0; i < CAPACITY; ++i) { 2940b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi EXPECT_NE(nullptr, dicNodePool.getInstance()); 3040b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi } 3140b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi EXPECT_EQ(nullptr, dicNodePool.getInstance()); 3240b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi} 3340b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi 3440b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke KuroyanagiTEST(DicNodePoolTest, TestPlaceBack) { 3540b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi static const int CAPACITY = 1; 3640b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi DicNodePool dicNodePool(CAPACITY); 3740b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi 3840b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi DicNode *const dicNode = dicNodePool.getInstance(); 3940b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi EXPECT_NE(nullptr, dicNode); 4040b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi EXPECT_EQ(nullptr, dicNodePool.getInstance()); 4140b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi dicNodePool.placeBackInstance(dicNode); 4240b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi EXPECT_EQ(dicNode, dicNodePool.getInstance()); 4340b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi} 4440b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi 4540b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke KuroyanagiTEST(DicNodePoolTest, TestReset) { 4640b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi static const int CAPACITY_SMALL = 2; 4740b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi static const int CAPACITY_LARGE = 10; 4840b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi DicNodePool dicNodePool(CAPACITY_SMALL); 4940b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi 5040b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi for (int i = 0; i < CAPACITY_SMALL; ++i) { 5140b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi EXPECT_NE(nullptr, dicNodePool.getInstance()); 5240b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi } 5340b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi EXPECT_EQ(nullptr, dicNodePool.getInstance()); 5440b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi 5540b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi dicNodePool.reset(CAPACITY_LARGE); 5640b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi for (int i = 0; i < CAPACITY_LARGE; ++i) { 5740b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi EXPECT_NE(nullptr, dicNodePool.getInstance()); 5840b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi } 5940b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi EXPECT_EQ(nullptr, dicNodePool.getInstance()); 6040b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi 6140b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi dicNodePool.reset(CAPACITY_SMALL); 6240b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi for (int i = 0; i < CAPACITY_SMALL; ++i) { 6340b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi EXPECT_NE(nullptr, dicNodePool.getInstance()); 6440b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi } 6540b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi EXPECT_EQ(nullptr, dicNodePool.getInstance()); 6640b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi} 6740b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi 6840b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi} // namespace 6940b6d6cbd11f4cdcff2ffbb756e8a4e3fb148ab7Keisuke Kuroyanagi} // namespace latinime 70