1e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu/* 2e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu * Copyright (C) 2016 The Android Open Source Project 3e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu * 4e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu * Licensed under the Apache License, Version 2.0 (the "License"); 5e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu * you may not use this file except in compliance with the License. 6e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu * You may obtain a copy of the License at 7e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu * 8e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu * http://www.apache.org/licenses/LICENSE-2.0 9e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu * 10e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu * Unless required by applicable law or agreed to in writing, software 11e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu * distributed under the License is distributed on an "AS IS" BASIS, 12e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu * See the License for the specific language governing permissions and 14e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu * limitations under the License. 15e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu */ 16e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gupackage android.support.v17.leanback.widget; 17e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 18e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Guimport static org.junit.Assert.assertEquals; 19e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Guimport static org.junit.Assert.assertSame; 20e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 21e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Guimport android.support.test.filters.SmallTest; 22e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Guimport android.support.test.runner.AndroidJUnit4; 23e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 24e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Guimport org.junit.Before; 25e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Guimport org.junit.Test; 26e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Guimport org.junit.runner.RunWith; 27e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 28e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu@RunWith(AndroidJUnit4.class) 29e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu@SmallTest 30e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gupublic class ParallaxIntTest { 31e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 32bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu Parallax<Parallax.IntProperty> mSource; 33e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu int mScreenMax; 34e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 35e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu static void assertFloatEquals(float expected, float actual) { 36e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu org.junit.Assert.assertEquals((double) expected, (double) actual, 0.0001d); 37e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu } 38e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 39e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu @Before 40e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu public void setUp() throws Exception { 41bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu mSource = new Parallax<Parallax.IntProperty>() { 42e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 43e2104f4b5c8e3ad63570306a25e61502dfe4c418Aurimas Liutikas @Override 44bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu public float getMaxValue() { 45e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu return mScreenMax; 46e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu } 47e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 48e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu @Override 49e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu public IntProperty createProperty(String name, int index) { 50e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu return new IntProperty(name, index); 51e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu } 52e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu }; 53e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu } 54e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 55e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu @Test 56e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu public void testVariable() { 57e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu mScreenMax = 1080; 58e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu Parallax.IntProperty var1 = mSource.addProperty("var1"); 59bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu var1.setValue(mSource, 54); 60bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu assertEquals((int) 54, var1.getValue(mSource)); 61e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu assertEquals(var1.getName(), "var1"); 62e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu var1.set(mSource, (int) 2000); 63e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu assertEquals((int) 2000, var1.get(mSource).intValue()); 64e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu } 65e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 66e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu @Test 67e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu public void testFixedKeyValue() { 68e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu mScreenMax = 1080; 69e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu Parallax.IntProperty var1 = mSource.addProperty("var1"); 70e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 71bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu Parallax.IntPropertyMarkerValue keyValue = (Parallax.IntPropertyMarkerValue) 72bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu var1.atAbsolute(1000); 73e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu assertSame(keyValue.getProperty(), var1); 74e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu assertEquals((int) 1000, keyValue.getMarkerValue(mSource)); 75e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu } 76e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 77e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu @Test 78e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu public void testFractionOfKeyValue() { 79e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu mScreenMax = 1080; 80e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu Parallax.IntProperty var1 = mSource.addProperty("var1"); 81e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 82bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu Parallax.IntPropertyMarkerValue keyValue = (Parallax.IntPropertyMarkerValue) 83bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu var1.at(0, 0.5f); 84e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu assertSame(keyValue.getProperty(), var1); 85e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu assertEquals((int) 540, keyValue.getMarkerValue(mSource)); 86e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu } 87e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 88e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu @Test 89e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu public void testFixedKeyValueWithFraction() { 90e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu mScreenMax = 1080; 91e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu Parallax.IntProperty var1 = mSource.addProperty("var1"); 92e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 93bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu Parallax.IntPropertyMarkerValue keyValue = (Parallax.IntPropertyMarkerValue) 94bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu var1.at(-100, 0.5f); 95e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu assertSame(keyValue.getProperty(), var1); 96e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu assertEquals((int) 440, keyValue.getMarkerValue(mSource)); 97e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 98bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu Parallax.IntPropertyMarkerValue keyValue2 = (Parallax.IntPropertyMarkerValue) 99bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu var1.at(100, 0.5f); 100e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu assertSame(keyValue2.getProperty(), var1); 101e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu assertEquals((int) 640, keyValue2.getMarkerValue(mSource)); 102e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu } 103e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 104e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu @Test(expected = IllegalStateException.class) 105e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu public void testVerifyIntPropertys_wrongOrder() { 106e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu Parallax.IntProperty var1 = mSource.addProperty("var1"); 107e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu Parallax.IntProperty var2 = mSource.addProperty("var2"); 108e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 109bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu var1.setValue(mSource, (int) 500); 110bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu var2.setValue(mSource, (int) 499); 111e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 112bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu mSource.verifyIntProperties(); 113e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu } 114e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 115e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu @Test(expected = IllegalStateException.class) 116e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu public void testVerifyIntPropertysWrong_combination() { 117e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu Parallax.IntProperty var1 = mSource.addProperty("var1"); 118e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu Parallax.IntProperty var2 = mSource.addProperty("var2"); 119e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 120bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu var1.setValue(mSource, Parallax.IntProperty.UNKNOWN_BEFORE); 121bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu var2.setValue(mSource, Parallax.IntProperty.UNKNOWN_AFTER); 122e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 123bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu mSource.verifyIntProperties(); 124e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu } 125e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 126e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu @Test 127e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu public void testVerifyIntPropertys_success() { 128e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu Parallax.IntProperty var1 = mSource.addProperty("var1"); 129e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu Parallax.IntProperty var2 = mSource.addProperty("var2"); 130e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 131bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu var1.setValue(mSource, (int) 499); 132bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu var2.setValue(mSource, (int) 500); 133e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 134bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu mSource.verifyIntProperties(); 135e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 136bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu var1.setValue(mSource, Parallax.IntProperty.UNKNOWN_BEFORE); 137bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu var2.setValue(mSource, (int) 500); 138e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 139bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu mSource.verifyIntProperties(); 140e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 141bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu var1.setValue(mSource, (int) 499); 142bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu var2.setValue(mSource, Parallax.IntProperty.UNKNOWN_AFTER); 143e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu 144bf4318c67254bc11307796601b9fb4a8bbfe67b2Dake Gu mSource.verifyIntProperties(); 145e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu } 146e1cde4d4ac42a6e9e16aad2b4df970c7c7d0771cDake Gu} 147