/*
* Copyright (C) 2008 Steve Ratcliffe
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 or
* version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
/* Create date: 15-Feb-2009 */
package uk.me.parabola.imgfmt.app.net;
import java.io.ByteArrayOutputStream;
import java.util.Random;
import uk.me.parabola.imgfmt.app.BitWriter;
import static org.junit.Assert.*;
import org.junit.Test;
public class RoadDefTest {
/**
* Compares the result of the loop in writeNod2 with using a BitWriter.
*
* You have to copy the code to here for this test to mean anything.
*/
@Test
public void testBitArray() {
Random r = new Random();
final int MAX_BITS = 26;
boolean[] bits = new boolean[MAX_BITS];
for (int i = 0; i < bits.length; i++)
bits[i] = r.nextBoolean();
ByteArrayOutputStream writer = new ByteArrayOutputStream();
// This is the loop taken from the code
for (int i = 0; i < bits.length; i += 8) {
int b = 0;
for (int j = 0; j < 8 && j < bits.length - i; j++)
if (bits[i+j])
b |= 1 << j;
writer.write((byte) b);
}
// End of loop
BitWriter bw = new BitWriter();
for (boolean b : bits)
bw.put1(b);
byte[] loopResult = writer.toByteArray();
// Get the bit writer result and trim the array to the correct size
byte[] bwResult = new byte[bw.getLength()];
System.arraycopy(bw.getBytes(), 0, bwResult, 0, bwResult.length);
assertArrayEquals("Loop against bitwriter", bwResult, loopResult);
}
}