[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. |