mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-05-31 03:15:11 +00:00
144 lines
5.1 KiB
Java
144 lines
5.1 KiB
Java
package com.jpexs.decompiler.flash;
|
|
|
|
import java.io.ByteArrayInputStream;
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.io.IOException;
|
|
import static org.testng.Assert.*;
|
|
import org.testng.annotations.Test;
|
|
|
|
/**
|
|
*
|
|
* @author JPEXS
|
|
*/
|
|
public class SWFStreamTest {
|
|
|
|
@Test
|
|
public void testNeededBits() {
|
|
assertEquals(SWFOutputStream.getNeededBitsU(3),2);
|
|
assertEquals(SWFOutputStream.getNeededBitsU(255),8);
|
|
assertEquals(SWFOutputStream.getNeededBitsS(3),3);
|
|
assertEquals(SWFOutputStream.getNeededBitsS(255),9);
|
|
assertEquals(SWFOutputStream.getNeededBitsS(-2),3);
|
|
assertEquals(SWFOutputStream.getNeededBitsS(-597),11);
|
|
assertEquals(SWFOutputStream.getNeededBitsF(15.5f),21);
|
|
assertEquals(SWFOutputStream.getNeededBitsF(0.1f),17);
|
|
assertEquals(SWFOutputStream.getNeededBitsF(-2.8891602f),19);
|
|
}
|
|
|
|
@Test
|
|
public void testFB() throws IOException {
|
|
double f = 5.25;
|
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
|
SWFOutputStream sos = new SWFOutputStream(baos, 10);
|
|
sos.writeFB(20, f);
|
|
sos.close();
|
|
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
|
|
SWFInputStream sis = new SWFInputStream(bais, 10);
|
|
assertTrue(Double.compare(f, sis.readFB(20)) == 0);
|
|
sis.close();
|
|
}
|
|
|
|
@Test
|
|
public void testUB() throws IOException {
|
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
|
SWFOutputStream sos = new SWFOutputStream(baos, 10);
|
|
sos.writeUB(5, 1);
|
|
sos.writeUB(6, 2);
|
|
sos.writeUB(7, 3);
|
|
sos.writeUB(8, 4);
|
|
sos.writeUB(9, 5);
|
|
sos.close();
|
|
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
|
|
SWFInputStream sis = new SWFInputStream(bais, 10);
|
|
assertEquals(1, sis.readUB(5));
|
|
assertEquals(2, sis.readUB(6));
|
|
assertEquals(3, sis.readUB(7));
|
|
assertEquals(4, sis.readUB(8));
|
|
assertEquals(5, sis.readUB(9));
|
|
sis.close();
|
|
}
|
|
|
|
@Test
|
|
public void testSB() throws IOException {
|
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
|
SWFOutputStream sos = new SWFOutputStream(baos, 10);
|
|
sos.writeSB(5, -1);
|
|
sos.writeSB(6, 2);
|
|
sos.writeSB(7, -3);
|
|
sos.writeSB(8, 4);
|
|
sos.writeSB(9, -5);
|
|
sos.close();
|
|
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
|
|
SWFInputStream sis = new SWFInputStream(bais, 10);
|
|
assertEquals(-1, sis.readSB(5));
|
|
assertEquals(2, sis.readSB(6));
|
|
assertEquals(-3, sis.readSB(7));
|
|
assertEquals(4, sis.readSB(8));
|
|
assertEquals(-5, sis.readSB(9));
|
|
sis.close();
|
|
}
|
|
|
|
|
|
@Test
|
|
public void testFLOATAndDouble() throws IOException {
|
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
|
SWFOutputStream sos = new SWFOutputStream(baos, 10);
|
|
float f = 5.25f;
|
|
sos.writeFLOAT(f);
|
|
sos.close();
|
|
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
|
|
SWFInputStream sis = new SWFInputStream(bais, 10);
|
|
assertEquals(f, sis.readFLOAT());
|
|
sis.close();
|
|
|
|
baos = new ByteArrayOutputStream();
|
|
sos = new SWFOutputStream(baos, 10);
|
|
f = 5.25f;
|
|
sos.writeFLOAT16(f);
|
|
sos.close();
|
|
bais = new ByteArrayInputStream(baos.toByteArray());
|
|
sis = new SWFInputStream(bais, 10);
|
|
assertEquals(f, sis.readFLOAT16());
|
|
sis.close();
|
|
|
|
baos = new ByteArrayOutputStream();
|
|
sos = new SWFOutputStream(baos, 10);
|
|
double d = 5.25;
|
|
sos.writeDOUBLE(d);
|
|
sos.close();
|
|
bais = new ByteArrayInputStream(baos.toByteArray());
|
|
sis = new SWFInputStream(bais, 10);
|
|
assertEquals(d, sis.readDOUBLE());
|
|
sis.close();
|
|
}
|
|
|
|
@Test
|
|
public void testFIXEDandFIXED8() throws IOException {
|
|
//example from specification
|
|
ByteArrayInputStream bais = new ByteArrayInputStream(new byte[]{(byte) 0x00, (byte) 0x80, (byte) 0x07, (byte) 0x00});
|
|
SWFInputStream sis = new SWFInputStream(bais, 10);
|
|
assertTrue(Double.compare(7.5, sis.readFIXED()) == 0);
|
|
sis.close();
|
|
|
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
|
SWFOutputStream sos = new SWFOutputStream(baos, 10);
|
|
double dd = 5.25;
|
|
sos.writeFIXED(dd);
|
|
sos.close();
|
|
bais = new ByteArrayInputStream(baos.toByteArray());
|
|
sis = new SWFInputStream(bais, 10);
|
|
assertTrue(Double.compare(dd, sis.readFIXED()) == 0);
|
|
sis.close();
|
|
|
|
baos = new ByteArrayOutputStream();
|
|
sos = new SWFOutputStream(baos, 10);
|
|
float ff = 5.25f;
|
|
sos.writeFIXED8(ff);
|
|
sos.close();
|
|
bais = new ByteArrayInputStream(baos.toByteArray());
|
|
sis = new SWFInputStream(bais, 10);
|
|
assertEquals(ff, sis.readFIXED8());
|
|
sis.close();
|
|
}
|
|
}
|