Loading packages/SettingsLib/src/com/android/settingslib/Utils.java +7 −1 Original line number Diff line number Diff line Loading @@ -112,6 +112,12 @@ public class Utils { UserIcons.getDefaultUserIcon(user.id, /* light= */ false)).bake(); } /** Formats a double from 0.0..100.0 with an option to round **/ public static String formatPercentage(double percentage, boolean round) { final int localPercentage = round ? Math.round((float) percentage) : (int) percentage; return formatPercentage(localPercentage); } /** Formats the ratio of amount/total as a percentage. */ public static String formatPercentage(long amount, long total) { return formatPercentage(((double) amount) / total); Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java 0 → 100644 +57 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settingslib; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.annotation.Config; import static com.google.common.truth.Truth.assertThat; @RunWith(SettingLibRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class UtilsTest { private static final double[] TEST_PERCENTAGES = {0, 0.4, 0.5, 0.6, 49, 49.3, 49.8, 50, 100}; private static final String PERCENTAGE_0 = "0%"; private static final String PERCENTAGE_1 = "1%"; private static final String PERCENTAGE_49 = "49%"; private static final String PERCENTAGE_50 = "50%"; private static final String PERCENTAGE_100 = "100%"; @Test public void testFormatPercentage_RoundTrue_RoundUpIfPossible() { final String[] expectedPercentages = {PERCENTAGE_0, PERCENTAGE_0, PERCENTAGE_1, PERCENTAGE_1, PERCENTAGE_49, PERCENTAGE_49, PERCENTAGE_50, PERCENTAGE_50, PERCENTAGE_100}; for (int i = 0, size = TEST_PERCENTAGES.length; i < size; i++) { final String percentage = Utils.formatPercentage(TEST_PERCENTAGES[i], true); assertThat(percentage).isEqualTo(expectedPercentages[i]); } } @Test public void testFormatPercentage_RoundFalse_NoRound() { final String[] expectedPercentages = {PERCENTAGE_0, PERCENTAGE_0, PERCENTAGE_0, PERCENTAGE_0, PERCENTAGE_49, PERCENTAGE_49, PERCENTAGE_49, PERCENTAGE_50, PERCENTAGE_100}; for (int i = 0, size = TEST_PERCENTAGES.length; i < size; i++) { final String percentage = Utils.formatPercentage(TEST_PERCENTAGES[i], false); assertThat(percentage).isEqualTo(expectedPercentages[i]); } } } Loading
packages/SettingsLib/src/com/android/settingslib/Utils.java +7 −1 Original line number Diff line number Diff line Loading @@ -112,6 +112,12 @@ public class Utils { UserIcons.getDefaultUserIcon(user.id, /* light= */ false)).bake(); } /** Formats a double from 0.0..100.0 with an option to round **/ public static String formatPercentage(double percentage, boolean round) { final int localPercentage = round ? Math.round((float) percentage) : (int) percentage; return formatPercentage(localPercentage); } /** Formats the ratio of amount/total as a percentage. */ public static String formatPercentage(long amount, long total) { return formatPercentage(((double) amount) / total); Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java 0 → 100644 +57 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settingslib; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.annotation.Config; import static com.google.common.truth.Truth.assertThat; @RunWith(SettingLibRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class UtilsTest { private static final double[] TEST_PERCENTAGES = {0, 0.4, 0.5, 0.6, 49, 49.3, 49.8, 50, 100}; private static final String PERCENTAGE_0 = "0%"; private static final String PERCENTAGE_1 = "1%"; private static final String PERCENTAGE_49 = "49%"; private static final String PERCENTAGE_50 = "50%"; private static final String PERCENTAGE_100 = "100%"; @Test public void testFormatPercentage_RoundTrue_RoundUpIfPossible() { final String[] expectedPercentages = {PERCENTAGE_0, PERCENTAGE_0, PERCENTAGE_1, PERCENTAGE_1, PERCENTAGE_49, PERCENTAGE_49, PERCENTAGE_50, PERCENTAGE_50, PERCENTAGE_100}; for (int i = 0, size = TEST_PERCENTAGES.length; i < size; i++) { final String percentage = Utils.formatPercentage(TEST_PERCENTAGES[i], true); assertThat(percentage).isEqualTo(expectedPercentages[i]); } } @Test public void testFormatPercentage_RoundFalse_NoRound() { final String[] expectedPercentages = {PERCENTAGE_0, PERCENTAGE_0, PERCENTAGE_0, PERCENTAGE_0, PERCENTAGE_49, PERCENTAGE_49, PERCENTAGE_49, PERCENTAGE_50, PERCENTAGE_100}; for (int i = 0, size = TEST_PERCENTAGES.length; i < size; i++) { final String percentage = Utils.formatPercentage(TEST_PERCENTAGES[i], false); assertThat(percentage).isEqualTo(expectedPercentages[i]); } } }