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; 20607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok 21607a9244861ee22c25aaea6ffdfa19fccf497b0bsatokpublic class ForgettingCurveTests extends AndroidTestCase { 22607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok public void testFcToFreq() { 23607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok for (int i = 0; i < Byte.MAX_VALUE; ++i) { 24607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok final byte fc = (byte)i; 25607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok final int e = UserHistoryForgettingCurveUtils.fcToElapsedTime(fc); 26607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok final int c = UserHistoryForgettingCurveUtils.fcToCount(fc); 27607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok final int l = UserHistoryForgettingCurveUtils.fcToLevel(fc); 28607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok final byte fc2 = UserHistoryForgettingCurveUtils.calcFc(e, c, l); 29607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok assertEquals(fc, fc2); 30607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok } 31607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok byte fc = 0; 32607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok int l; 33607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok for (int i = 0; i < 4; ++i) { 34607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok for (int j = 0; j < (UserHistoryForgettingCurveUtils.COUNT_MAX + 1); ++j) { 35607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok fc = UserHistoryForgettingCurveUtils.pushCount(fc, true); 36607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok } 37607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok l = UserHistoryForgettingCurveUtils.fcToLevel(fc); 38607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok assertEquals(l, Math.max(1, Math.min(i + 1, 3))); 39607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok } 40607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok fc = 0; 41607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok for (int i = 0; i < 4; ++i) { 42607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok for (int j = 0; j < (UserHistoryForgettingCurveUtils.COUNT_MAX + 1); ++j) { 43607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok fc = UserHistoryForgettingCurveUtils.pushCount(fc, false); 44607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok } 45607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok l = UserHistoryForgettingCurveUtils.fcToLevel(fc); 46607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok assertEquals(l, Math.min(i + 1, 3)); 47607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok } 48607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok for (int i = 0; i < 4; ++i) { 49607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok for (int j = 0; j < (UserHistoryForgettingCurveUtils.ELAPSED_TIME_MAX + 1); ++j) { 50607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok fc = UserHistoryForgettingCurveUtils.pushElapsedTime(fc); 51607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok } 52607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok l = UserHistoryForgettingCurveUtils.fcToLevel(fc); 53607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok assertEquals(l, Math.max(0, 2 - i)); 54607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok } 55607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok } 56607a9244861ee22c25aaea6ffdfa19fccf497b0bsatok} 57