package the8472.test.bencode;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static the8472.utils.Functional.tap;
import java.util.Arrays;
import org.junit.Test;
import lbms.plugins.mldht.kad.Key;
import lbms.plugins.mldht.kad.Prefix;
public class PrefixTest {
@Test
public void testPrefixMatch() {
byte[] reference = new byte[20];
reference[0] = 0x10; // bit 4
Key k = new Key(reference);
Prefix p = new Prefix(k, 3);
assertTrue(Arrays.equals(p.getHash(), reference));
assertTrue(Arrays.equals(p.getParentPrefix().getHash(), new byte[20]));
assertTrue(Arrays.equals(p.splitPrefixBranch(false).getHash(), tap(new byte[20], b -> b[0] = 0x10)));
assertTrue(Arrays.equals(p.splitPrefixBranch(true).getHash(), tap(new byte[20], b -> b[0] = 0x18)));
assertTrue(p.isPrefixOf(k));
assertTrue(p.isPrefixOf(new Key(tap(new byte[20], b -> b[0] = 0x11))));
assertTrue(p.isPrefixOf(new Key(tap(new byte[20], b -> b[0] = 0x1f))));
assertFalse(p.isPrefixOf(new Key(tap(new byte[20], b -> b[0] = 0x20))));
assertFalse(p.isPrefixOf(new Key(tap(new byte[20], b -> b[0] = (byte) 0x7f))));
}
}