[Swfdec-commits] Branch 'test' - 8 commits - test/.gitignore test/swfdec_test_buffer.c test/swfdec_test_buffer.h test/swfdec_test.c test/swfdec_test_initialize.as test/swfdec_test_initialize.h test/swfdec_test_socket.c test/swfdec_test_socket.h test/swfdec_test_test.c test/trace

Benjamin Otte company at kemper.freedesktop.org
Sun Feb 3 13:15:12 PST 2008


 test/.gitignore                |    2 
 test/swfdec_test.c             |    4 
 test/swfdec_test_buffer.c      |   32 +++++--
 test/swfdec_test_buffer.h      |    4 
 test/swfdec_test_initialize.as |    5 -
 test/swfdec_test_initialize.h  |  175 +++++++++++++++++++++--------------------
 test/swfdec_test_socket.c      |  172 ++++++++++++++++++++++++++++++++--------
 test/swfdec_test_socket.h      |    5 +
 test/swfdec_test_test.c        |   13 ++-
 test/trace/default.stas        |    2 
 10 files changed, 285 insertions(+), 129 deletions(-)

New commits:
commit 2b22e9fd14496fb6e8bb0b2911cd22979ce0132f
Author: Benjamin Otte <otte at gnome.org>
Date:   Sun Feb 3 21:39:05 2008 +0100

    update gitignore for changed binary name

diff --git a/test/.gitignore b/test/.gitignore
index 4573b5b..16b89ee 100644
--- a/test/.gitignore
+++ b/test/.gitignore
@@ -5,4 +5,4 @@
 swfdec_test_function_list.h
 
 compiler
-test
+swfdec-test
commit a1782c570befead0cc61abda02dfb23f64735c41
Author: Benjamin Otte <otte at gnome.org>
Date:   Sun Feb 3 21:38:21 2008 +0100

    rewrite socket class
    
    It works ok, but has races when sending data from one app to the other and I
    dislike that.

diff --git a/test/swfdec_test_initialize.as b/test/swfdec_test_initialize.as
index 7b10699..1737e6c 100644
--- a/test/swfdec_test_initialize.as
+++ b/test/swfdec_test_initialize.as
@@ -46,7 +46,10 @@ HTTPRequest.prototype.close = Native.HTTPRequest_close;
 
 Socket = Native.Socket;
 Socket.prototype = {};
-Socket.prototype.process = Native.Socket_process;
+Socket.prototype.getConnection = Native.Socket_getConnection;
+Socket.prototype.receive = Native.Socket_receive;
+Socket.prototype.send = Native.Socket_send;
+Socket.prototype.close = Native.Socket_close;
 
 Test = Native.Test;
 Test.prototype = {};
