InetAddressTest.java revision 775095bf6a763e6a9b4e858011a812425d949af5
1f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes/* 2f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes * Copyright (C) 2011 The Android Open Source Project 3f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes * 4f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes * Licensed under the Apache License, Version 2.0 (the "License"); 5f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes * you may not use this file except in compliance with the License. 6f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes * You may obtain a copy of the License at 7f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes * 8f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 9f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes * 10f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes * Unless required by applicable law or agreed to in writing, software 11f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 12f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes * See the License for the specific language governing permissions and 14f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes * limitations under the License. 15f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes */ 16f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes 17f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughespackage libcore.java.net; 18f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes 19f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughesimport java.net.InetAddress; 20f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes 21f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughespublic class InetAddressTest extends junit.framework.TestCase { 22f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes public void test_parseNumericAddress() throws Exception { 23ede17863e71079d082ff8fb9d1d6f8299bea04b6Elliott Hughes // Regular IPv4. 24ede17863e71079d082ff8fb9d1d6f8299bea04b6Elliott Hughes assertEquals("/1.2.3.4", InetAddress.parseNumericAddress("1.2.3.4").toString()); 25ede17863e71079d082ff8fb9d1d6f8299bea04b6Elliott Hughes // Regular IPv6. 26ede17863e71079d082ff8fb9d1d6f8299bea04b6Elliott Hughes assertEquals("/2001:4860:800d::68", InetAddress.parseNumericAddress("2001:4860:800d::68").toString()); 27ede17863e71079d082ff8fb9d1d6f8299bea04b6Elliott Hughes // Weird IPv4 special cases. 28ede17863e71079d082ff8fb9d1d6f8299bea04b6Elliott Hughes assertEquals("/1.2.0.3", InetAddress.parseNumericAddress("1.2.3").toString()); 29ede17863e71079d082ff8fb9d1d6f8299bea04b6Elliott Hughes assertEquals("/1.0.0.2", InetAddress.parseNumericAddress("1.2").toString()); 30ede17863e71079d082ff8fb9d1d6f8299bea04b6Elliott Hughes assertEquals("/0.0.0.1", InetAddress.parseNumericAddress("1").toString()); 31f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes try { 32f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes // Almost numeric but invalid... 33f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes InetAddress.parseNumericAddress("1."); 34f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes fail(); 35f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes } catch (IllegalArgumentException expected) { 36f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes } 37f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes try { 38f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes // Not even close to numeric... 39f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes InetAddress.parseNumericAddress("www.google.com"); 40f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes fail(); 41f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes } catch (IllegalArgumentException expected) { 42f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes } 4346bed6a47a20d8105f0e099d162d547a7964b4feElliott Hughes // Strange special cases, for compatibility with InetAddress.getByName. 4446bed6a47a20d8105f0e099d162d547a7964b4feElliott Hughes assertTrue(InetAddress.parseNumericAddress(null).isLoopbackAddress()); 4546bed6a47a20d8105f0e099d162d547a7964b4feElliott Hughes assertTrue(InetAddress.parseNumericAddress("").isLoopbackAddress()); 46f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes } 475d3f5562c167120b5ec00e509af0f0ab9308bff5Elliott Hughes 485d3f5562c167120b5ec00e509af0f0ab9308bff5Elliott Hughes public void test_getLoopbackAddress() throws Exception { 495d3f5562c167120b5ec00e509af0f0ab9308bff5Elliott Hughes assertTrue(InetAddress.getLoopbackAddress().isLoopbackAddress()); 505d3f5562c167120b5ec00e509af0f0ab9308bff5Elliott Hughes } 51775095bf6a763e6a9b4e858011a812425d949af5Elliott Hughes 52775095bf6a763e6a9b4e858011a812425d949af5Elliott Hughes public void test_0() throws Exception { 53775095bf6a763e6a9b4e858011a812425d949af5Elliott Hughes // The RI special-cases "0" for legacy IPv4 applications. 54775095bf6a763e6a9b4e858011a812425d949af5Elliott Hughes assertTrue(InetAddress.getByName("0").isAnyLocalAddress()); 55775095bf6a763e6a9b4e858011a812425d949af5Elliott Hughes } 56f39b892d87e85835f021e8ad77ffdd215735604bElliott Hughes} 57