package com.limegroup.gnutella.util; import java.util.Arrays; import java.util.List; import org.limewire.gnutella.tests.LimeTestCase; import org.limewire.gnutella.tests.LimeTestUtils; import com.google.inject.Injector; import junit.framework.Test; public class FECUtilsImplTest extends LimeTestCase { public FECUtilsImplTest(String name) { super(name); } public static Test suite() { return buildTestSuite(FECUtilsImplTest.class); } private FECUtils fecUtils; @Override public void setUp() throws Exception { Injector injector = LimeTestUtils.createInjectorNonEagerly(); fecUtils = injector.getInstance(FECUtils.class); } /** * tests that we're running in pure java mode */ public void testPureCode() throws Exception { assertEquals("pure8,pure16", System.getProperty("com.onionnetworks.fec.keys")); } public void testFEC() throws Exception { byte [] data = new byte[10000]; Arrays.fill(data, (byte)1); List<byte []> encoded = fecUtils.encode(data, 1001, 1.3f); assertEquals(13,encoded.size()); // lose some 3 random packets encoded.set(0, null); encoded.set(5, null); encoded.set(12, null); byte [] decoded = fecUtils.decode(encoded, 10000); assertTrue(Arrays.equals(data, decoded)); // lose one more packet and decoding fails encoded.set(2, null); assertNull(fecUtils.decode(encoded, 10000)); } }