diff --git a/test/swfdec_test_initialize.h b/test/swfdec_test_initialize.h
index 3bbea82..713a7c7 100644
--- a/test/swfdec_test_initialize.h
+++ b/test/swfdec_test_initialize.h
@@ -2,7 +2,7 @@
 
 /* compiled from swfdec_test_initialize.as */
 static const unsigned char swfdec_test_initialize[] = {
-  0x88, 0x07, 0x03, 0x41,  0x00, 0x42, 0x75, 0x66,  0x66, 0x65, 0x72, 0x00,  0x4E, 0x61, 0x74, 0x69,
+  0x88, 0x43, 0x03, 0x45,  0x00, 0x42, 0x75, 0x66,  0x66, 0x65, 0x72, 0x00,  0x4E, 0x61, 0x74, 0x69,
   0x76, 0x65, 0x00, 0x6C,  0x6F, 0x61, 0x64, 0x00,  0x42, 0x75, 0x66, 0x66,  0x65, 0x72, 0x5F, 0x6C,
   0x6F, 0x61, 0x64, 0x00,  0x70, 0x72, 0x6F, 0x74,  0x6F, 0x74, 0x79, 0x70,  0x65, 0x00, 0x64, 0x69,
   0x66, 0x66, 0x00, 0x42,  0x75, 0x66, 0x66, 0x65,  0x72, 0x5F, 0x64, 0x69,  0x66, 0x66, 0x00, 0x49,
@@ -35,89 +35,98 @@ static const unsigned char swfdec_test_initialize[] = {
   0x67, 0x00, 0x73, 0x65,  0x6E, 0x64, 0x00, 0x48,  0x54, 0x54, 0x50, 0x52,  0x65, 0x71, 0x75, 0x65,
   0x73, 0x74, 0x5F, 0x73,  0x65, 0x6E, 0x64, 0x00,  0x63, 0x6C, 0x6F, 0x73,  0x65, 0x00, 0x48, 0x54,
   0x54, 0x50, 0x52, 0x65,  0x71, 0x75, 0x65, 0x73,  0x74, 0x5F, 0x63, 0x6C,  0x6F, 0x73, 0x65, 0x00,
-  0x53, 0x6F, 0x63, 0x6B,  0x65, 0x74, 0x00, 0x70,  0x72, 0x6F, 0x63, 0x65,  0x73, 0x73, 0x00, 0x53,
-  0x6F, 0x63, 0x6B, 0x65,  0x74, 0x5F, 0x70, 0x72,  0x6F, 0x63, 0x65, 0x73,  0x73, 0x00, 0x54, 0x65,
-  0x73, 0x74, 0x00, 0x61,  0x64, 0x76, 0x61, 0x6E,  0x63, 0x65, 0x00, 0x54,  0x65, 0x73, 0x74, 0x5F,
-  0x61, 0x64, 0x76, 0x61,  0x6E, 0x63, 0x65, 0x00,  0x6D, 0x6F, 0x75, 0x73,  0x65, 0x5F, 0x6D, 0x6F,
-  0x76, 0x65, 0x00, 0x54,  0x65, 0x73, 0x74, 0x5F,  0x6D, 0x6F, 0x75, 0x73,  0x65, 0x5F, 0x6D, 0x6F,
-  0x76, 0x65, 0x00, 0x6D,  0x6F, 0x75, 0x73, 0x65,  0x5F, 0x70, 0x72, 0x65,  0x73, 0x73, 0x00, 0x54,
-  0x65, 0x73, 0x74, 0x5F,  0x6D, 0x6F, 0x75, 0x73,  0x65, 0x5F, 0x70, 0x72,  0x65, 0x73, 0x73, 0x00,
-  0x6D, 0x6F, 0x75, 0x73,  0x65, 0x5F, 0x72, 0x65,  0x6C, 0x65, 0x61, 0x73,  0x65, 0x00, 0x54, 0x65,
-  0x73, 0x74, 0x5F, 0x6D,  0x6F, 0x75, 0x73, 0x65,  0x5F, 0x72, 0x65, 0x6C,  0x65, 0x61, 0x73, 0x65,
-  0x00, 0x72, 0x65, 0x6E,  0x64, 0x65, 0x72, 0x00,  0x54, 0x65, 0x73, 0x74,  0x5F, 0x72, 0x65, 0x6E,
-  0x64, 0x65, 0x72, 0x00,  0x72, 0x65, 0x73, 0x65,  0x74, 0x00, 0x54, 0x65,  0x73, 0x74, 0x5F, 0x72,
-  0x65, 0x73, 0x65, 0x74,  0x00, 0x72, 0x61, 0x74,  0x65, 0x00, 0x54, 0x65,  0x73, 0x74, 0x5F, 0x67,
-  0x65, 0x74, 0x5F, 0x72,  0x61, 0x74, 0x65, 0x00,  0x74, 0x72, 0x61, 0x63,  0x65, 0x00, 0x54, 0x65,
-  0x73, 0x74, 0x5F, 0x67,  0x65, 0x74, 0x5F, 0x74,  0x72, 0x61, 0x63, 0x65,  0x00, 0x70, 0x72, 0x69,
-  0x6E, 0x74, 0x00, 0x73,  0x00, 0x49, 0x4E, 0x46,  0x4F, 0x3A, 0x20, 0x00,  0x65, 0x72, 0x72, 0x6F,
-  0x72, 0x00, 0x45, 0x52,  0x52, 0x4F, 0x52, 0x3A,  0x20, 0x00, 0x96, 0x04,  0x00, 0x08, 0x00, 0x08,
-  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x00, 0x4E,  0x1D, 0x96, 0x02, 0x00,  0x08, 0x00, 0x1C, 0x96,
-  0x04, 0x00, 0x08, 0x02,  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x03,  0x4E, 0x4F, 0x96, 0x02,
-  0x00, 0x08, 0x00, 0x1C,  0x96, 0x07, 0x00, 0x08,  0x04, 0x07, 0x00, 0x00,  0x00, 0x00, 0x43, 0x4F,
-  0x96, 0x02, 0x00, 0x08,  0x00, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x04, 0x4E,  0x96, 0x04, 0x00, 0x08,
-  0x05, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x06, 0x4E, 0x4F, 0x96,  0x04, 0x00, 0x08, 0x07,
-  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x07,  0x4E, 0x1D, 0x96, 0x02,  0x00, 0x08, 0x07, 0x1C,
+  0x53, 0x6F, 0x63, 0x6B,  0x65, 0x74, 0x00, 0x67,  0x65, 0x74, 0x43, 0x6F,  0x6E, 0x6E, 0x65, 0x63,
+  0x74, 0x69, 0x6F, 0x6E,  0x00, 0x53, 0x6F, 0x63,  0x6B, 0x65, 0x74, 0x5F,  0x67, 0x65, 0x74, 0x43,
+  0x6F, 0x6E, 0x6E, 0x65,  0x63, 0x74, 0x69, 0x6F,  0x6E, 0x00, 0x72, 0x65,  0x63, 0x65, 0x69, 0x76,
+  0x65, 0x00, 0x53, 0x6F,  0x63, 0x6B, 0x65, 0x74,  0x5F, 0x72, 0x65, 0x63,  0x65, 0x69, 0x76, 0x65,
+  0x00, 0x53, 0x6F, 0x63,  0x6B, 0x65, 0x74, 0x5F,  0x73, 0x65, 0x6E, 0x64,  0x00, 0x53, 0x6F, 0x63,
+  0x6B, 0x65, 0x74, 0x5F,  0x63, 0x6C, 0x6F, 0x73,  0x65, 0x00, 0x54, 0x65,  0x73, 0x74, 0x00, 0x61,
+  0x64, 0x76, 0x61, 0x6E,  0x63, 0x65, 0x00, 0x54,  0x65, 0x73, 0x74, 0x5F,  0x61, 0x64, 0x76, 0x61,
+  0x6E, 0x63, 0x65, 0x00,  0x6D, 0x6F, 0x75, 0x73,  0x65, 0x5F, 0x6D, 0x6F,  0x76, 0x65, 0x00, 0x54,
+  0x65, 0x73, 0x74, 0x5F,  0x6D, 0x6F, 0x75, 0x73,  0x65, 0x5F, 0x6D, 0x6F,  0x76, 0x65, 0x00, 0x6D,
+  0x6F, 0x75, 0x73, 0x65,  0x5F, 0x70, 0x72, 0x65,  0x73, 0x73, 0x00, 0x54,  0x65, 0x73, 0x74, 0x5F,
+  0x6D, 0x6F, 0x75, 0x73,  0x65, 0x5F, 0x70, 0x72,  0x65, 0x73, 0x73, 0x00,  0x6D, 0x6F, 0x75, 0x73,
+  0x65, 0x5F, 0x72, 0x65,  0x6C, 0x65, 0x61, 0x73,  0x65, 0x00, 0x54, 0x65,  0x73, 0x74, 0x5F, 0x6D,
+  0x6F, 0x75, 0x73, 0x65,  0x5F, 0x72, 0x65, 0x6C,  0x65, 0x61, 0x73, 0x65,  0x00, 0x72, 0x65, 0x6E,
+  0x64, 0x65, 0x72, 0x00,  0x54, 0x65, 0x73, 0x74,  0x5F, 0x72, 0x65, 0x6E,  0x64, 0x65, 0x72, 0x00,
+  0x72, 0x65, 0x73, 0x65,  0x74, 0x00, 0x54, 0x65,  0x73, 0x74, 0x5F, 0x72,  0x65, 0x73, 0x65, 0x74,
+  0x00, 0x72, 0x61, 0x74,  0x65, 0x00, 0x54, 0x65,  0x73, 0x74, 0x5F, 0x67,  0x65, 0x74, 0x5F, 0x72,
+  0x61, 0x74, 0x65, 0x00,  0x74, 0x72, 0x61, 0x63,  0x65, 0x00, 0x54, 0x65,  0x73, 0x74, 0x5F, 0x67,
+  0x65, 0x74, 0x5F, 0x74,  0x72, 0x61, 0x63, 0x65,  0x00, 0x70, 0x72, 0x69,  0x6E, 0x74, 0x00, 0x73,
+  0x00, 0x49, 0x4E, 0x46,  0x4F, 0x3A, 0x20, 0x00,  0x65, 0x72, 0x72, 0x6F,  0x72, 0x00, 0x45, 0x52,
+  0x52, 0x4F, 0x52, 0x3A,  0x20, 0x00, 0x96, 0x04,  0x00, 0x08, 0x00, 0x08,  0x01, 0x1C, 0x96, 0x02,
+  0x00, 0x08, 0x00, 0x4E,  0x1D, 0x96, 0x02, 0x00,  0x08, 0x00, 0x1C, 0x96,  0x04, 0x00, 0x08, 0x02,
+  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x03,  0x4E, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x00, 0x1C,
   0x96, 0x07, 0x00, 0x08,  0x04, 0x07, 0x00, 0x00,  0x00, 0x00, 0x43, 0x4F,  0x96, 0x02, 0x00, 0x08,
-  0x07, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x04, 0x4E,  0x96, 0x04, 0x00, 0x08,  0x08, 0x08, 0x01, 0x1C,
-  0x96, 0x02, 0x00, 0x08,  0x09, 0x4E, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x07,  0x1C, 0x96, 0x02, 0x00,
-  0x08, 0x04, 0x4E, 0x96,  0x04, 0x00, 0x08, 0x0A,  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x0B,
-  0x4E, 0x4F, 0x96, 0x04,  0x00, 0x08, 0x0C, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x0C, 0x4E,
-  0x1D, 0x96, 0x02, 0x00,  0x08, 0x0C, 0x1C, 0x96,  0x07, 0x00, 0x08, 0x04,  0x07, 0x00, 0x00, 0x00,
-  0x00, 0x43, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x0C,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x04, 0x4E, 0x96,
-  0x04, 0x00, 0x08, 0x0D,  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x0E,  0x4E, 0x4F, 0x96, 0x03,
-  0x00, 0x02, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x10, 0x4E, 0x96,  0x09, 0x00, 0x08, 0x0F,
-  0x07, 0x03, 0x00, 0x00,  0x00, 0x08, 0x0C, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x04, 0x4E, 0x96, 0x02,
-  0x00, 0x08, 0x11, 0x52,  0x17, 0x96, 0x09, 0x00,  0x08, 0x12, 0x07, 0x00,  0x00, 0x00, 0x00, 0x08,
-  0x13, 0x40, 0x1D, 0x96,  0x02, 0x00, 0x08, 0x12,  0x1C, 0x96, 0x07, 0x00,  0x08, 0x04, 0x07, 0x00,
-  0x00, 0x00, 0x00, 0x43,  0x4F, 0x96, 0x03, 0x00,  0x02, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,
-  0x15, 0x4E, 0x96, 0x09,  0x00, 0x08, 0x14, 0x07,  0x03, 0x00, 0x00, 0x00,  0x08, 0x12, 0x1C, 0x96,
-  0x02, 0x00, 0x08, 0x04,  0x4E, 0x96, 0x02, 0x00,  0x08, 0x11, 0x52, 0x17,  0x96, 0x03, 0x00, 0x02,
-  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x17,  0x4E, 0x96, 0x09, 0x00,  0x08, 0x16, 0x07, 0x03,
-  0x00, 0x00, 0x00, 0x08,  0x12, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x04, 0x4E,  0x96, 0x02, 0x00, 0x08,
-  0x11, 0x52, 0x17, 0x96,  0x03, 0x00, 0x02, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x19, 0x4E,
-  0x96, 0x09, 0x00, 0x08,  0x18, 0x07, 0x03, 0x00,  0x00, 0x00, 0x08, 0x12,  0x1C, 0x96, 0x02, 0x00,
-  0x08, 0x04, 0x4E, 0x96,  0x02, 0x00, 0x08, 0x11,  0x52, 0x17, 0x96, 0x03,  0x00, 0x02, 0x08, 0x01,
-  0x1C, 0x96, 0x02, 0x00,  0x08, 0x1B, 0x4E, 0x96,  0x09, 0x00, 0x08, 0x1A,  0x07, 0x03, 0x00, 0x00,
+  0x00, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x04, 0x4E,  0x96, 0x04, 0x00, 0x08,  0x05, 0x08, 0x01, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0x06, 0x4E, 0x4F, 0x96,  0x04, 0x00, 0x08, 0x07,  0x08, 0x01, 0x1C, 0x96,
+  0x02, 0x00, 0x08, 0x07,  0x4E, 0x1D, 0x96, 0x02,  0x00, 0x08, 0x07, 0x1C,  0x96, 0x07, 0x00, 0x08,
+  0x04, 0x07, 0x00, 0x00,  0x00, 0x00, 0x43, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x07, 0x1C, 0x96, 0x02,
+  0x00, 0x08, 0x04, 0x4E,  0x96, 0x04, 0x00, 0x08,  0x08, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,
+  0x09, 0x4E, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x07,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x04, 0x4E, 0x96,
+  0x04, 0x00, 0x08, 0x0A,  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x0B,  0x4E, 0x4F, 0x96, 0x04,
+  0x00, 0x08, 0x0C, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x0C, 0x4E,  0x1D, 0x96, 0x02, 0x00,
+  0x08, 0x0C, 0x1C, 0x96,  0x07, 0x00, 0x08, 0x04,  0x07, 0x00, 0x00, 0x00,  0x00, 0x43, 0x4F, 0x96,
+  0x02, 0x00, 0x08, 0x0C,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x04, 0x4E, 0x96,  0x04, 0x00, 0x08, 0x0D,
+  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x0E,  0x4E, 0x4F, 0x96, 0x03,  0x00, 0x02, 0x08, 0x01,
+  0x1C, 0x96, 0x02, 0x00,  0x08, 0x10, 0x4E, 0x96,  0x09, 0x00, 0x08, 0x0F,  0x07, 0x03, 0x00, 0x00,
+  0x00, 0x08, 0x0C, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x04, 0x4E, 0x96, 0x02,  0x00, 0x08, 0x11, 0x52,
+  0x17, 0x96, 0x09, 0x00,  0x08, 0x12, 0x07, 0x00,  0x00, 0x00, 0x00, 0x08,  0x13, 0x40, 0x1D, 0x96,
+  0x02, 0x00, 0x08, 0x12,  0x1C, 0x96, 0x07, 0x00,  0x08, 0x04, 0x07, 0x00,  0x00, 0x00, 0x00, 0x43,
+  0x4F, 0x96, 0x03, 0x00,  0x02, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x15, 0x4E, 0x96, 0x09,
+  0x00, 0x08, 0x14, 0x07,  0x03, 0x00, 0x00, 0x00,  0x08, 0x12, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x04,
+  0x4E, 0x96, 0x02, 0x00,  0x08, 0x11, 0x52, 0x17,  0x96, 0x03, 0x00, 0x02,  0x08, 0x01, 0x1C, 0x96,
+  0x02, 0x00, 0x08, 0x17,  0x4E, 0x96, 0x09, 0x00,  0x08, 0x16, 0x07, 0x03,  0x00, 0x00, 0x00, 0x08,
+  0x12, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x04, 0x4E,  0x96, 0x02, 0x00, 0x08,  0x11, 0x52, 0x17, 0x96,
+  0x03, 0x00, 0x02, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x19, 0x4E,  0x96, 0x09, 0x00, 0x08,
+  0x18, 0x07, 0x03, 0x00,  0x00, 0x00, 0x08, 0x12,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x04, 0x4E, 0x96,
+  0x02, 0x00, 0x08, 0x11,  0x52, 0x17, 0x96, 0x03,  0x00, 0x02, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,
+  0x08, 0x1B, 0x4E, 0x96,  0x09, 0x00, 0x08, 0x1A,  0x07, 0x03, 0x00, 0x00,  0x00, 0x08, 0x12, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0x04, 0x4E, 0x96, 0x02,  0x00, 0x08, 0x11, 0x52,  0x17, 0x96, 0x02, 0x00,
+  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x1E,  0x4E, 0x96, 0x02, 0x00,  0x08, 0x01, 0x1C, 0x96,
+  0x02, 0x00, 0x08, 0x1D,  0x4E, 0x96, 0x09, 0x00,  0x08, 0x1C, 0x07, 0x03,  0x00, 0x00, 0x00, 0x08,
+  0x12, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x04, 0x4E,  0x96, 0x02, 0x00, 0x08,  0x11, 0x52, 0x17, 0x96,
+  0x02, 0x00, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x21, 0x4E, 0x96,  0x02, 0x00, 0x08, 0x01,
+  0x1C, 0x96, 0x02, 0x00,  0x08, 0x20, 0x4E, 0x96,  0x09, 0x00, 0x08, 0x1F,  0x07, 0x03, 0x00, 0x00,
   0x00, 0x08, 0x12, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x04, 0x4E, 0x96, 0x02,  0x00, 0x08, 0x11, 0x52,
-  0x17, 0x96, 0x02, 0x00,  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x1E,  0x4E, 0x96, 0x02, 0x00,
-  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x1D,  0x4E, 0x96, 0x09, 0x00,  0x08, 0x1C, 0x07, 0x03,
-  0x00, 0x00, 0x00, 0x08,  0x12, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x04, 0x4E,  0x96, 0x02, 0x00, 0x08,
-  0x11, 0x52, 0x17, 0x96,  0x02, 0x00, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x21, 0x4E, 0x96,
-  0x02, 0x00, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x20, 0x4E, 0x96,  0x09, 0x00, 0x08, 0x1F,
-  0x07, 0x03, 0x00, 0x00,  0x00, 0x08, 0x12, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x04, 0x4E, 0x96, 0x02,
-  0x00, 0x08, 0x11, 0x52,  0x17, 0x96, 0x02, 0x00,  0x08, 0x12, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x04,
-  0x4E, 0x96, 0x04, 0x00,  0x08, 0x22, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x23, 0x4E, 0x4F,
-  0x96, 0x02, 0x00, 0x08,  0x12, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x04, 0x4E,  0x96, 0x04, 0x00, 0x08,
-  0x24, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x25, 0x4E, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x12,
-  0x1C, 0x96, 0x02, 0x00,  0x08, 0x04, 0x4E, 0x96,  0x04, 0x00, 0x08, 0x26,  0x08, 0x01, 0x1C, 0x96,
-  0x02, 0x00, 0x08, 0x27,  0x4E, 0x4F, 0x96, 0x04,  0x00, 0x08, 0x28, 0x08,  0x01, 0x1C, 0x96, 0x02,
-  0x00, 0x08, 0x28, 0x4E,  0x1D, 0x96, 0x02, 0x00,  0x08, 0x28, 0x1C, 0x96,  0x07, 0x00, 0x08, 0x04,
-  0x07, 0x00, 0x00, 0x00,  0x00, 0x43, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x28,  0x1C, 0x96, 0x02, 0x00,
-  0x08, 0x04, 0x4E, 0x96,  0x04, 0x00, 0x08, 0x29,  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x2A,
-  0x4E, 0x4F, 0x96, 0x04,  0x00, 0x08, 0x2B, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x2B, 0x4E,
-  0x1D, 0x96, 0x02, 0x00,  0x08, 0x2B, 0x1C, 0x96,  0x07, 0x00, 0x08, 0x04,  0x07, 0x00, 0x00, 0x00,
-  0x00, 0x43, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x2B,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x04, 0x4E, 0x96,
-  0x04, 0x00, 0x08, 0x2C,  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x2D,  0x4E, 0x4F, 0x96, 0x02,
-  0x00, 0x08, 0x2B, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x04, 0x4E, 0x96, 0x04,  0x00, 0x08, 0x2E, 0x08,
-  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x2F, 0x4E,  0x4F, 0x96, 0x02, 0x00,  0x08, 0x2B, 0x1C, 0x96,
-  0x02, 0x00, 0x08, 0x04,  0x4E, 0x96, 0x04, 0x00,  0x08, 0x30, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,
-  0x08, 0x31, 0x4E, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x2B, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x04, 0x4E,
-  0x96, 0x04, 0x00, 0x08,  0x32, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x33, 0x4E, 0x4F, 0x96,
-  0x02, 0x00, 0x08, 0x2B,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x04, 0x4E, 0x96,  0x04, 0x00, 0x08, 0x34,
-  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x35,  0x4E, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x2B, 0x1C,
-  0x96, 0x02, 0x00, 0x08,  0x04, 0x4E, 0x96, 0x04,  0x00, 0x08, 0x36, 0x08,  0x01, 0x1C, 0x96, 0x02,
-  0x00, 0x08, 0x37, 0x4E,  0x4F, 0x96, 0x03, 0x00,  0x02, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,
-  0x39, 0x4E, 0x96, 0x09,  0x00, 0x08, 0x38, 0x07,  0x03, 0x00, 0x00, 0x00,  0x08, 0x2B, 0x1C, 0x96,
-  0x02, 0x00, 0x08, 0x04,  0x4E, 0x96, 0x02, 0x00,  0x08, 0x11, 0x52, 0x17,  0x96, 0x03, 0x00, 0x02,
-  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x3B,  0x4E, 0x96, 0x09, 0x00,  0x08, 0x3A, 0x07, 0x03,
-  0x00, 0x00, 0x00, 0x08,  0x2B, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x04, 0x4E,  0x96, 0x02, 0x00, 0x08,
-  0x11, 0x52, 0x17, 0x96,  0x02, 0x00, 0x08, 0x3C,  0x8E, 0x0B, 0x00, 0x00,  0x01, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x73, 0x00,  0x27, 0x00, 0x96, 0x02,  0x00, 0x08, 0x3D, 0x1C,  0x12, 0x9D, 0x02, 0x00,
-  0x1B, 0x00, 0x96, 0x04,  0x00, 0x08, 0x3E, 0x08,  0x3D, 0x1C, 0x47, 0x96,  0x07, 0x00, 0x07, 0x01,
-  0x00, 0x00, 0x00, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x3C, 0x52,  0x17, 0x1D, 0x96, 0x02,
-  0x00, 0x08, 0x3F, 0x8E,  0x0B, 0x00, 0x00, 0x01,  0x00, 0x00, 0x00, 0x00,  0x00, 0x73, 0x00, 0x27,
-  0x00, 0x96, 0x02, 0x00,  0x08, 0x3D, 0x1C, 0x12,  0x9D, 0x02, 0x00, 0x1B,  0x00, 0x96, 0x04, 0x00,
-  0x08, 0x40, 0x08, 0x3D,  0x1C, 0x47, 0x96, 0x07,  0x00, 0x07, 0x01, 0x00,  0x00, 0x00, 0x08, 0x01,
-  0x1C, 0x96, 0x02, 0x00,  0x08, 0x3C, 0x52, 0x17,  0x1D, 0x00
+  0x17, 0x96, 0x02, 0x00,  0x08, 0x12, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x04,  0x4E, 0x96, 0x04, 0x00,
+  0x08, 0x22, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x23, 0x4E, 0x4F,  0x96, 0x02, 0x00, 0x08,
+  0x12, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x04, 0x4E,  0x96, 0x04, 0x00, 0x08,  0x24, 0x08, 0x01, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0x25, 0x4E, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x12,  0x1C, 0x96, 0x02, 0x00,
+  0x08, 0x04, 0x4E, 0x96,  0x04, 0x00, 0x08, 0x26,  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x27,
+  0x4E, 0x4F, 0x96, 0x04,  0x00, 0x08, 0x28, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x28, 0x4E,
+  0x1D, 0x96, 0x02, 0x00,  0x08, 0x28, 0x1C, 0x96,  0x07, 0x00, 0x08, 0x04,  0x07, 0x00, 0x00, 0x00,
+  0x00, 0x43, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x28,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x04, 0x4E, 0x96,
+  0x04, 0x00, 0x08, 0x29,  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x2A,  0x4E, 0x4F, 0x96, 0x02,
+  0x00, 0x08, 0x28, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x04, 0x4E, 0x96, 0x04,  0x00, 0x08, 0x2B, 0x08,
+  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x2C, 0x4E,  0x4F, 0x96, 0x02, 0x00,  0x08, 0x28, 0x1C, 0x96,
+  0x02, 0x00, 0x08, 0x04,  0x4E, 0x96, 0x04, 0x00,  0x08, 0x24, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,
+  0x08, 0x2D, 0x4E, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x28, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x04, 0x4E,
+  0x96, 0x04, 0x00, 0x08,  0x26, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x2E, 0x4E, 0x4F, 0x96,
+  0x04, 0x00, 0x08, 0x2F,  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x2F,  0x4E, 0x1D, 0x96, 0x02,
+  0x00, 0x08, 0x2F, 0x1C,  0x96, 0x07, 0x00, 0x08,  0x04, 0x07, 0x00, 0x00,  0x00, 0x00, 0x43, 0x4F,
+  0x96, 0x02, 0x00, 0x08,  0x2F, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x04, 0x4E,  0x96, 0x04, 0x00, 0x08,
+  0x30, 0x08, 0x01, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x31, 0x4E, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x2F,
+  0x1C, 0x96, 0x02, 0x00,  0x08, 0x04, 0x4E, 0x96,  0x04, 0x00, 0x08, 0x32,  0x08, 0x01, 0x1C, 0x96,
+  0x02, 0x00, 0x08, 0x33,  0x4E, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x2F, 0x1C,  0x96, 0x02, 0x00, 0x08,
+  0x04, 0x4E, 0x96, 0x04,  0x00, 0x08, 0x34, 0x08,  0x01, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x35, 0x4E,
+  0x4F, 0x96, 0x02, 0x00,  0x08, 0x2F, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x04,  0x4E, 0x96, 0x04, 0x00,
+  0x08, 0x36, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x37, 0x4E, 0x4F,  0x96, 0x02, 0x00, 0x08,
+  0x2F, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x04, 0x4E,  0x96, 0x04, 0x00, 0x08,  0x38, 0x08, 0x01, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0x39, 0x4E, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x2F,  0x1C, 0x96, 0x02, 0x00,
+  0x08, 0x04, 0x4E, 0x96,  0x04, 0x00, 0x08, 0x3A,  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x3B,
+  0x4E, 0x4F, 0x96, 0x03,  0x00, 0x02, 0x08, 0x01,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x3D, 0x4E, 0x96,
+  0x09, 0x00, 0x08, 0x3C,  0x07, 0x03, 0x00, 0x00,  0x00, 0x08, 0x2F, 0x1C,  0x96, 0x02, 0x00, 0x08,
+  0x04, 0x4E, 0x96, 0x02,  0x00, 0x08, 0x11, 0x52,  0x17, 0x96, 0x03, 0x00,  0x02, 0x08, 0x01, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0x3F, 0x4E, 0x96, 0x09,  0x00, 0x08, 0x3E, 0x07,  0x03, 0x00, 0x00, 0x00,
+  0x08, 0x2F, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x04,  0x4E, 0x96, 0x02, 0x00,  0x08, 0x11, 0x52, 0x17,
+  0x96, 0x02, 0x00, 0x08,  0x40, 0x8E, 0x0B, 0x00,  0x00, 0x01, 0x00, 0x00,  0x00, 0x00, 0x00, 0x73,
+  0x00, 0x27, 0x00, 0x96,  0x02, 0x00, 0x08, 0x41,  0x1C, 0x12, 0x9D, 0x02,  0x00, 0x1B, 0x00, 0x96,
+  0x04, 0x00, 0x08, 0x42,  0x08, 0x41, 0x1C, 0x47,  0x96, 0x07, 0x00, 0x07,  0x01, 0x00, 0x00, 0x00,
+  0x08, 0x01, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x40,  0x52, 0x17, 0x1D, 0x96,  0x02, 0x00, 0x08, 0x43,
+  0x8E, 0x0B, 0x00, 0x00,  0x01, 0x00, 0x00, 0x00,  0x00, 0x00, 0x73, 0x00,  0x27, 0x00, 0x96, 0x02,
+  0x00, 0x08, 0x41, 0x1C,  0x12, 0x9D, 0x02, 0x00,  0x1B, 0x00, 0x96, 0x04,  0x00, 0x08, 0x44, 0x08,
+  0x41, 0x1C, 0x47, 0x96,  0x07, 0x00, 0x07, 0x01,  0x00, 0x00, 0x00, 0x08,  0x01, 0x1C, 0x96, 0x02,
+  0x00, 0x08, 0x40, 0x52,  0x17, 0x1D, 0x00
 };
 
diff --git a/test/swfdec_test_socket.c b/test/swfdec_test_socket.c
index 7cf921c..036bd7e 100644
--- a/test/swfdec_test_socket.c
+++ b/test/swfdec_test_socket.c
@@ -24,6 +24,7 @@
 #include <libsoup/soup-address.h>
 
 #include "swfdec_test_socket.h"
+#include "swfdec_test_buffer.h"
 #include "swfdec_test_function.h"
 
 static void
@@ -62,6 +63,9 @@ swfdec_test_socket_dispose (GObject *object)
     g_main_context_unref (sock->context);
     sock->context = NULL;
   }
