1607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok/* 2607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok * Copyright (C) 2012 The Android Open Source Project 3607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok * 4607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok * Licensed under the Apache License, Version 2.0 (the "License"); 5607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok * you may not use this file except in compliance with the License. 6607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok * You may obtain a copy of the License at 7607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok * 8607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok * http://www.apache.org/licenses/LICENSE-2.0 9607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok * 10607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok * Unless required by applicable law or agreed to in writing, software 11607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok * distributed under the License is distributed on an "AS IS" BASIS, 12607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok * See the License for the specific language governing permissions and 14607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok * limitations under the License. 15607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok */ 16607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok 17607a9244861ee22c25aaea6ffdfa19fccf497b0bsatokpackage com.android.inputmethod.latin; 18607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok 19607a9244861ee22c25aaea6ffdfa19fccf497b0bsatokimport android.test.AndroidTestCase; 20b4598f7d05d6afd01ddc7ea0bed71dda837d1debTadashi G. Takaokaimport android.test.suitebuilder.annotation.SmallTest; 21607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok 22b4598f7d05d6afd01ddc7ea0bed71dda837d1debTadashi G. Takaoka@SmallTest 23607a9244861ee22c25aaea6ffdfa19fccf497b0bsatokpublic class ForgettingCurveTests extends AndroidTestCase { 24607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok public void testFcToFreq() { 25607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok for (int i = 0; i < Byte.MAX_VALUE; ++i) { 26607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok final byte fc = (byte)i; 27607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok final int e = UserHistoryForgettingCurveUtils.fcToElapsedTime(fc); 28607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok final int c = UserHistoryForgettingCurveUtils.fcToCount(fc); 29607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok final int l = UserHistoryForgettingCurveUtils.fcToLevel(fc); 30607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok final byte fc2 = UserHistoryForgettingCurveUtils.calcFc(e, c, l); 31607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok assertEquals(fc, fc2); 32607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok } 33607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok byte fc = 0; 34607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok int l; 35607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok for (int i = 0; i < 4; ++i) { 36607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok for (int j = 0; j < (UserHistoryForgettingCurveUtils.COUNT_MAX + 1); ++j) { 37607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok fc = UserHistoryForgettingCurveUtils.pushCount(fc, true); 38607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok } 39607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok l = UserHistoryForgettingCurveUtils.fcToLevel(fc); 40607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok assertEquals(l, Math.max(1, Math.min(i + 1, 3))); 41607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok } 42607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok fc = 0; 43607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok for (int i = 0; i < 4; ++i) { 44607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok for (int j = 0; j < (UserHistoryForgettingCurveUtils.COUNT_MAX + 1); ++j) { 45607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok fc = UserHistoryForgettingCurveUtils.pushCount(fc, false); 46607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok } 47607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok l = UserHistoryForgettingCurveUtils.fcToLevel(fc); 48607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok assertEquals(l, Math.min(i + 1, 3)); 49607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok } 50607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok for (int i = 0; i < 4; ++i) { 51607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok for (int j = 0; j < (UserHistoryForgettingCurveUtils.ELAPSED_TIME_MAX + 1); ++j) { 52607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok fc = UserHistoryForgettingCurveUtils.pushElapsedTime(fc); 53607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok } 54607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok l = UserHistoryForgettingCurveUtils.fcToLevel(fc); 55607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok assertEquals(l, Math.max(0, 2 - i)); 56607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok } 57607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok } 58607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok} 59