[pure-lang-svn] SF.net SVN: pure-lang:[510] pure/trunk
Status: Beta
Brought to you by:
agraef
|
From: <ag...@us...> - 2008-08-15 10:41:33
|
Revision: 510
http://pure-lang.svn.sourceforge.net/pure-lang/?rev=510&view=rev
Author: agraef
Date: 2008-08-15 10:41:43 +0000 (Fri, 15 Aug 2008)
Log Message:
-----------
Add test for integer marshalling.
Modified Paths:
--------------
pure/trunk/ChangeLog
Added Paths:
-----------
pure/trunk/test/test018.log
pure/trunk/test/test018.pure
Modified: pure/trunk/ChangeLog
===================================================================
--- pure/trunk/ChangeLog 2008-08-15 10:31:59 UTC (rev 509)
+++ pure/trunk/ChangeLog 2008-08-15 10:41:43 UTC (rev 510)
@@ -1,5 +1,7 @@
2008-08-15 Albert Graef <Dr....@t-...>
+ * test/test018.pure: Add test for integer marshalling.
+
* interpreter.cc (declare_extern): All C int parameter types now
handle bigint arguments.
Added: pure/trunk/test/test018.log
===================================================================
--- pure/trunk/test/test018.log (rev 0)
+++ pure/trunk/test/test018.log 2008-08-15 10:41:43 UTC (rev 510)
@@ -0,0 +1,88 @@
+sprintf "%d" 2147483647;
+"2147483647"
+sprintf "%d" 2147483648L;
+"-2147483648"
+sprintf "%d" 4294967295L;
+"-1"
+sprintf "%d" (-2147483647);
+"-2147483647"
+sprintf "%d" (-2147483648);
+"-2147483648"
+sprintf "%d" (-4294967295L);
+"1"
+sprintf "%d" 2147483647L;
+"2147483647"
+sprintf "%d" 2147483648L;
+"-2147483648"
+sprintf "%d" 4294967295L;
+"-1"
+sprintf "%d" (-2147483647L);
+"-2147483647"
+sprintf "%d" (-2147483648L);
+"-2147483648"
+sprintf "%d" (-4294967295L);
+"1"
+sprintf "%u" 2147483647;
+"2147483647"
+sprintf "%u" 2147483648L;
+"2147483648"
+sprintf "%u" 4294967295L;
+"4294967295"
+sprintf "%u" (-2147483647);
+"2147483649"
+sprintf "%u" (-2147483648);
+"2147483648"
+sprintf "%u" (-4294967295L);
+"1"
+sprintf "%u" 2147483647L;
+"2147483647"
+sprintf "%u" 2147483648L;
+"2147483648"
+sprintf "%u" 4294967295L;
+"4294967295"
+sprintf "%u" (-2147483647L);
+"2147483649"
+sprintf "%u" (-2147483648L);
+"2147483648"
+sprintf "%u" (-4294967295L);
+"1"
+sprintf "%x" 2147483647;
+"7fffffff"
+sprintf "%x" 2147483648L;
+"80000000"
+sprintf "%x" 4294967295L;
+"ffffffff"
+sprintf "%x" (-2147483647);
+"80000001"
+sprintf "%x" (-2147483648);
+"80000000"
+sprintf "%x" (-4294967295L);
+"1"
+sprintf "%x" 2147483647L;
+"7fffffff"
+sprintf "%x" 2147483648L;
+"80000000"
+sprintf "%x" 4294967295L;
+"ffffffff"
+sprintf "%x" (-2147483647L);
+"80000001"
+sprintf "%x" (-2147483648L);
+"80000000"
+sprintf "%x" (-4294967295L);
+"1"
+ord$sprintf "%c" 128;
+128
+ord$sprintf "%c" 255;
+255
+ord$sprintf "%c" 128L;
+128
+ord$sprintf "%c" 255L;
+255
+sscanf "ffffffff" "%x";
+-1
+uint$sscanf "ffffffff" "%x";
+4294967295L
+sscanf "4294967295" "%u";
+-1
+uint$sscanf "4294967295" "%u";
+4294967295L
Added: pure/trunk/test/test018.pure
===================================================================
--- pure/trunk/test/test018.pure (rev 0)
+++ pure/trunk/test/test018.pure 2008-08-15 10:41:43 UTC (rev 510)
@@ -0,0 +1,67 @@
+
+// check integer marshalling of the C interface
+// (this isn't exhaustive, but should cover the most important cases)
+
+using system;
+
+// signed parameters
+
+sprintf "%d" 0x7fffffff;
+sprintf "%d" 0x80000000;
+sprintf "%d" 0xffffffff;
+sprintf "%d" (-0x7fffffff);
+sprintf "%d" (-0x80000000);
+sprintf "%d" (-0xffffffff);
+
+sprintf "%d" 0x7fffffffL;
+sprintf "%d" 0x80000000L;
+sprintf "%d" 0xffffffffL;
+sprintf "%d" (-0x7fffffffL);
+sprintf "%d" (-0x80000000L);
+sprintf "%d" (-0xffffffffL);
+
+// unsigned parameters
+
+sprintf "%u" 0x7fffffff;
+sprintf "%u" 0x80000000;
+sprintf "%u" 0xffffffff;
+sprintf "%u" (-0x7fffffff);
+sprintf "%u" (-0x80000000);
+sprintf "%u" (-0xffffffff);
+
+sprintf "%u" 0x7fffffffL;
+sprintf "%u" 0x80000000L;
+sprintf "%u" 0xffffffffL;
+sprintf "%u" (-0x7fffffffL);
+sprintf "%u" (-0x80000000L);
+sprintf "%u" (-0xffffffffL);
+
+// unsigned parameters (hex)
+
+sprintf "%x" 0x7fffffff;
+sprintf "%x" 0x80000000;
+sprintf "%x" 0xffffffff;
+sprintf "%x" (-0x7fffffff);
+sprintf "%x" (-0x80000000);
+sprintf "%x" (-0xffffffff);
+
+sprintf "%x" 0x7fffffffL;
+sprintf "%x" 0x80000000L;
+sprintf "%x" 0xffffffffL;
+sprintf "%x" (-0x7fffffffL);
+sprintf "%x" (-0x80000000L);
+sprintf "%x" (-0xffffffffL);
+
+// unsigned char
+
+ord $ sprintf "%c" 0x80;
+ord $ sprintf "%c" 0xff;
+ord $ sprintf "%c" 0x80L;
+ord $ sprintf "%c" 0xffL;
+
+// unsigned return values
+
+sscanf "ffffffff" "%x";
+uint $ sscanf "ffffffff" "%x";
+sscanf "4294967295" "%u";
+uint $ sscanf "4294967295" "%u";
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|