+  g_slist_foreach (sock->connections, (GFunc) g_object_unref, NULL);
+  g_slist_free (sock->connections);
+  sock->connections = NULL;
 
   G_OBJECT_CLASS (swfdec_test_socket_parent_class)->dispose (object);
 }
@@ -82,53 +86,151 @@ swfdec_test_socket_init (SwfdecTestSocket *sock)
 
 /*** AS CODE ***/
 
-SWFDEC_TEST_FUNCTION ("Socket_process", swfdec_test_socket_process, 0)
-void
-swfdec_test_socket_process (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
-    SwfdecAsValue *argv, SwfdecAsValue *retval)
-{
-  SwfdecTestSocket *sock;
-  
-  SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_SOCKET, &sock, "");
+#define swfdec_test_socket_process(sock) do { \
+  g_usleep (1000); \
+} while (g_main_context_iteration ((sock)->context, FALSE))
 
-  while (g_main_context_iteration (sock->context, FALSE));
+static void
+swfdec_test_socket_new_connection (SoupSocket *server, SoupSocket *conn, SwfdecTestSocket *sock)
+{
+  g_object_ref (conn);
+  sock->connections = g_slist_append (sock->connections, conn);
 }
 
-static void swfdec_test_socket_attach (SwfdecTestSocket *sock, SoupSocket *ssock);
-
 static void
-swfdec_test_socket_new_connection (SoupSocket *server, SoupSocket *conn, SwfdecTestSocket *sock)
+swfdec_test_socket_attach (SwfdecTestSocket *sock, SoupSocket *ssock)
 {
-  SwfdecAsContext *context = SWFDEC_AS_OBJECT (sock)->context;
-  SwfdecAsValue val;
+  g_assert (sock->socket == NULL);
+
+  sock->socket = ssock;
+  g_signal_connect (ssock, "new-connection", 
+      G_CALLBACK (swfdec_test_socket_new_connection), sock);
+}
+
+SWFDEC_TEST_FUNCTION ("Socket_getConnection", swfdec_test_socket_getConnection, 0)
+void
+swfdec_test_socket_getConnection (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
+    SwfdecAsValue *argv, SwfdecAsValue *retval)
+{
+  SwfdecTestSocket *sock;
   SwfdecAsObject *new;
+  SwfdecAsValue val;
 
-  if (!swfdec_as_context_use_mem (context, sizeof (SwfdecTestSocket)))
+  SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_SOCKET, &sock, "");
+
+  if (!sock->listening) {
+    swfdec_test_throw (cx, "only server sockets may call getConnection");
+    return;
+  }
+  swfdec_test_socket_process (sock);
+  if (sock->connections == NULL) {
+    SWFDEC_AS_VALUE_SET_NULL (retval);
+    return;
+  }
+
+  if (!swfdec_as_context_use_mem (cx, sizeof (SwfdecTestSocket)))
     return;
 
   new = g_object_new (SWFDEC_TYPE_TEST_SOCKET, NULL);
-  swfdec_as_object_add (new, context, sizeof (SwfdecTestSocket));
-  swfdec_as_object_get_variable (context->global, 
-      swfdec_as_context_get_string (context, "Socket"), &val);
+  swfdec_as_object_add (new, cx, sizeof (SwfdecTestSocket));
+  swfdec_as_object_get_variable (cx->global, 
+      swfdec_as_context_get_string (cx, "Socket"), &val);
   if (SWFDEC_AS_VALUE_IS_OBJECT (&val))
     swfdec_as_object_set_constructor (new, SWFDEC_AS_VALUE_GET_OBJECT (&val));
 
-  g_object_ref (conn);
-  swfdec_test_socket_attach (SWFDEC_TEST_SOCKET (new), conn);
-  SWFDEC_AS_VALUE_SET_OBJECT (&val, new);
-  swfdec_as_object_call (SWFDEC_AS_OBJECT (sock), 
-      swfdec_as_context_get_string (context, "onNewConnection"),
-      1, &val, NULL);
+  swfdec_test_socket_attach (SWFDEC_TEST_SOCKET (new), sock->connections->data);
+  sock->connections = g_slist_remove (sock->connections, sock->connections->data);
+  SWFDEC_AS_VALUE_SET_OBJECT (retval, new);
 }
 
-static void
-swfdec_test_socket_attach (SwfdecTestSocket *sock, SoupSocket *ssock)
+SWFDEC_TEST_FUNCTION ("Socket_send", swfdec_test_socket_send, 0)
+void
+swfdec_test_socket_send (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
+    SwfdecAsValue *argv, SwfdecAsValue *retval)
 {
-  g_assert (sock->socket == NULL);
+  SwfdecTestSocket *sock;
+  SwfdecBuffer *buffer;
+  GError *error = NULL;
+  gsize written;
 
-  sock->socket = ssock;
-  g_signal_connect (ssock, "new-connection", 
-      G_CALLBACK (swfdec_test_socket_new_connection), sock);
+  SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_SOCKET, &sock, "");
+
+  if (sock->listening) {
+    swfdec_test_throw (cx, "server sockets may not call send");
+    return;
+  }
+  swfdec_test_socket_process (sock);
+  buffer = swfdec_test_buffer_from_args (cx, argc, argv);
+  if (soup_socket_write (sock->socket, buffer->data, buffer->length, &written,
+	NULL, &error) != SOUP_SOCKET_OK) {
+    swfdec_test_throw (cx, "%s", error->message);
+    g_error_free (error);
+  } else if (buffer->length != written) {
+    swfdec_test_throw (cx, "only wrote %u bytes of %u", written, buffer->length);
+  }
+  swfdec_buffer_unref (buffer);
+  swfdec_test_socket_process (sock);
+}
+
+SWFDEC_TEST_FUNCTION ("Socket_receive", swfdec_test_socket_receive, 0)
+void
+swfdec_test_socket_receive (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
+    SwfdecAsValue *argv, SwfdecAsValue *retval)
+{
+  SwfdecTestSocket *sock;
+  SwfdecBuffer *buffer;
+  GError *error = NULL;
+  gsize written;
+  guint len;
+
+  SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_SOCKET, &sock, "|i", &len);
+
+  if (sock->listening) {
+    swfdec_test_throw (cx, "server sockets may not call receive");
+    return;
+  }
+  swfdec_test_socket_process (sock);
+  if (len > 0) {
+    buffer = swfdec_buffer_new_and_alloc (len);
+    if (soup_socket_read (sock->socket, buffer->data, buffer->length, &len,
+	  NULL, &error) != SOUP_SOCKET_OK) {
+      swfdec_test_throw (cx, "%s", error->message);
+      g_error_free (error);
+      swfdec_buffer_unref (buffer);
+      return;
+    } else if (buffer->length != len) {
+      swfdec_test_throw (cx, "only read %u bytes of %u", written, buffer->length);
+      swfdec_buffer_unref (buffer);
+      return;
+    }
+  } else {
+    SwfdecBufferQueue *queue = swfdec_buffer_queue_new ();
+    SoupSocketIOStatus status = SOUP_SOCKET_OK;
+    while (status == SOUP_SOCKET_OK) {
+      buffer = swfdec_buffer_new_and_alloc (128);
+      status = soup_socket_read (sock->socket, buffer->data, 128, &
+	  buffer->length, NULL, &error);
+      if (status != SOUP_SOCKET_OK && status != SOUP_SOCKET_WOULD_BLOCK) {
+	swfdec_test_throw (cx, "%s", error->message);
+	g_error_free (error);
+	swfdec_buffer_unref (buffer);
+	swfdec_buffer_queue_unref (queue);
+	return;
+      }
+      swfdec_buffer_queue_push (queue, buffer);
+    }
+    buffer = swfdec_buffer_queue_pull (queue, swfdec_buffer_queue_get_depth (queue));
+    swfdec_buffer_queue_unref (queue);
+  }
+  SWFDEC_AS_VALUE_SET_OBJECT (retval, swfdec_test_buffer_new (cx, buffer));
+}
+
+SWFDEC_TEST_FUNCTION ("Socket_close", swfdec_test_socket_close, 0)
+void
+swfdec_test_socket_close (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
+    SwfdecAsValue *argv, SwfdecAsValue *retval)
+{
+  swfdec_test_throw (cx, "implement");
 }
 
 SWFDEC_TEST_FUNCTION ("Socket", swfdec_test_socket_create, swfdec_test_socket_get_type)
