1/* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.server.wifi.util; 18 19import static org.junit.Assert.assertArrayEquals; 20import static org.junit.Assert.assertEquals; 21import static org.junit.Assert.assertNotNull; 22 23import android.net.wifi.ScanResult; 24import android.net.wifi.ScanResult.InformationElement; 25import android.net.wifi.WifiSsid; 26import android.test.suitebuilder.annotation.SmallTest; 27 28import com.android.server.wifi.ScanDetail; 29 30import org.junit.Test; 31 32import java.nio.charset.StandardCharsets; 33import java.util.Arrays; 34 35/** 36 * Unit tests for {@link com.android.server.wifi.util.ScanDetailUtil}. 37 */ 38@SmallTest 39public class ScanDetailUtilTest { 40 41 @Test 42 public void convertScanResult() { 43 final String ssid = "SOME SsId"; 44 45 ScanResult input = new ScanResult(WifiSsid.createFromAsciiEncoded(ssid), ssid, 46 "ab:cd:01:ef:45:89", 1245, 0, "", -78, 2450, 1025, 22, 33, 20, 0, 0, true); 47 48 input.informationElements = new InformationElement[] { 49 createIE(InformationElement.EID_SSID, ssid.getBytes(StandardCharsets.UTF_8)) 50 }; 51 52 ScanDetail output = ScanDetailUtil.toScanDetail(input); 53 54 validateScanDetail(input, output); 55 } 56 57 @Test 58 public void convertScanResultWithAnqpLines() { 59 final String ssid = "SOME SsId"; 60 61 ScanResult input = new ScanResult(WifiSsid.createFromAsciiEncoded(ssid), ssid, 62 "ab:cd:01:ef:45:89", 1245, 0, "some caps", -78, 2450, 1025, 22, 33, 20, 0, 0, true); 63 64 input.informationElements = new InformationElement[] { 65 createIE(InformationElement.EID_SSID, ssid.getBytes(StandardCharsets.UTF_8)) 66 }; 67 input.anqpLines = Arrays.asList("LINE 1", "line 2", "Line 3"); 68 69 ScanDetail output = ScanDetailUtil.toScanDetail(input); 70 71 validateScanDetail(input, output); 72 } 73 74 @Test 75 public void convertScanResultWithoutWifiSsid() { 76 final String ssid = "Another SSid"; 77 ScanResult input = new ScanResult(ssid, "ab:cd:01:ef:45:89", 1245, 0, "other caps", 78 -78, 2450, 1025, 22, 33, 20, 0, 0, true); 79 input.informationElements = new InformationElement[] { 80 createIE(InformationElement.EID_SSID, ssid.getBytes(StandardCharsets.UTF_8)) 81 }; 82 83 ScanDetail output = ScanDetailUtil.toScanDetail(input); 84 85 validateScanDetail(input, output); 86 } 87 88 private static InformationElement createIE(int id, byte[] bytes) { 89 InformationElement ie = new InformationElement(); 90 ie.id = id; 91 ie.bytes = bytes; 92 return ie; 93 } 94 95 private static void validateScanDetail(ScanResult input, ScanDetail output) { 96 assertNotNull("NetworkDetail was null", output.getNetworkDetail()); 97 assertNotNull("ScanResult was null", output.getScanResult()); 98 assertEquals("NetworkDetail SSID", input.SSID, 99 output.getNetworkDetail().getSSID()); 100 assertEquals("ScanResult SSID", input.SSID, 101 output.getScanResult().SSID); 102 assertEquals("ScanResult wifiSsid", input.wifiSsid, 103 output.getScanResult().wifiSsid); 104 assertEquals("getSSID", input.SSID, output.getSSID()); 105 assertEquals("NetworkDetail BSSID", input.BSSID, 106 output.getNetworkDetail().getBSSIDString()); 107 assertEquals("getBSSIDString", input.BSSID, output.getBSSIDString()); 108 assertEquals("ScanResult frequency", input.frequency, 109 output.getScanResult().frequency); 110 assertEquals("ScanResult level", input.level, 111 output.getScanResult().level); 112 assertEquals("ScanResult capabilities", input.capabilities, 113 output.getScanResult().capabilities); 114 assertEquals("ScanResult timestamp", input.timestamp, 115 output.getScanResult().timestamp); 116 assertArrayEquals("ScanResult information elements", input.informationElements, 117 output.getScanResult().informationElements); 118 assertEquals("ScanResult anqp lines", input.anqpLines, 119 output.getScanResult().anqpLines); 120 } 121 122} 123