Additional tests to validate StatListWriter

Validation that a reasonable number of item stat lists write correctly
This commit is contained in:
Collin Smith
2020-09-02 20:13:51 -07:00
parent e8601ec692
commit 3e5a49943c

View File

@ -23,8 +23,10 @@ import com.riiablo.logger.LogManager;
import com.riiablo.mpq.MPQFileHandleResolver;
import static com.riiablo.attributes.StatListFlags.FLAG_MAGIC;
import static com.riiablo.attributes.StatListFlags.FLAG_NONE;
import static com.riiablo.attributes.StatListFlags.FLAG_RUNE;
import static com.riiablo.attributes.StatListFlags.NUM_ITEM_LISTS;
import static com.riiablo.attributes.StatListFlags.getItemSetFlags;
public class StatListWriterTest {
@BeforeClass
@ -49,6 +51,7 @@ public class StatListWriterTest {
private void testItem(byte[] data, long bitsToSkip, int length, int flags) {
final int offset = (int) (bitsToSkip >> 3);
final int bitOffset = (int) (bitsToSkip & 0x7);
if (length < 0) length = data.length - offset;
ByteInput in = ByteInput.wrap(Unpooled.wrappedBuffer(data, offset, length));
BitInput bitInput = in.unalign().skipBits(bitOffset);
StatListReader reader = new StatListReader();
@ -58,7 +61,7 @@ public class StatListWriterTest {
ByteOutput out = ByteOutput.wrap(Unpooled.buffer(length, length));
BitOutput bitOutput = out.unalign().writeRaw(data[offset], bitOffset);
System.out.println(ByteBufUtil.prettyHexDump(out.buffer()));
System.out.printf("cache=%02x %d%n", data[offset], bitOffset);
StatListWriter writer = new StatListWriter();
writer.write(attrs, bitOutput, flags, NUM_ITEM_LISTS);
bitOutput.flush();
@ -72,73 +75,63 @@ public class StatListWriterTest {
testItem(Gdx.files.internal("test/Spirit.d2i").readBytes(), 216, 0x19, FLAG_MAGIC | FLAG_RUNE);
}
// @Test
// public void Annihilus() {
// testItem(Gdx.files.internal("test/Annihilus.d2i").readBytes());
// }
//
// @Test
// public void Hunters_Bow_of_Blight() {
// testItem(Gdx.files.internal("test/Hunter's Bow of Blight.d2i").readBytes());
// }
//
// @Test
// public void Horadric_Malus() {
// testItem(Gdx.files.internal("test/Horadric Malus.d2i").readBytes());
// }
//
// @Test
// public void Wirts_Leg() {
// testItem(Gdx.files.internal("test/Wirt's Leg.d2i").readBytes());
// }
@Test
public void Annihilus() {
testItem(Gdx.files.internal("test/Annihilus.d2i").readBytes(), 172, -1, FLAG_MAGIC);
}
@Test
public void Hunters_Bow_of_Blight() {
testItem(Gdx.files.internal("test/Hunter's Bow of Blight.d2i").readBytes(), 196, -1, FLAG_MAGIC);
}
@Test
public void Horadric_Malus() {
testItem(Gdx.files.internal("test/Horadric Malus.d2i").readBytes(), 186, -1, FLAG_NONE);
}
@Test
public void Wirts_Leg() {
testItem(Gdx.files.internal("test/Wirt's Leg.d2i").readBytes(), 178, -1, FLAG_NONE);
}
@Test
public void Grief() {
testItem(Gdx.files.internal("test/Grief.d2i").readBytes(), 197, 0x12, FLAG_RUNE);
}
// @Test
// public void Horadric_Cube() {
// testItem(Gdx.files.internal("test/Horadric Cube.d2i").readBytes());
// }
//
// @Test
// public void Flawed_Ruby() {
// testItem(Gdx.files.internal("test/Flawed Ruby.d2i").readBytes());
// }
//
// @Test
// public void Thul_Rune() {
// testItem(Gdx.files.internal("test/Thul Rune.d2i").readBytes());
// }
//
// @Test
// public void Tome_of_Town_Portal() {
// testItem(Gdx.files.internal("test/Tome of Town Portal.d2i").readBytes());
// }
//
// @Test
// public void Tome_of_Identify() {
// testItem(Gdx.files.internal("test/Tome of Identify.d2i").readBytes());
// }
//
// @Test
// public void Rugged_Small_Charm_of_Vita() {
// testItem(Gdx.files.internal("test/Rugged Small Charm of Vita.d2i").readBytes());
// }
//
// @Test
// public void Aldurs_Advance() {
// testItem(Gdx.files.internal("test/Aldur's Advance.d2i").readBytes());
// }
//
// @Test
// public void Blood_Eye() {
// testItem(Gdx.files.internal("test/Blood Eye.d2i").readBytes());
// }
//
// @Test
// public void Vampire_Gaze() {
// testItem(Gdx.files.internal("test/Vampire Gaze.d2i").readBytes());
// }
@Test
public void Horadric_Cube() {
testItem(Gdx.files.internal("test/Horadric Cube.d2i").readBytes(), 157, -1, FLAG_NONE);
}
@Test
public void Tome_of_Town_Portal() {
testItem(Gdx.files.internal("test/Tome of Town Portal.d2i").readBytes(), 171, -1, FLAG_MAGIC);
}
@Test
public void Tome_of_Identify() {
testItem(Gdx.files.internal("test/Tome of Identify.d2i").readBytes(), 171, -1, FLAG_MAGIC);
}
@Test
public void Rugged_Small_Charm_of_Vita() {
testItem(Gdx.files.internal("test/Rugged Small Charm of Vita.d2i").readBytes(), 182, -1, FLAG_MAGIC);
}
@Test
public void Aldurs_Advance() {
testItem(Gdx.files.internal("test/Aldur's Advance.d2i").readBytes(), 202, -1, FLAG_MAGIC | getItemSetFlags(4));
}
@Test
public void Blood_Eye() {
testItem(Gdx.files.internal("test/Blood Eye.d2i").readBytes(), 237, -1, FLAG_MAGIC);
}
@Test
public void Vampire_Gaze() {
testItem(Gdx.files.internal("test/Vampire Gaze.d2i").readBytes(), 197, -1, FLAG_MAGIC);
}
}