?? nametest.java
字號:
// -*- Java -*-//// Copyright (c) 2005, Matthew J. Rutherford <rutherfo@cs.colorado.edu>// Copyright (c) 2005, University of Colorado at Boulder// All rights reserved.// // Redistribution and use in source and binary forms, with or without// modification, are permitted provided that the following conditions are// met:// // * Redistributions of source code must retain the above copyright// notice, this list of conditions and the following disclaimer.// // * Redistributions in binary form must reproduce the above copyright// notice, this list of conditions and the following disclaimer in the// documentation and/or other materials provided with the distribution.// // * Neither the name of the University of Colorado at Boulder nor the// names of its contributors may be used to endorse or promote// products derived from this software without specific prior written// permission.// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.//package org.xbill.DNS;import java.io.IOException;import java.util.Arrays;import junit.framework.Test;import junit.framework.TestCase;import junit.framework.TestSuite;import org.xbill.DNS.Name;import org.xbill.DNS.TextParseException;public class NameTest extends TestCase{ public static class Test_String_init extends TestCase { private final String m_abs = "WWW.DnsJava.org."; private Name m_abs_origin; private final String m_rel = "WWW.DnsJava"; private Name m_rel_origin; protected void setUp() throws TextParseException { m_abs_origin = Name.fromString("Orig."); m_rel_origin = Name.fromString("Orig"); } public void test_ctor_empty() { try { new Name(""); fail("TextParseException not thrown"); } catch(TextParseException e ){} } public void test_ctor_at_null_origin() throws TextParseException { Name n = new Name("@"); assertFalse(n.isAbsolute()); assertFalse(n.isWild()); assertEquals(0, n.labels()); assertEquals(0, n.length()); } public void test_ctor_at_abs_origin() throws TextParseException { Name n = new Name("@", m_abs_origin); assertEquals(m_abs_origin, n); } public void test_ctor_at_rel_origin() throws TextParseException { Name n = new Name("@", m_rel_origin); assertEquals(m_rel_origin, n); } public void test_ctor_dot() throws TextParseException { Name n = new Name("."); assertEquals(Name.root, n); assertNotSame(Name.root, n); assertEquals(1, n.labels()); assertEquals(1, n.length()); } public void test_ctor_wildcard() throws TextParseException { Name n = new Name("*"); assertFalse(n.isAbsolute()); assertTrue(n.isWild()); assertEquals(1, n.labels()); assertEquals(2, n.length()); assertTrue(Arrays.equals(new byte[] { 1, '*' }, n.getLabel(0))); assertEquals("*", n.getLabelString(0)); } public void test_ctor_abs() throws TextParseException { Name n = new Name(m_abs); assertTrue(n.isAbsolute()); assertFalse(n.isWild()); assertEquals(4, n.labels()); assertEquals(17, n.length()); assertTrue(Arrays.equals(new byte[] { 3, 'W', 'W', 'W' }, n.getLabel(0))); assertEquals("WWW", n.getLabelString(0)); assertTrue(Arrays.equals(new byte[] { 7, 'D', 'n', 's', 'J', 'a', 'v', 'a' }, n.getLabel(1))); assertEquals("DnsJava", n.getLabelString(1)); assertTrue(Arrays.equals(new byte[] { 3, 'o', 'r', 'g' }, n.getLabel(2))); assertEquals("org", n.getLabelString(2)); assertTrue(Arrays.equals(new byte[] { 0 }, n.getLabel(3))); assertEquals("", n.getLabelString(3)); } public void test_ctor_rel() throws TextParseException { Name n = new Name(m_rel); assertFalse(n.isAbsolute()); assertFalse(n.isWild()); assertEquals(2, n.labels()); assertEquals(12, n.length()); assertTrue(Arrays.equals(new byte[] { 3, 'W', 'W', 'W' }, n.getLabel(0))); assertEquals("WWW", n.getLabelString(0)); assertTrue(Arrays.equals(new byte[] { 7, 'D', 'n', 's', 'J', 'a', 'v', 'a' }, n.getLabel(1))); assertEquals("DnsJava", n.getLabelString(1)); } public void test_ctor_7label() throws TextParseException { // 7 is the number of label positions that are cached Name n = new Name("a.b.c.d.e.f."); assertTrue(n.isAbsolute()); assertFalse(n.isWild()); assertEquals(7, n.labels()); assertEquals(13, n.length()); assertTrue(Arrays.equals(new byte[] { 1, 'a' }, n.getLabel(0))); assertEquals("a", n.getLabelString(0)); assertTrue(Arrays.equals(new byte[] { 1, 'b' }, n.getLabel(1))); assertEquals("b", n.getLabelString(1)); assertTrue(Arrays.equals(new byte[] { 1, 'c' }, n.getLabel(2))); assertEquals("c", n.getLabelString(2)); assertTrue(Arrays.equals(new byte[] { 1, 'd' }, n.getLabel(3))); assertEquals("d", n.getLabelString(3)); assertTrue(Arrays.equals(new byte[] { 1, 'e' }, n.getLabel(4))); assertEquals("e", n.getLabelString(4)); assertTrue(Arrays.equals(new byte[] { 1, 'f' }, n.getLabel(5))); assertEquals("f", n.getLabelString(5)); assertTrue(Arrays.equals(new byte[] { 0 }, n.getLabel(6))); assertEquals("", n.getLabelString(6)); } public void test_ctor_8label() throws TextParseException { // 7 is the number of label positions that are cached Name n = new Name("a.b.c.d.e.f.g."); assertTrue(n.isAbsolute()); assertFalse(n.isWild()); assertEquals(8, n.labels()); assertEquals(15, n.length()); assertTrue(Arrays.equals(new byte[] { 1, 'a' }, n.getLabel(0))); assertEquals("a", n.getLabelString(0)); assertTrue(Arrays.equals(new byte[] { 1, 'b' }, n.getLabel(1))); assertEquals("b", n.getLabelString(1)); assertTrue(Arrays.equals(new byte[] { 1, 'c' }, n.getLabel(2))); assertEquals("c", n.getLabelString(2)); assertTrue(Arrays.equals(new byte[] { 1, 'd' }, n.getLabel(3))); assertEquals("d", n.getLabelString(3)); assertTrue(Arrays.equals(new byte[] { 1, 'e' }, n.getLabel(4))); assertEquals("e", n.getLabelString(4)); assertTrue(Arrays.equals(new byte[] { 1, 'f' }, n.getLabel(5))); assertEquals("f", n.getLabelString(5)); assertTrue(Arrays.equals(new byte[] { 1, 'g' }, n.getLabel(6))); assertEquals("g", n.getLabelString(6)); assertTrue(Arrays.equals(new byte[] { 0 }, n.getLabel(7))); assertEquals("", n.getLabelString(7)); } public void test_ctor_abs_abs_origin() throws TextParseException { Name n = new Name(m_abs, m_abs_origin); assertTrue(n.isAbsolute()); assertFalse(n.isWild()); assertEquals(4, n.labels()); assertEquals(17, n.length()); assertTrue(Arrays.equals(new byte[] { 3, 'W', 'W', 'W' }, n.getLabel(0))); assertEquals("WWW", n.getLabelString(0)); assertTrue(Arrays.equals(new byte[] { 7, 'D', 'n', 's', 'J', 'a', 'v', 'a' }, n.getLabel(1))); assertEquals("DnsJava", n.getLabelString(1)); assertTrue(Arrays.equals(new byte[] { 3, 'o', 'r', 'g' }, n.getLabel(2))); assertEquals("org", n.getLabelString(2)); assertTrue(Arrays.equals(new byte[] { 0 }, n.getLabel(3))); assertEquals("", n.getLabelString(3)); } public void test_ctor_abs_rel_origin() throws TextParseException { Name n = new Name(m_abs, m_rel_origin); assertTrue(n.isAbsolute()); assertFalse(n.isWild()); assertEquals(4, n.labels()); assertEquals(17, n.length()); assertTrue(Arrays.equals(new byte[] { 3, 'W', 'W', 'W' }, n.getLabel(0))); assertEquals("WWW", n.getLabelString(0)); assertTrue(Arrays.equals(new byte[] { 7, 'D', 'n', 's', 'J', 'a', 'v', 'a' }, n.getLabel(1))); assertEquals("DnsJava", n.getLabelString(1)); assertTrue(Arrays.equals(new byte[] { 3, 'o', 'r', 'g' }, n.getLabel(2))); assertEquals("org", n.getLabelString(2)); assertTrue(Arrays.equals(new byte[] { 0 }, n.getLabel(3))); assertEquals("", n.getLabelString(3)); } public void test_ctor_rel_abs_origin() throws TextParseException { Name n = new Name(m_rel, m_abs_origin); assertTrue(n.isAbsolute()); assertFalse(n.isWild()); assertEquals(4, n.labels()); assertEquals(18, n.length()); assertTrue(Arrays.equals(new byte[] { 3, 'W', 'W', 'W' }, n.getLabel(0))); assertEquals("WWW", n.getLabelString(0)); assertTrue(Arrays.equals(new byte[] { 7, 'D', 'n', 's', 'J', 'a', 'v', 'a' }, n.getLabel(1))); assertEquals("DnsJava", n.getLabelString(1)); assertTrue(Arrays.equals(new byte[] { 4, 'O', 'r', 'i', 'g'}, n.getLabel(2))); assertEquals("Orig", n.getLabelString(2)); assertTrue(Arrays.equals(new byte[] { 0 }, n.getLabel(3))); assertEquals("", n.getLabelString(3)); } public void test_ctor_invalid_label() { try { new Name("junk..junk."); fail("TextParseException not thrown"); } catch(TextParseException e){} } public void test_ctor_max_label() throws TextParseException { // name with a 63 char label Name n = new Name("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.b."); assertTrue(n.isAbsolute()); assertFalse(n.isWild()); assertEquals(3, n.labels()); assertEquals(67, n.length()); assertTrue(Arrays.equals(new byte[] { 63, 'a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a' }, n.getLabel(0))); assertEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", n.getLabelString(0)); assertTrue(Arrays.equals(new byte[] { 1, 'b' }, n.getLabel(1))); assertEquals("b", n.getLabelString(1)); assertTrue(Arrays.equals(new byte[] { 0 }, n.getLabel(2))); assertEquals("", n.getLabelString(2)); } public void test_ctor_toobig_label() { // name with a 64 char label try { new Name("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.b."); fail("TextParseException not thrown"); } catch(TextParseException e ){} } public void test_ctor_max_length_rel() throws TextParseException { // relative name with three 63-char labels and a 62-char label Name n = new Name("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc.dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"); assertFalse(n.isAbsolute()); assertFalse(n.isWild()); assertEquals(4, n.labels()); assertEquals(255, n.length()); } public void test_ctor_max_length_abs() throws TextParseException { // absolute name with three 63-char labels and a 61-char label Name n = new Name("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc.ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd."); assertTrue(n.isAbsolute()); assertFalse(n.isWild()); assertEquals(5, n.labels()); assertEquals(255, n.length()); } public void test_ctor_escaped() throws TextParseException { Name n = new Name("ab\\123cd"); assertFalse(n.isAbsolute()); assertFalse(n.isWild()); assertEquals(1, n.labels()); assertEquals(6, n.length()); assertTrue(Arrays.equals(new byte[] { 5, 'a', 'b', (byte)123, 'c', 'd' }, n.getLabel(0))); } public void test_ctor_escaped_end() throws TextParseException { Name n = new Name("abcd\\123"); assertFalse(n.isAbsolute()); assertFalse(n.isWild()); assertEquals(1, n.labels()); assertEquals(6, n.length()); assertTrue(Arrays.equals(new byte[] { 5, 'a', 'b', 'c', 'd', (byte)123 }, n.getLabel(0))); } public void test_ctor_short_escaped() throws TextParseException { try { new Name("ab\\12cd"); fail("TextParseException not throw"); } catch(TextParseException e){} } public void test_ctor_short_escaped_end() throws TextParseException { try { new Name("ab\\12"); fail("TextParseException not throw"); } catch(TextParseException e){} } public void test_ctor_empty_escaped_end() throws TextParseException { try { new Name("ab\\"); fail("TextParseException not throw"); } catch(TextParseException e){} } public void test_ctor_toobig_escaped() throws TextParseException { try { new Name("ab\\256cd"); fail("TextParseException not throw"); } catch(TextParseException e){} } public void test_ctor_toobig_escaped_end() throws TextParseException { try { new Name("ab\\256"); fail("TextParseException not throw"); } catch(TextParseException e){} } public void test_ctor_max_label_escaped() throws TextParseException { // name with a 63 char label containing an escape Name n = new Name("aaaa\\100aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.b."); assertTrue(n.isAbsolute()); assertFalse(n.isWild()); assertEquals(3, n.labels()); assertEquals(67, n.length()); assertTrue(Arrays.equals(new byte[] { 63, 'a','a','a','a',(byte)100,'a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a' }, n.getLabel(0))); assertTrue(Arrays.equals(new byte[] { 1, 'b' }, n.getLabel(1))); assertEquals("b", n.getLabelString(1)); assertTrue(Arrays.equals(new byte[] { 0 }, n.getLabel(2))); assertEquals("", n.getLabelString(2)); }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -