package net.tomp2p; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.Collection; import java.util.List; import net.tomp2p.message.KeyCollection; import net.tomp2p.message.Message; import net.tomp2p.message.TestMessage; import net.tomp2p.peers.Number160; import net.tomp2p.peers.Number640; import org.junit.Test; public class KeyCollectionTest { static byte[] sampleBytes1 = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19}; static byte[] sampleBytes2 = new byte[] {19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; static byte[] sampleBytes3 = new byte[Number160.BYTE_ARRAY_SIZE]; static Number160 sample160_1 = Number160.ZERO; static Number160 sample160_2 = Number160.ONE; static Number160 sample160_3 = Number160.MAX_VALUE; static Number160 sample160_4 = new Number160(sampleBytes1); static Number160 sample160_5 = new Number160(sampleBytes2); static Number640 sample640_1 = Number640.ZERO; static Number640 sample640_2 = new Number640(new Number160(sampleBytes1), new Number160(sampleBytes2), new Number160(sampleBytes3), Number160.MAX_VALUE); static Number640 sample640_3 = new Number640(Number160.MAX_VALUE, new Number160(sampleBytes3), new Number160(sampleBytes2), new Number160(sampleBytes1)); @Test public void encodeDecodeTest() throws Exception { // create a sample key collections Collection<Number160> sampleCollection1 = new ArrayList<Number160>(); sampleCollection1.add(sample160_1); sampleCollection1.add(sample160_2); sampleCollection1.add(sample160_3); Collection<Number160> sampleCollection2 = new ArrayList<Number160>(); sampleCollection2.add(sample160_2); sampleCollection2.add(sample160_3); sampleCollection2.add(sample160_4); Collection<Number160> sampleCollection3 = new ArrayList<Number160>(); sampleCollection3.add(sample160_3); sampleCollection3.add(sample160_4); sampleCollection3.add(sample160_5); Message m1 = Utils2.createDummyMessage(); m1.keyCollection(new KeyCollection(sample160_1, sample160_1, sample160_1, sampleCollection1)); m1.keyCollection(new KeyCollection(sample160_2, sample160_2, sample160_2, sampleCollection2)); m1.keyCollection(new KeyCollection(sample160_3, sample160_3, sample160_3, sampleCollection3)); m1.keyCollection(new KeyCollection(sample160_4, sample160_4, sample160_4, sampleCollection1)); m1.keyCollection(new KeyCollection(sample160_5, sample160_5, sample160_5, sampleCollection2)); m1.keyCollection(new KeyCollection(sample160_1, sample160_2, sample160_3, sampleCollection3)); m1.keyCollection(new KeyCollection(sample160_2, sample160_3, sample160_4, sampleCollection1)); m1.keyCollection(new KeyCollection(sample160_3, sample160_4, sample160_5, sampleCollection2)); Message m2 = TestMessage.encodeDecode(m1); assertTrue(CheckIsSameList(m1.keyCollectionList(), m2.keyCollectionList())); } private static <T> boolean CheckIsSameList(List<T> list1, List<T> list2) { if (list1 == null ^ list2 == null) // XOR { return false; } if (list1 != null && (list1.size() != list2.size())) { return false; } for (int i = 0; i < list1.size(); i++) { if (!list1.get(i).equals(list2.get(i))) { return false; } } return true; } }