@@ -137,11 +239,16 @@ swfdec_test_socket_create (SwfdecAsContext *cx, SwfdecAsObject *object, guint ar
     SwfdecAsValue *argv, SwfdecAsValue *retval)
 {
   SwfdecTestSocket *sock;
+  SoupSocket *ssock;
   int port;
   SoupAddress *addr;
 
   SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_SOCKET, &sock, "i", &port);
 
+  if (!swfdec_as_context_is_constructing (cx))
+    return;
+
+  sock->listening = TRUE;
   /* FIXME: throw here? */
   if (port < 1024 || port >= 65535) {
     swfdec_test_throw (cx, "invalid port %d", port);
@@ -149,13 +256,14 @@ swfdec_test_socket_create (SwfdecAsContext *cx, SwfdecAsObject *object, guint ar
   }
 
   addr = soup_address_new_any (SOUP_ADDRESS_FAMILY_IPV4, port);
-  sock->socket = soup_socket_new (
+  ssock = soup_socket_new (
       SOUP_SOCKET_FLAG_NONBLOCKING, TRUE, 
       SOUP_SOCKET_ASYNC_CONTEXT, sock->context,
       SOUP_SOCKET_LOCAL_ADDRESS, addr,
       NULL);
   g_object_unref (addr);
-  if (!soup_socket_listen (sock->socket)) {
+  swfdec_test_socket_attach (sock, ssock);
+  if (!soup_socket_listen (ssock)) {
     swfdec_test_throw (cx, "failed to listen");
     return;
   }
diff --git a/test/swfdec_test_socket.h b/test/swfdec_test_socket.h
index c33fb3d..95a51de 100644
--- a/test/swfdec_test_socket.h
+++ b/test/swfdec_test_socket.h
@@ -42,6 +42,11 @@ struct _SwfdecTestSocket
 
   GMainContext *	context;	/* the main context we're running in */
   SoupSocket *		socket;		/* the socket we're servicing */
+  gboolean		listening;	/* TRUE if it's a listening socket */
+  gboolean		connected;	/* TRUE if the connection is still alive (valid for both types) */
+
+  /* for listening sockets */
+  GSList *		connections;	/* connections that still need to be given out */
 };
 
 struct _SwfdecTestSocketClass
commit 9779b43e3900003d3154938e1be900c9b8302482
Author: Benjamin Otte <otte at gnome.org>
Date:   Sun Feb 3 21:29:20 2008 +0100

    add swfdec_test_buffer_from_args()

diff --git a/test/swfdec_test_buffer.c b/test/swfdec_test_buffer.c
index e637298..e05869b 100644
--- a/test/swfdec_test_buffer.c
+++ b/test/swfdec_test_buffer.c
@@ -195,17 +195,13 @@ swfdec_test_buffer_load (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc
   SWFDEC_AS_VALUE_SET_OBJECT (retval, buffer);
 }
 
-SWFDEC_TEST_FUNCTION ("Buffer", swfdec_test_buffer_create, swfdec_test_buffer_get_type)
-void
-swfdec_test_buffer_create (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
-    SwfdecAsValue *argv, SwfdecAsValue *retval)
+SwfdecBuffer *
+swfdec_test_buffer_from_args (SwfdecAsContext *cx, guint argc, SwfdecAsValue *argv)
 {
   SwfdecBufferQueue *queue;
-  SwfdecTestBuffer *buffer;
+  SwfdecBuffer *buffer;
   guint i;
 
-  SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_BUFFER, &buffer, "");
-
   queue = swfdec_buffer_queue_new ();
   for (i = 0; i < argc; i++) {
     SwfdecBuffer *b = NULL;
@@ -228,10 +224,28 @@ swfdec_test_buffer_create (SwfdecAsContext *cx, SwfdecAsObject *object, guint ar
   }
   i = swfdec_buffer_queue_get_depth (queue);
   if (i) {
-    buffer->buffer = swfdec_buffer_queue_pull (queue, i);
+    buffer = swfdec_buffer_queue_pull (queue, i);
   } else {
-    buffer->buffer = swfdec_buffer_new ();
+    buffer = swfdec_buffer_new ();
   }
   swfdec_buffer_queue_unref (queue);
+
+  return buffer;
+}
+
+SWFDEC_TEST_FUNCTION ("Buffer", swfdec_test_buffer_create, swfdec_test_buffer_get_type)
+void
+swfdec_test_buffer_create (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
+    SwfdecAsValue *argv, SwfdecAsValue *retval)
+{
+  SwfdecTestBuffer *buffer;
+
+  SWFDEC_AS_CHECK (SWFDEC_TYPE_TEST_BUFFER, &buffer, "");
+
+  if (!swfdec_as_context_is_constructing (cx))
+    return;
+
+  buffer->buffer = swfdec_test_buffer_from_args (cx, argc, argv);
 }
 
+
diff --git a/test/swfdec_test_buffer.h b/test/swfdec_test_buffer.h
index d80a9f8..7e70f87 100644
--- a/test/swfdec_test_buffer.h
+++ b/test/swfdec_test_buffer.h
@@ -52,5 +52,9 @@ GType		swfdec_test_buffer_get_type	(void);
 SwfdecAsObject *swfdec_test_buffer_new		(SwfdecAsContext *	context,
 						 SwfdecBuffer *		buffer);
 
+SwfdecBuffer *	swfdec_test_buffer_from_args	(SwfdecAsContext *	cx,
+						 guint			argc,
+						 SwfdecAsValue *	argv);
+
 G_END_DECLS
 #endif
commit e44ef75c1357fe3e9d286755e572c83eb118bee3
Merge: df37812... 8769783...
Author: Benjamin Otte <otte at gnome.org>
Date:   Sun Feb 3 12:48:03 2008 +0100

    Merge commit 'origin/test' into test

commit df378127d76d216789bb76ef46b68b5ebe0b4118
Author: Benjamin Otte <otte at gnome.org>
Date:   Sun Feb 3 12:47:54 2008 +0100

    give absolute filenames to the plugin

diff --git a/test/swfdec_test_test.c b/test/swfdec_test_test.c
index 71b5c1e..e056be6 100644
--- a/test/swfdec_test_test.c
+++ b/test/swfdec_test_test.c
@@ -74,7 +74,14 @@ swfdec_test_test_load_plugin (SwfdecTestTest *test, const char *filename)
 {
   memset (&test->plugin, 0, sizeof (SwfdecTestPlugin));
   /* initialize test->plugin */
-  test->plugin.filename = g_strdup (filename);
+  /* FIXME: This assumes filenames - do we wanna allow http? */
+  if (g_path_is_absolute (filename)) {
+    test->plugin.filename = g_strdup (filename);
+  } else {
+    char *cur = g_get_current_dir ();
+    test->plugin.filename = g_build_filename (cur, filename, NULL);
+    g_free (cur);
+  }
   test->plugin.trace = swfdec_test_test_trace;
   test->plugin.quit = swfdec_test_test_quit;
   test->plugin.error = swfdec_test_test_error;
commit e13780c8c04faaa7128b1d7db682e2b6201b7280
Author: Benjamin Otte <otte at gnome.org>
Date:   Sun Feb 3 12:47:36 2008 +0100

    make sure callbacks aren't calling back into the script engine on dispose

diff --git a/test/swfdec_test_test.c b/test/swfdec_test_test.c
index 0d6bd56..71b5c1e 100644
--- a/test/swfdec_test_test.c
+++ b/test/swfdec_test_test.c
@@ -127,6 +127,9 @@ swfdec_test_test_dispose (GObject *object)
 {
   SwfdecTestTest *test = SWFDEC_TEST_TEST (object);
 
+  test->plugin_error = TRUE; /* set to avoid callbacks into the engine */
+  swfdec_test_test_unload_plugin (test);
+
   if (test->trace) {
     swfdec_buffer_queue_unref (test->trace);
     test->trace = NULL;
@@ -134,7 +137,6 @@ swfdec_test_test_dispose (GObject *object)
 
   g_free (test->filename);
   test->filename = NULL;
-  swfdec_test_test_unload_plugin (test);
 
   G_OBJECT_CLASS (swfdec_test_test_parent_class)->dispose (object);
 }
commit 9b27e26665e521b216f0666ee9d53aea431d9bf4
Author: Benjamin Otte <otte at gnome.org>
Date:   Sun Feb 3 12:46:48 2008 +0100

    advance (0) not useful anymore

diff --git a/test/trace/default.stas b/test/trace/default.stas
index 00b4b9a..5ddcddc 100644
--- a/test/trace/default.stas
+++ b/test/trace/default.stas
@@ -25,7 +25,7 @@ run_test = function (t, file) {
     var trace = Buffer.load (file + ".trace");
     t.advance (0);
     t.advance (Math.ceil (10000 / t.rate));
-    trace = t.trace.diff (trace);
+    trace = trace.diff (t.trace);
     if (trace) {
       error ("different trace output");
       Native.print (trace);
commit d2d0ac063aca6edc51820959579c276dd2aeea2c
Author: Benjamin Otte <otte at gnome.org>
Date:   Sun Feb 3 12:46:05 2008 +0100

    allow using an env var to set the player
    
    useful for make check

diff --git a/test/swfdec_test.c b/test/swfdec_test.c
index 0559c75..27fd554 100644
--- a/test/swfdec_test.c
+++ b/test/swfdec_test.c
@@ -107,6 +107,10 @@ main (int argc, char **argv)
     return EXIT_FAILURE;
   }
 
+  /* allow env vars instead of options - eases running make check with different settings */
+  if (swfdec_test_plugin_name == NULL)
+    swfdec_test_plugin_name = g_strdup (g_getenv ("SWFDEC_TEST_PLAYER"));
+
   script = load_script (script_filename);
   g_free (script_filename);
   if (script == NULL)


More information about the Swfdec-commits mailing list