fix bug in getBoolField

This commit is contained in:
David Renshaw 2014-05-24 22:21:41 -04:00
parent adfa3cf29d
commit 67df707a6f
3 changed files with 25 additions and 13 deletions

View file

@ -60,7 +60,7 @@ object Build extends sbt.Build {
object Shared {
val testDeps = Seq(
// "org.scalatest" %% "scalatest" % "2.1.6" % "it,test",
"org.scalatest" %% "scalatest" % "2.1.6" % "it,test",
// "org.scalacheck" %% "scalacheck" % "1.11.4" % "it,test",
"com.novocode" % "junit-interface" % "0.10" % "test",
"junit" % "junit" % "4.11" % "test"

View file

@ -27,7 +27,8 @@ public final class StructReader {
if (offset == 0) {
offset = this.bit0Offset;
}
byte b = this.segment.buffer.get(offset / 8);
byte b = this.segment.buffer.get(this.data + offset / 8);
return (b & (1 << (offset % 8))) != 0;
} else {
return false;

View file

@ -4,7 +4,7 @@ import java.nio.ByteBuffer;
import org.junit.Test;
import static org.hamcrest.core.IsEqual.equalTo;
import static org.junit.Assert.assertThat;
import org.junit.Assert;
public class LayoutTest {
@ -19,19 +19,30 @@ public class LayoutTest {
PointerReader pointerReader = new PointerReader(new SegmentReader(buffer), 0, 0x7fffffff);
StructReader reader = pointerReader.getStruct();
assertThat(reader.getLongField(0), equalTo(0xefcdab8967452301L));
assertThat(reader.getLongField(1), equalTo(0L));
assertThat(reader.getIntField(0), equalTo(0x67452301));
assertThat(reader.getIntField(1), equalTo(0xefcdab89));
assertThat(reader.getIntField(2), equalTo(0));
assertThat(reader.getShortField(0), equalTo((short) 0x2301));
assertThat(reader.getShortField(1), equalTo((short)0x6745));
assertThat(reader.getShortField(2), equalTo((short)0xab89));
assertThat(reader.getShortField(3), equalTo((short)0xefcd));
assertThat(reader.getShortField(4), equalTo((short)0));
Assert.assertThat(reader.getLongField(0), equalTo(0xefcdab8967452301L));
Assert.assertThat(reader.getLongField(1), equalTo(0L));
Assert.assertThat(reader.getIntField(0), equalTo(0x67452301));
Assert.assertThat(reader.getIntField(1), equalTo(0xefcdab89));
Assert.assertThat(reader.getIntField(2), equalTo(0));
Assert.assertThat(reader.getShortField(0), equalTo((short) 0x2301));
Assert.assertThat(reader.getShortField(1), equalTo((short)0x6745));
Assert.assertThat(reader.getShortField(2), equalTo((short)0xab89));
Assert.assertThat(reader.getShortField(3), equalTo((short)0xefcd));
Assert.assertThat(reader.getShortField(4), equalTo((short)0));
// TODO masking
Assert.assertTrue(reader.getBoolField(0));
Assert.assertFalse(reader.getBoolField(1));
Assert.assertFalse(reader.getBoolField(2));
Assert.assertFalse(reader.getBoolField(3));
Assert.assertFalse(reader.getBoolField(4));
Assert.assertFalse(reader.getBoolField(5));
Assert.assertFalse(reader.getBoolField(6));
Assert.assertFalse(reader.getBoolField(7));
Assert.assertTrue(reader.getBoolField(8));
Assert.assertTrue(reader.getBoolField(9));
}
}