1bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey/* 2bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey * Copyright (C) 2016 The Android Open Source Project 3bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey * 4bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey * Licensed under the Apache License, Version 2.0 (the "License"); 5bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey * you may not use this file except in compliance with the License. 6bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey * You may obtain a copy of the License at 7bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey * 8bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey * http://www.apache.org/licenses/LICENSE-2.0 9bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey * 10bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey * Unless required by applicable law or agreed to in writing, software 11bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey * distributed under the License is distributed on an "AS IS" BASIS, 12bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey * See the License for the specific language governing permissions and 14bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey * limitations under the License. 15bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey */ 16bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 17bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkeypackage com.android.internal.util; 18bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 19bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkeyimport junit.framework.TestCase; 20bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 21bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkeypublic class ProgressReporterTest extends TestCase { 22bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey private ProgressReporter r; 23bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 24bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey @Override 25bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey protected void setUp() throws Exception { 26bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey super.setUp(); 2784a4c971c484f05f2a2494d6353f36f4d954a5e0Jeff Sharkey r = new ProgressReporter(0); 28bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey } 29bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 30bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey private void assertProgress(int expected) { 31bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertEquals(expected, r.getProgress()); 32bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey } 33bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 34bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey private void assertRange(int start, int len) { 35bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey final int[] range = r.getSegmentRange(); 36bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertEquals("start", start, range[0]); 37bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertEquals("len", len, range[1]); 38bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey } 39bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 40bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey public void testBasic() throws Exception { 41bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertProgress(0); 42bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 43bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey r.setProgress(20); 44bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertProgress(20); 45bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 46bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey r.setProgress(-20); 47bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertProgress(0); 48bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 49bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey r.setProgress(1024); 50bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertProgress(100); 51bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey } 52bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 53bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey public void testSegment() throws Exception { 54bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey r.setProgress(20); 55bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertProgress(20); 56bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 57bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey final int[] lastRange = r.startSegment(40); 58bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey { 59bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertProgress(20); 60bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 61bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey r.setProgress(50); 62bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertProgress(40); 63bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey } 64bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey r.endSegment(lastRange); 65bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertProgress(60); 66bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 67bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey r.setProgress(80); 68bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertProgress(80); 69bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey } 70bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 71bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey public void testSegmentOvershoot() throws Exception { 72bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey r.setProgress(20); 73bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertProgress(20); 74bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 75bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey final int[] lastRange = r.startSegment(40); 76bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey { 77bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey r.setProgress(-100, 2); 78bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertProgress(20); 79bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 80bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey r.setProgress(1, 2); 81bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertProgress(40); 82bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 83bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey r.setProgress(100, 2); 84bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertProgress(60); 85bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey } 86bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey r.endSegment(lastRange); 87bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertProgress(60); 88bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey } 89bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 90bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey public void testSegmentNested() throws Exception { 91bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey r.setProgress(20); 92bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertProgress(20); 93bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertRange(0, 100); 94bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 95bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey final int[] lastRange = r.startSegment(40); 96bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertRange(20, 40); 97bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey { 98bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey r.setProgress(50); 99bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertProgress(40); 100bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 101bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey final int[] lastRange2 = r.startSegment(25); 102bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertRange(40, 10); 103bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey { 104bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey r.setProgress(0); 105bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertProgress(40); 106bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 107bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey r.setProgress(50); 108bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertProgress(45); 109bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey 110bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey r.setProgress(100); 111bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertProgress(50); 112bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey } 113bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey r.endSegment(lastRange2); 114bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertProgress(50); 115bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey } 116bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey r.endSegment(lastRange); 117bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey assertProgress(60); 118bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey } 119bd91e2f3f6aca512a02be645b2515b5e3331e177Jeff Sharkey} 120