Extraction Tests
This commit is contained in:
parent
3ce26796a8
commit
c7511827fb
@ -68,7 +68,7 @@ public class BinaryParser implements FileParser {
|
||||
* @return Level data as an array of byte
|
||||
* @throws IOException Expected if we can't read the file
|
||||
*/
|
||||
private static byte[] ExtractLevelData(FileInputStream fileStream) throws IOException {
|
||||
static byte[] ExtractLevelData(InputStream fileStream) throws IOException {
|
||||
|
||||
byte[] bytes = fileStream.readAllBytes();
|
||||
|
||||
@ -80,7 +80,7 @@ public class BinaryParser implements FileParser {
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = start_position; i < bytes.length; i++) {
|
||||
for (int i = start_position; i < bytes.length - 2; i++) {
|
||||
if(bytes[i] == 83 && bytes[i+1] == 77 && bytes[i+2] == 69){ // SME
|
||||
end_position = i;
|
||||
break;
|
||||
@ -97,11 +97,11 @@ public class BinaryParser implements FileParser {
|
||||
* @param saved_data Should extract saved data and included it in the pieces
|
||||
* @return array of Piece from level data
|
||||
*/
|
||||
private static Piece[] ExtractPiecesFromLevelData(byte[] levelData, boolean saved_data) {
|
||||
static Piece[] ExtractPiecesFromLevelData(byte[] levelData, boolean saved_data) {
|
||||
byte map_width = levelData[0], map_height = levelData[1];
|
||||
byte piece_count = levelData[3 + map_width * map_height / 8 + (map_height * map_width % 8 != 0 ? 1 : 0)];
|
||||
byte piece_count = levelData[2 + map_width * map_height / 8 + (map_height * map_width % 8 != 0 ? 1 : 0)];
|
||||
Piece[] ret = new Piece[piece_count];
|
||||
byte[] pieces_data = Arrays.copyOfRange(levelData, 4 + map_width * map_height / 8 + (map_height * map_width % 8 != 0 ? 1 : 0), levelData.length - 1);
|
||||
byte[] pieces_data = Arrays.copyOfRange(levelData, 3 + map_width * map_height / 8 + (map_height * map_width % 8 != 0 ? 1 : 0), levelData.length);
|
||||
byte[] pieces_positions = saved_data ? Arrays.copyOfRange(levelData, levelData.length - 1 - piece_count,levelData.length - 1): null;
|
||||
int piece_offset = 0;
|
||||
for (int piece_index = 0; piece_index < piece_count; piece_index++) {
|
||||
|
@ -5,6 +5,8 @@ import school_project.Map;
|
||||
import school_project.Piece;
|
||||
import school_project.Vec2;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
@ -13,13 +15,13 @@ class BinaryParserTest {
|
||||
|
||||
static byte[] file_data = {
|
||||
'S', 'M', 'S',
|
||||
6, 4, (byte) 0x31, (byte) 0xEC, (byte) 0xF3, (byte) 0xFC,
|
||||
6, 5, (byte) 0x31, (byte) 0xEC, (byte) 0xF3, (byte) 0xFC,
|
||||
4,
|
||||
(byte) 0x22, (byte) 0x70,
|
||||
(byte) 0x33, (byte) 0x99, (byte) 0x80,
|
||||
(byte) 0x32, (byte) 0x7C,
|
||||
(byte) 0x33, (byte) 0xDB, (byte) 0x80,
|
||||
'S', 'M', 'S'
|
||||
'S', 'M', 'E'
|
||||
};
|
||||
|
||||
@Test
|
||||
@ -54,19 +56,6 @@ class BinaryParserTest {
|
||||
assertEquals(19, BinaryParser.getByteSizeForMap(map, true));
|
||||
}
|
||||
|
||||
// @Test
|
||||
// void ExtractLevelData(){
|
||||
// boolean[][] expected_map_shape = {
|
||||
// {false, false, true, true, false, false},
|
||||
// {false, true, true, true, true, false},
|
||||
// {true, true, false, false, true, true},
|
||||
// {true, true, false, false, true, true},
|
||||
// {true, true, true, true, true, true},
|
||||
// };
|
||||
//
|
||||
// boolean[][] map = BinaryParser.ExtractMapFromLevelData(file_data);
|
||||
// assertArrayEquals(expected_map_shape, map);
|
||||
// }
|
||||
|
||||
@Test
|
||||
void BuildMatrixFromByte_map(){
|
||||
@ -122,4 +111,54 @@ class BinaryParserTest {
|
||||
};
|
||||
assertArrayEquals(piece4_shape, BinaryParser.BuildMatrixFromBytes(3, 3, piece4_data));
|
||||
}
|
||||
|
||||
@Test
|
||||
void ExtractLevelData() throws IOException {
|
||||
boolean[][] expected_map_shape = {
|
||||
{false, false, true, true, false, false},
|
||||
{false, true, true, true, true, false},
|
||||
{true, true, false, false, true, true},
|
||||
{true, true, false, false, true, true},
|
||||
{true, true, true, true, true, true},
|
||||
};
|
||||
|
||||
byte[] level_data = BinaryParser.ExtractLevelData(new ByteArrayInputStream(file_data));
|
||||
boolean[][] map = BinaryParser.ExtractMapFromLevelData(level_data);
|
||||
|
||||
assertArrayEquals(expected_map_shape, map);
|
||||
}
|
||||
|
||||
@Test
|
||||
void ExtractPiecesFronLevelDataTest() throws IOException {
|
||||
boolean[][] piece1_shape = {
|
||||
{false, true},
|
||||
{true, true},
|
||||
};
|
||||
boolean[][] piece2_shape = {
|
||||
{true, false, false},
|
||||
{true, true, false},
|
||||
{false, true, true},
|
||||
};
|
||||
boolean[][] piece3_shape = {
|
||||
{false, true, true},
|
||||
{true, true, true},
|
||||
};
|
||||
boolean[][] piece4_shape = {
|
||||
{true, true, false},
|
||||
{true, true, false},
|
||||
{true, true, true},
|
||||
};
|
||||
boolean[][][] pieces_shapes = {
|
||||
piece1_shape,
|
||||
piece2_shape,
|
||||
piece3_shape,
|
||||
piece4_shape
|
||||
};
|
||||
byte[] level_data = BinaryParser.ExtractLevelData(new ByteArrayInputStream(file_data));
|
||||
Piece[] pieces = BinaryParser.ExtractPiecesFromLevelData(level_data, false);
|
||||
|
||||
for (int i = 0; i < pieces_shapes.length; i++) {
|
||||
assertArrayEquals(pieces_shapes[i], pieces[i].getShape());
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user