package org.jerlang.stdlib.beam_lib;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.nio.file.Files;
import org.junit.Test;
public class CodeChunkReaderTest {
@Test
public void testCodeChunkReader() throws Throwable {
File file = new File("src/test/resources/pid.beam");
byte[] bytes = Files.readAllBytes(file.toPath());
DataInputStream dis0 = new DataInputStream(new ByteArrayInputStream(bytes));
Chunk chunk0 = new Chunk(ChunkId.ATOM, 20, 75);
dis0.skipBytes(chunk0.offset());
AtomChunkReader atomChunkReader = new AtomChunkReader(chunk0, dis0);
AtomChunk atomChunk = atomChunkReader.read();
DataInputStream dis1 = new DataInputStream(new ByteArrayInputStream(bytes));
Chunk chunk1 = new Chunk(ChunkId.LITT, 344, 33);
dis1.skipBytes(chunk1.offset());
LiteralTableChunkReader literalTableChunkReader = new LiteralTableChunkReader(chunk1, dis1);
LiteralTableChunk literalTableatomChunk = literalTableChunkReader.read();
DataInputStream dis2 = new DataInputStream(new ByteArrayInputStream(bytes));
Chunk chunk2 = new Chunk(ChunkId.CODE, 104, 116);
dis2.skipBytes(chunk2.offset());
CodeChunkReader codeChunkReader = new CodeChunkReader(chunk2, dis2, atomChunk, literalTableatomChunk);
CodeChunk codeChunk = codeChunkReader.read();
assertNotNull(codeChunk);
assertEquals(10, codeChunk.numberOfLabels());
assertEquals(3, codeChunk.functions());
}
}