001: // -*- Java -*-
002: //
003: // Copyright (c) 2005, Matthew J. Rutherford <rutherfo@cs.colorado.edu>
004: // Copyright (c) 2005, University of Colorado at Boulder
005: // All rights reserved.
006: //
007: // Redistribution and use in source and binary forms, with or without
008: // modification, are permitted provided that the following conditions are
009: // met:
010: //
011: // * Redistributions of source code must retain the above copyright
012: // notice, this list of conditions and the following disclaimer.
013: //
014: // * Redistributions in binary form must reproduce the above copyright
015: // notice, this list of conditions and the following disclaimer in the
016: // documentation and/or other materials provided with the distribution.
017: //
018: // * Neither the name of the University of Colorado at Boulder nor the
019: // names of its contributors may be used to endorse or promote
020: // products derived from this software without specific prior written
021: // permission.
022: //
023: // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
024: // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
025: // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
026: // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
027: // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
028: // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
029: // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
030: // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
031: // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
032: // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
033: // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
034: //
035: package org.xbill.DNS;
036:
037: import java.net.InetAddress;
038: import java.net.UnknownHostException;
039: import junit.framework.TestCase;
040:
041: public class ReverseMapTest extends TestCase {
042: public void test_fromAddress_ipv4() throws UnknownHostException,
043: TextParseException {
044: Name exp = Name.fromString("1.0.168.192.in-addr.arpa.");
045: String addr = "192.168.0.1";
046: assertEquals(exp, ReverseMap.fromAddress(addr));
047:
048: assertEquals(exp, ReverseMap.fromAddress(addr, Address.IPv4));
049: assertEquals(exp, ReverseMap.fromAddress(InetAddress
050: .getByName(addr)));
051: assertEquals(exp, ReverseMap.fromAddress(new byte[] {
052: (byte) 192, (byte) 168, (byte) 0, (byte) 1 }));
053: assertEquals(exp, ReverseMap.fromAddress(new int[] { 192, 168,
054: 0, 1 }));
055: }
056:
057: public void test_fromAddress_ipv6() throws UnknownHostException,
058: TextParseException {
059: Name exp = Name
060: .fromString("4.3.3.7.0.7.3.0.E.2.A.8.9.1.3.1.3.D.8.0.3.A.5.8.8.B.D.0.1.0.0.2.ip6.arpa.");
061: String addr = "2001:0db8:85a3:08d3:1319:8a2e:0370:7334";
062: byte[] dat = new byte[] { (byte) 32, (byte) 1, (byte) 13,
063: (byte) 184, (byte) 133, (byte) 163, (byte) 8,
064: (byte) 211, (byte) 19, (byte) 25, (byte) 138,
065: (byte) 46, (byte) 3, (byte) 112, (byte) 115, (byte) 52 };
066: int[] idat = new int[] { 32, 1, 13, 184, 133, 163, 8, 211, 19,
067: 25, 138, 46, 3, 112, 115, 52 };
068:
069: assertEquals(exp, ReverseMap.fromAddress(addr, Address.IPv6));
070: assertEquals(exp, ReverseMap.fromAddress(InetAddress
071: .getByName(addr)));
072: assertEquals(exp, ReverseMap.fromAddress(dat));
073: assertEquals(exp, ReverseMap.fromAddress(idat));
074: }
075:
076: public void test_fromAddress_invalid() {
077: try {
078: ReverseMap.fromAddress("A.B.C.D", Address.IPv4);
079: fail("UnknownHostException not thrown");
080: } catch (UnknownHostException e) {
081: }
082: try {
083: ReverseMap.fromAddress(new byte[0]);
084: fail("IllegalArgumentException not thrown");
085: } catch (IllegalArgumentException e) {
086: }
087: try {
088: ReverseMap.fromAddress(new byte[3]);
089: fail("IllegalArgumentException not thrown");
090: } catch (IllegalArgumentException e) {
091: }
092: try {
093: ReverseMap.fromAddress(new byte[5]);
094: fail("IllegalArgumentException not thrown");
095: } catch (IllegalArgumentException e) {
096: }
097: try {
098: ReverseMap.fromAddress(new byte[15]);
099: fail("IllegalArgumentException not thrown");
100: } catch (IllegalArgumentException e) {
101: }
102: try {
103: ReverseMap.fromAddress(new byte[17]);
104: fail("IllegalArgumentException not thrown");
105: } catch (IllegalArgumentException e) {
106: }
107:
108: try {
109: int[] dat = new int[] { 0, 1, 2, 256 };
110: ReverseMap.fromAddress(dat);
111: fail("IllegalArgumentException not thrown");
112: } catch (IllegalArgumentException e) {
113: }
114: }
115: }
|