1 /*** 2 * 3 * Copyright 2004 Hiram Chirino 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 6 * use this file except in compliance with the License. You may obtain a copy of 7 * the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 * License for the specific language governing permissions and limitations under 15 * the License. 16 */ 17 package org.activeio.packet; 18 19 import java.util.Arrays; 20 21 import junit.framework.TestCase; 22 23 import org.activeio.Packet; 24 25 /*** 26 */ 27 abstract public class PacketTestSupport extends TestCase { 28 abstract Packet createTestPacket(int capacity); 29 30 public void testInit() { 31 Packet packet = createTestPacket(100); 32 assertEquals( 100, packet.capacity() ); 33 assertEquals( 0, packet.position()); 34 assertEquals( 100, packet.limit() ); 35 assertEquals( 100, packet.remaining() ); 36 assertTrue( packet.hasRemaining() ); 37 } 38 39 public void testPosition() { 40 Packet packet = createTestPacket(100); 41 packet.position(10); 42 assertEquals( 10, packet.position() ); 43 } 44 45 public void testLimit() { 46 Packet packet = createTestPacket(100); 47 packet.limit(10); 48 assertEquals( 10, packet.limit() ); 49 } 50 51 public void testRemaining() { 52 Packet packet = createTestPacket(100); 53 packet.position(5); 54 packet.limit(95); 55 assertEquals(90, packet.remaining()); 56 assertTrue(packet.hasRemaining()); 57 58 packet.position(5); 59 packet.limit(5); 60 assertEquals(0, packet.remaining()); 61 assertFalse(packet.hasRemaining()); 62 } 63 64 public void testFlip() { 65 Packet packet = createTestPacket(100); 66 packet.position(95); 67 packet.flip(); 68 assertEquals(0, packet.position()); 69 assertEquals(95, packet.limit()); 70 } 71 72 public void testClear() { 73 Packet packet = createTestPacket(100); 74 packet.position(5); 75 packet.limit(95); 76 packet.clear(); 77 assertEquals(0, packet.position()); 78 assertEquals(100, packet.limit()); 79 } 80 81 public void testDuplicate() { 82 Packet packet = createTestPacket(100); 83 packet.position(5); 84 packet.limit(95); 85 Packet packet2 = packet.duplicate(); 86 packet2.position(10); 87 packet2.limit(20); 88 89 assertEquals(5, packet.position()); 90 assertEquals(95, packet.limit()); 91 assertEquals(10, packet2.position()); 92 assertEquals(20, packet2.limit()); 93 } 94 95 public void testRewind() { 96 Packet packet = createTestPacket(100); 97 packet.position(5); 98 packet.limit(95); 99 packet.rewind(); 100 101 assertEquals(0, packet.position()); 102 assertEquals(95, packet.limit()); 103 } 104 105 public void testSlice() { 106 Packet packet = createTestPacket(100); 107 packet.position(5); 108 packet.limit(95); 109 Packet packet2 = packet.slice(); 110 111 assertEquals(0, packet2.position()); 112 assertEquals(90, packet2.capacity()); 113 assertEquals(90, packet2.limit()); 114 } 115 116 public void testWriteAndReadByte() { 117 118 Packet packet = createTestPacket(256); 119 for(int i=0; i < 256; i++) { 120 assertTrue(packet.write(i)); 121 } 122 assertFalse(packet.write(0)); 123 124 packet.flip(); 125 for(int i=0; i < 256; i++) { 126 assertEquals(i, packet.read()); 127 } 128 assertEquals(-1, packet.read()); 129 } 130 131 public void testWriteAndReadBulkByte() { 132 133 byte data[] = new byte[10]; 134 Packet packet = createTestPacket(data.length*10); 135 for(int i=0; i < 10; i++) { 136 Arrays.fill(data,(byte)i); 137 assertEquals(data.length, packet.write(data,0,data.length)); 138 } 139 assertEquals(-1, packet.write(data,0,data.length)); 140 141 byte buffer[] = new byte[data.length]; 142 packet.flip(); 143 for(int i=0; i < 10; i++) { 144 assertEquals(buffer.length, packet.read(buffer,0,buffer.length)); 145 Arrays.fill(data,(byte)i); 146 assertEquals(buffer, data); 147 } 148 assertEquals(-1, packet.read(buffer,0,buffer.length)); 149 } 150 151 public void assertEquals(byte buffer[], byte data[]) { 152 assertEquals(buffer.length, data.length); 153 for (int i = 0; i < data.length; i++) { 154 assertEquals(buffer[i], data[i]); 155 } 156 } 157 }