174339de52d7066f22771d914e698da503232c107Peter Qiu/* 274339de52d7066f22771d914e698da503232c107Peter Qiu * Copyright (C) 2016 The Android Open Source Project 374339de52d7066f22771d914e698da503232c107Peter Qiu * 474339de52d7066f22771d914e698da503232c107Peter Qiu * Licensed under the Apache License, Version 2.0 (the "License"); 574339de52d7066f22771d914e698da503232c107Peter Qiu * you may not use this file except in compliance with the License. 674339de52d7066f22771d914e698da503232c107Peter Qiu * You may obtain a copy of the License at 774339de52d7066f22771d914e698da503232c107Peter Qiu * 874339de52d7066f22771d914e698da503232c107Peter Qiu * http://www.apache.org/licenses/LICENSE-2.0 974339de52d7066f22771d914e698da503232c107Peter Qiu * 1074339de52d7066f22771d914e698da503232c107Peter Qiu * Unless required by applicable law or agreed to in writing, software 1174339de52d7066f22771d914e698da503232c107Peter Qiu * distributed under the License is distributed on an "AS IS" BASIS, 1274339de52d7066f22771d914e698da503232c107Peter Qiu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1374339de52d7066f22771d914e698da503232c107Peter Qiu * See the License for the specific language governing permissions and 1474339de52d7066f22771d914e698da503232c107Peter Qiu * limitations under the License. 1574339de52d7066f22771d914e698da503232c107Peter Qiu */ 1674339de52d7066f22771d914e698da503232c107Peter Qiu 1774339de52d7066f22771d914e698da503232c107Peter Qiupackage com.android.server.wifi.hotspot2.anqp; 1874339de52d7066f22771d914e698da503232c107Peter Qiu 1974339de52d7066f22771d914e698da503232c107Peter Qiuimport static org.junit.Assert.assertEquals; 2074339de52d7066f22771d914e698da503232c107Peter Qiu 2174339de52d7066f22771d914e698da503232c107Peter Qiuimport android.test.suitebuilder.annotation.SmallTest; 2274339de52d7066f22771d914e698da503232c107Peter Qiu 2374339de52d7066f22771d914e698da503232c107Peter Qiuimport org.junit.Test; 2474339de52d7066f22771d914e698da503232c107Peter Qiu 2574339de52d7066f22771d914e698da503232c107Peter Qiuimport java.net.ProtocolException; 2674339de52d7066f22771d914e698da503232c107Peter Qiuimport java.nio.ByteBuffer; 2774339de52d7066f22771d914e698da503232c107Peter Qiu 2874339de52d7066f22771d914e698da503232c107Peter Qiu/** 2974339de52d7066f22771d914e698da503232c107Peter Qiu * Unit tests for {@link com.android.server.wifi.hotspot2.anqp.IPAddressTypeAvailabilityElement}. 3074339de52d7066f22771d914e698da503232c107Peter Qiu */ 3174339de52d7066f22771d914e698da503232c107Peter Qiu@SmallTest 3274339de52d7066f22771d914e698da503232c107Peter Qiupublic class IPAddressTypeAvailabilityElementTest { 3374339de52d7066f22771d914e698da503232c107Peter Qiu private static final int TEST_IPV4_AVAILABILITY = 3474339de52d7066f22771d914e698da503232c107Peter Qiu IPAddressTypeAvailabilityElement.IPV4_PUBLIC; 3574339de52d7066f22771d914e698da503232c107Peter Qiu private static final int TEST_IPV6_AVAILABILITY = 3674339de52d7066f22771d914e698da503232c107Peter Qiu IPAddressTypeAvailabilityElement.IPV6_AVAILABLE; 3774339de52d7066f22771d914e698da503232c107Peter Qiu 3874339de52d7066f22771d914e698da503232c107Peter Qiu private static int getIPAvailability() { 3974339de52d7066f22771d914e698da503232c107Peter Qiu return (TEST_IPV4_AVAILABILITY << 2) | TEST_IPV6_AVAILABILITY; 4074339de52d7066f22771d914e698da503232c107Peter Qiu } 4174339de52d7066f22771d914e698da503232c107Peter Qiu 4274339de52d7066f22771d914e698da503232c107Peter Qiu /** 4374339de52d7066f22771d914e698da503232c107Peter Qiu * Verify that ProtocolException will be thrown when parsing an empty buffer. 4474339de52d7066f22771d914e698da503232c107Peter Qiu * 4574339de52d7066f22771d914e698da503232c107Peter Qiu * @throws Exception 4674339de52d7066f22771d914e698da503232c107Peter Qiu */ 4774339de52d7066f22771d914e698da503232c107Peter Qiu @Test(expected = ProtocolException.class) 4874339de52d7066f22771d914e698da503232c107Peter Qiu public void parseBufferEmptyBuffer() throws Exception { 4974339de52d7066f22771d914e698da503232c107Peter Qiu IPAddressTypeAvailabilityElement.parse(ByteBuffer.allocate(0)); 5074339de52d7066f22771d914e698da503232c107Peter Qiu } 5174339de52d7066f22771d914e698da503232c107Peter Qiu 5274339de52d7066f22771d914e698da503232c107Peter Qiu /** 5374339de52d7066f22771d914e698da503232c107Peter Qiu * Verify that ProtocolException will be thrown when parsing an buffer containing excess 5474339de52d7066f22771d914e698da503232c107Peter Qiu * data. 5574339de52d7066f22771d914e698da503232c107Peter Qiu * 5674339de52d7066f22771d914e698da503232c107Peter Qiu * @throws Exception 5774339de52d7066f22771d914e698da503232c107Peter Qiu */ 5874339de52d7066f22771d914e698da503232c107Peter Qiu @Test(expected = ProtocolException.class) 5974339de52d7066f22771d914e698da503232c107Peter Qiu public void parseBufferWithExcessData() throws Exception { 6074339de52d7066f22771d914e698da503232c107Peter Qiu ByteBuffer buffer = ByteBuffer.allocate( 6174339de52d7066f22771d914e698da503232c107Peter Qiu IPAddressTypeAvailabilityElement.EXPECTED_BUFFER_LENGTH + 1); 6274339de52d7066f22771d914e698da503232c107Peter Qiu buffer.put((byte) getIPAvailability()); 6374339de52d7066f22771d914e698da503232c107Peter Qiu buffer.put((byte) 0); // Excess data. 6474339de52d7066f22771d914e698da503232c107Peter Qiu buffer.position(0); 6574339de52d7066f22771d914e698da503232c107Peter Qiu IPAddressTypeAvailabilityElement.parse(ByteBuffer.allocate(0)); 6674339de52d7066f22771d914e698da503232c107Peter Qiu } 6774339de52d7066f22771d914e698da503232c107Peter Qiu 6874339de52d7066f22771d914e698da503232c107Peter Qiu /** 6974339de52d7066f22771d914e698da503232c107Peter Qiu * Verify that the expected IPAddressTypeAvailabilityElement is returned when parsing 7074339de52d7066f22771d914e698da503232c107Peter Qiu * a buffer containing the test data. 7174339de52d7066f22771d914e698da503232c107Peter Qiu * 7274339de52d7066f22771d914e698da503232c107Peter Qiu * @throws Exception 7374339de52d7066f22771d914e698da503232c107Peter Qiu */ 7474339de52d7066f22771d914e698da503232c107Peter Qiu @Test 7574339de52d7066f22771d914e698da503232c107Peter Qiu public void parseBufferWithTestData() throws Exception { 7674339de52d7066f22771d914e698da503232c107Peter Qiu ByteBuffer buffer = ByteBuffer.allocate( 7774339de52d7066f22771d914e698da503232c107Peter Qiu IPAddressTypeAvailabilityElement.EXPECTED_BUFFER_LENGTH); 7874339de52d7066f22771d914e698da503232c107Peter Qiu buffer.put((byte) getIPAvailability()); 7974339de52d7066f22771d914e698da503232c107Peter Qiu buffer.position(0); 8074339de52d7066f22771d914e698da503232c107Peter Qiu 8174339de52d7066f22771d914e698da503232c107Peter Qiu IPAddressTypeAvailabilityElement expectedElement = new IPAddressTypeAvailabilityElement( 8274339de52d7066f22771d914e698da503232c107Peter Qiu TEST_IPV4_AVAILABILITY, TEST_IPV6_AVAILABILITY); 8374339de52d7066f22771d914e698da503232c107Peter Qiu assertEquals(expectedElement, IPAddressTypeAvailabilityElement.parse(buffer)); 8474339de52d7066f22771d914e698da503232c107Peter Qiu } 8574339de52d7066f22771d914e698da503232c107Peter Qiu} 86