1c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman/* 2c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman t Copyright (C) 2016 The Android Open Source Project 3c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman * 4c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman * Licensed under the Apache License, Version 2.0 (the "License"); 5c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman * you may not use this file except in compliance with the License. 6c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman * You may obtain a copy of the License at 7c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman * 8c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman * http://www.apache.org/licenses/LICENSE-2.0 9c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman * 10c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman * Unless required by applicable law or agreed to in writing, software 11c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman * distributed under the License is distributed on an "AS IS" BASIS, 12c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman * See the License for the specific language governing permissions and 14c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman * limitations under the License 15c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman */ 16c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman 17c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghumanpackage android.net; 18c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman 19c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghumanimport static org.junit.Assert.*; 20c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman 21c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghumanimport android.os.Bundle; 22c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghumanimport android.os.Parcel; 23c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghumanimport android.support.test.runner.AndroidJUnit4; 24c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman 25c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghumanimport org.junit.Test; 26c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghumanimport org.junit.runner.RunWith; 27c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman 28c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghumanimport java.util.Arrays; 29c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman 30c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman/** Unit tests for {@link ScoredNetwork}. */ 31c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman@RunWith(AndroidJUnit4.class) 32c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghumanpublic class ScoredNetworkTest { 33c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman 34c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman private static final int RSSI_START = -110; 35c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman private static final int TEST_RSSI = -50; 36c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman private static final byte TEST_SCORE = 5; 37c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman private static final RssiCurve CURVE = 38c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman new RssiCurve(RSSI_START, 10, new byte[] {-1, 0, 1, 2, 3, 4, TEST_SCORE, 6, 7}); 39c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman 40c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman private static final byte RANKING_SCORE_OFFSET = 13; 41c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman private static final Bundle ATTRIBUTES; 42c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman static { 43c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman ATTRIBUTES = new Bundle(); 44c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman ATTRIBUTES.putInt( 45c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman ScoredNetwork.ATTRIBUTES_KEY_RANKING_SCORE_OFFSET, RANKING_SCORE_OFFSET); 46c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman } 47c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman 48c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman private static final NetworkKey KEY 49c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman = new NetworkKey(new WifiKey("\"ssid\"", "00:00:00:00:00:00")); 50c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman 51c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman @Test 52c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman public void calculateRankingOffsetShouldThrowUnsupportedOperationException() { 53c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman // No curve or ranking score offset set in curve 54c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman ScoredNetwork scoredNetwork = new ScoredNetwork(KEY, null); 55c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman try { 56c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman scoredNetwork.calculateRankingScore(TEST_RSSI); 57c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman fail("Should have thrown UnsupportedOperationException"); 58c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman } catch (UnsupportedOperationException e) { 59c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman // expected 60c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman } 61c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman } 62c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman 63c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman @Test 64c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman public void calculateRankingOffsetWithRssiCurveShouldReturnExpectedScore() { 65c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman ScoredNetwork scoredNetwork = new ScoredNetwork(KEY, CURVE); 66c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman assertEquals(TEST_SCORE << Byte.SIZE, scoredNetwork.calculateRankingScore(TEST_RSSI)); 67c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman } 68c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman 69c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman @Test 70c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman public void rankingScoresShouldDifferByRankingScoreOffset() { 71c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman ScoredNetwork scoredNetwork1 = new ScoredNetwork(KEY, CURVE); 72c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman ScoredNetwork scoredNetwork2 73c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, ATTRIBUTES); 74c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman int scoreDifference = 75c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman scoredNetwork2.calculateRankingScore(TEST_RSSI) 76c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman - scoredNetwork1.calculateRankingScore(TEST_RSSI); 77c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman assertEquals(RANKING_SCORE_OFFSET, scoreDifference); 78c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman } 79c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman 80c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman @Test 81c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman public void calculateRankingScoreShouldNotResultInIntegerOverflow() { 82c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman Bundle attr = new Bundle(); 83c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman attr.putInt(ScoredNetwork.ATTRIBUTES_KEY_RANKING_SCORE_OFFSET, Integer.MAX_VALUE); 84c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman ScoredNetwork scoredNetwork 85c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, attr); 86c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman assertEquals(Integer.MAX_VALUE, scoredNetwork.calculateRankingScore(TEST_RSSI)); 87c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman } 88c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman 89c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman @Test 90c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman public void calculateRankingScoreShouldNotResultInIntegerUnderflow() { 91c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman Bundle attr = new Bundle(); 92c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman attr.putInt(ScoredNetwork.ATTRIBUTES_KEY_RANKING_SCORE_OFFSET, Integer.MIN_VALUE); 93c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman ScoredNetwork scoredNetwork = 94c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman new ScoredNetwork(KEY, CURVE, false /* meteredHint */, attr); 95c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman assertEquals(Integer.MIN_VALUE, scoredNetwork.calculateRankingScore(RSSI_START)); 96c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman } 97c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman 98c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman @Test 99c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman public void hasRankingScoreShouldReturnFalse() { 100c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman ScoredNetwork network = new ScoredNetwork(KEY, null /* rssiCurve */); 101c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman assertFalse(network.hasRankingScore()); 102c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman } 103c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman 104c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman @Test 105c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman public void hasRankingScoreShouldReturnTrueWhenAttributesHasRankingScoreOffset() { 106c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman ScoredNetwork network = 107c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman new ScoredNetwork(KEY, null /* rssiCurve */, false /* meteredHint */, ATTRIBUTES); 108c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman assertTrue(network.hasRankingScore()); 109c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman } 110c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman 111c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman @Test 112c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman public void hasRankingScoreShouldReturnTrueWhenCurveIsPresent() { 113c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman ScoredNetwork network = 114c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman new ScoredNetwork(KEY, CURVE , false /* meteredHint */); 115c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman assertTrue(network.hasRankingScore()); 116c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman } 117c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman 118c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman @Test 119c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman public void shouldWriteAndReadFromParcelWhenAllFieldsSet() { 120c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman ScoredNetwork network = new ScoredNetwork(KEY, CURVE, true /* meteredHint */, ATTRIBUTES); 121c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman ScoredNetwork newNetwork; 122c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman 123c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman Parcel parcel = null; 124c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman try { 125c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman parcel = Parcel.obtain(); 126c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman network.writeToParcel(parcel, 0 /* flags */); 127c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman parcel.setDataPosition(0); 128c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman newNetwork = ScoredNetwork.CREATOR.createFromParcel(parcel); 129c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman } finally { 130c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman if (parcel != null) { 131c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman parcel.recycle(); 132c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman } 133c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman } 134c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman assertEquals(CURVE.start, newNetwork.rssiCurve.start); 135c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman assertEquals(CURVE.bucketWidth, newNetwork.rssiCurve.bucketWidth); 136c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman assertTrue(Arrays.equals(CURVE.rssiBuckets, newNetwork.rssiCurve.rssiBuckets)); 137c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman assertTrue(newNetwork.meteredHint); 138c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman assertNotNull(newNetwork.attributes); 139c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman assertEquals( 140c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman RANKING_SCORE_OFFSET, 141c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman newNetwork.attributes.getInt(ScoredNetwork.ATTRIBUTES_KEY_RANKING_SCORE_OFFSET)); 142c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman } 143c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman 144c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman @Test 145c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman public void shouldWriteAndReadFromParcelWithoutBundle() { 146c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman ScoredNetwork network = new ScoredNetwork(KEY, CURVE, true /* meteredHint */); 147c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman ScoredNetwork newNetwork; 148c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman 149c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman Parcel parcel = null; 150c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman try { 151c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman parcel = Parcel.obtain(); 152c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman network.writeToParcel(parcel, 0 /* flags */); 153c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman parcel.setDataPosition(0); 154c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman newNetwork = ScoredNetwork.CREATOR.createFromParcel(parcel); 155c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman } finally { 156c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman if (parcel != null) { 157c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman parcel.recycle(); 158c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman } 159c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman } 160c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman assertEquals(CURVE.start, newNetwork.rssiCurve.start); 161c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman assertEquals(CURVE.bucketWidth, newNetwork.rssiCurve.bucketWidth); 162c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman assertTrue(Arrays.equals(CURVE.rssiBuckets, newNetwork.rssiCurve.rssiBuckets)); 163c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman assertTrue(newNetwork.meteredHint); 164c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman assertNull(newNetwork.attributes); 165c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman } 1666c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman 1676c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman @Test 1686c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman public void calculateBadgeShouldReturnNoBadgeWhenNoAttributesBundle() { 1696c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman ScoredNetwork network = new ScoredNetwork(KEY, CURVE); 170699deaf6103d182dbd291ca2b420f30b439753d4Sundeep Ghuman assertEquals(NetworkBadging.BADGING_NONE, network.calculateBadge(TEST_RSSI)); 1716c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman } 1726c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman 1736c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman @Test 1746c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman public void calculateBadgeShouldReturnNoBadgeWhenNoBadgingCurveInBundle() { 1756c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman ScoredNetwork network = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, ATTRIBUTES); 176699deaf6103d182dbd291ca2b420f30b439753d4Sundeep Ghuman assertEquals(NetworkBadging.BADGING_NONE, network.calculateBadge(TEST_RSSI)); 1776c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman } 1786c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman 1796c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman @Test 1806c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman public void calculateBadgeShouldReturn4kBadge() { 1816c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman ScoredNetwork network = 182699deaf6103d182dbd291ca2b420f30b439753d4Sundeep Ghuman buildScoredNetworkWithGivenBadgeForTestRssi(NetworkBadging.BADGING_4K); 183699deaf6103d182dbd291ca2b420f30b439753d4Sundeep Ghuman assertEquals(NetworkBadging.BADGING_4K, network.calculateBadge(TEST_RSSI)); 1846c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman } 1856c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman 1866c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman @Test 1876c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman public void calculateBadgeShouldReturnHdBadge() { 1886c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman ScoredNetwork network = 189699deaf6103d182dbd291ca2b420f30b439753d4Sundeep Ghuman buildScoredNetworkWithGivenBadgeForTestRssi(NetworkBadging.BADGING_HD); 190699deaf6103d182dbd291ca2b420f30b439753d4Sundeep Ghuman assertEquals(NetworkBadging.BADGING_HD, network.calculateBadge(TEST_RSSI)); 1916c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman } 1926c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman 1936c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman @Test 1946c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman public void calculateBadgeShouldReturnSdBadge() { 1956c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman ScoredNetwork network = 196699deaf6103d182dbd291ca2b420f30b439753d4Sundeep Ghuman buildScoredNetworkWithGivenBadgeForTestRssi(NetworkBadging.BADGING_SD); 197699deaf6103d182dbd291ca2b420f30b439753d4Sundeep Ghuman assertEquals(NetworkBadging.BADGING_SD, network.calculateBadge(TEST_RSSI)); 1986c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman } 1996c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman 2006c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman @Test 2016c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman public void calculateBadgeShouldReturnNoBadge() { 2026c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman ScoredNetwork network = 203699deaf6103d182dbd291ca2b420f30b439753d4Sundeep Ghuman buildScoredNetworkWithGivenBadgeForTestRssi(NetworkBadging.BADGING_NONE); 204699deaf6103d182dbd291ca2b420f30b439753d4Sundeep Ghuman assertEquals(NetworkBadging.BADGING_NONE, network.calculateBadge(TEST_RSSI)); 2056c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman } 2066c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman 2076c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman private ScoredNetwork buildScoredNetworkWithGivenBadgeForTestRssi(int badge) { 2086c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman RssiCurve badgingCurve = 2096c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman new RssiCurve(RSSI_START, 10, new byte[] {0, 0, 0, 0, 0, 0, (byte) badge}); 2106c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman Bundle attr = new Bundle(); 2116c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman attr.putParcelable(ScoredNetwork.ATTRIBUTES_KEY_BADGING_CURVE, badgingCurve); 2126c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman return new ScoredNetwork(KEY, CURVE, false /* meteredHint */, attr); 2136c929621536664d6c014b177e7e6983f1fbd67acSundeep Ghuman } 214c63d5b0c74ad7330d9893640cdfce0e03f91c0f1Sundeep Ghuman} 215