Initial version based on previous work. (Version alpha 7)

This commit is contained in:
Jindra Pet��k
2010-09-04 13:57:22 +02:00
commit a34ee7364c
1147 changed files with 84884 additions and 0 deletions
@@ -0,0 +1,30 @@
package com.jpexs.asdec;
import com.jpexs.asdec.abc.ABCInputStream;
import com.jpexs.asdec.abc.ABCOutputStream;
import junit.framework.TestCase;
import org.junit.Test;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class TestABCStream extends TestCase {
@Test
public void testU30() {
try {
long number = 1531;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ABCOutputStream aos = new ABCOutputStream(baos);
aos.writeU30(number);
aos.close();
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ABCInputStream ais = new ABCInputStream(bais);
assertEquals(number, ais.readU30());
assertEquals(0, bais.available());
ais.close();
} catch (IOException ex) {
fail();
}
}
}
@@ -0,0 +1,42 @@
package com.jpexs.asdec;
import com.jpexs.asdec.abc.NotSameException;
import junit.framework.TestCase;
import org.junit.Test;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class TestRecompile extends TestCase {
public static final String TESTDATADIR = "testdata";
private void testRecompile(String filename) {
try {
SWF swf = new SWF(new FileInputStream(TESTDATADIR + File.separator + filename));
Main.DEBUG_COPY = true;
swf.saveTo(new ByteArrayOutputStream());
} catch (IOException ex) {
fail();
} catch (NotSameException ex) {
//ex.printStackTrace();
fail("File is different after recompiling: " + filename);
}
}
@Test
public void testRecompile1() {
testRecompile("01.swf");
}
@Test
public void testRecompile2() {
testRecompile("02.swf");
}
@Test
public void testRecompile3() {
testRecompile("03.swf");
}
}
@@ -0,0 +1,178 @@
package com.jpexs.asdec;
import junit.framework.TestCase;
import org.junit.Test;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class TestSWFStream extends TestCase {
@Test
public void testNeededBits() {
assertEquals(2, SWFOutputStream.getNeededBitsU(3));
assertEquals(8, SWFOutputStream.getNeededBitsU(255));
assertEquals(3, SWFOutputStream.getNeededBitsS(3));
assertEquals(9, SWFOutputStream.getNeededBitsS(255));
assertEquals(2, SWFOutputStream.getNeededBitsS(-2));
assertEquals(11, SWFOutputStream.getNeededBitsS(-597));
assertEquals(21, SWFOutputStream.getNeededBitsF(15.5f));
assertEquals(14, SWFOutputStream.getNeededBitsF(0.1f));
assertEquals(19, SWFOutputStream.getNeededBitsF(-2.8891602f));
}
@Test
public void testFB() {
try {
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();
} catch (IOException e) {
fail();
}
}
@Test
public void testUB() {
try {
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();
} catch (IOException e) {
fail();
}
}
@Test
public void testSB() {
try {
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();
} catch (IOException e) {
fail();
}
}
@Test
public void testFLOATAndDouble() {
try {
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();
} catch (IOException e) {
fail();
}
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
SWFOutputStream sos = new SWFOutputStream(baos, 10);
float f = 5.25f;
sos.writeFLOAT16(f);
sos.close();
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
SWFInputStream sis = new SWFInputStream(bais, 10);
assertEquals(f, sis.readFLOAT16());
sis.close();
} catch (IOException e) {
fail();
}
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
SWFOutputStream sos = new SWFOutputStream(baos, 10);
double d = 5.25;
sos.writeDOUBLE(d);
sos.close();
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
SWFInputStream sis = new SWFInputStream(bais, 10);
assertEquals(d, sis.readDOUBLE());
sis.close();
} catch (IOException e) {
fail();
}
}
@Test
public void testFIXEDandFIXED8() {
//example from specification
try {
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();
} catch (IOException e) {
fail();
}
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
SWFOutputStream sos = new SWFOutputStream(baos, 10);
double f = 5.25;
sos.writeFIXED(f);
sos.close();
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
SWFInputStream sis = new SWFInputStream(bais, 10);
assertTrue(Double.compare(f, sis.readFIXED()) == 0);
sis.close();
} catch (IOException e) {
fail();
}
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
SWFOutputStream sos = new SWFOutputStream(baos, 10);
float f = 5.25f;
sos.writeFIXED8(f);
sos.close();
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
SWFInputStream sis = new SWFInputStream(bais, 10);
assertEquals(f, sis.readFIXED8());
sis.close();
} catch (IOException e) {
fail();
}
}
}