mirror of
https://github.com/collinsmith/riiablo.git
synced 2025-07-31 15:09:21 +07:00
Additional tests to validate StatListWriter
Validation that a reasonable number of item stat lists write correctly
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user