]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/alien/endian/endian-tests.factor
use radix literals
[factor.git] / basis / alien / endian / endian-tests.factor
index 2b440cc66dac28b3448a0b09f61947f393b42c12..6c083df8e7398ef6016a1fca682f5b63fd2937c1 100644 (file)
@@ -1,7 +1,8 @@
 ! Copyright (C) 2011 Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors alien.endian classes.struct io
-io.encodings.binary io.streams.byte-array kernel tools.test ;
+io.encodings.binary io.streams.byte-array kernel tools.test
+alien.c-types ;
 IN: alien.endian.tests
 
 STRUCT: endian-struct
@@ -19,37 +20,37 @@ STRUCT: endian-struct
     { l be64 } ;
 
 CONSTANT: endian-bytes-0f B{
-        HEX: 0 HEX: ff
-        HEX: 0 HEX: ff
-        HEX: 0 HEX: ff
-        HEX: 0 HEX: ff
-
-        HEX: 0 HEX: 0 HEX: 0 HEX: ff
-        HEX: 0 HEX: 0 HEX: 0 HEX: ff
-        HEX: 0 HEX: 0 HEX: 0 HEX: ff
-        HEX: 0 HEX: 0 HEX: 0 HEX: ff
-
-        HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: ff
-        HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: ff
-        HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: ff
-        HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: ff
+        0x0 0xff
+        0x0 0xff
+        0x0 0xff
+        0x0 0xff
+
+        0x0 0x0 0x0 0xff
+        0x0 0x0 0x0 0xff
+        0x0 0x0 0x0 0xff
+        0x0 0x0 0x0 0xff
+
+        0x0 0x0 0x0 0x0 0x0 0x0 0x0 0xff
+        0x0 0x0 0x0 0x0 0x0 0x0 0x0 0xff
+        0x0 0x0 0x0 0x0 0x0 0x0 0x0 0xff
+        0x0 0x0 0x0 0x0 0x0 0x0 0x0 0xff
     }
 
 CONSTANT: endian-bytes-f0 B{
-        HEX: ff HEX: 0
-        HEX: ff HEX: 0
-        HEX: ff HEX: 0
-        HEX: ff HEX: 0
-
-        HEX: ff HEX: 0 HEX: 0 HEX: 0
-        HEX: ff HEX: 0 HEX: 0 HEX: 0
-        HEX: ff HEX: 0 HEX: 0 HEX: 0
-        HEX: ff HEX: 0 HEX: 0 HEX: 0
-
-        HEX: ff HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0
-        HEX: ff HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0
-        HEX: ff HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0
-        HEX: ff HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0 HEX: 0
+        0xff 0x0
+        0xff 0x0
+        0xff 0x0
+        0xff 0x0
+
+        0xff 0x0 0x0 0x0
+        0xff 0x0 0x0 0x0
+        0xff 0x0 0x0 0x0
+        0xff 0x0 0x0 0x0
+
+        0xff 0x0 0x0 0x0 0x0 0x0 0x0 0x0
+        0xff 0x0 0x0 0x0 0x0 0x0 0x0 0x0
+        0xff 0x0 0x0 0x0 0x0 0x0 0x0 0x0
+        0xff 0x0 0x0 0x0 0x0 0x0 0x0 0x0
     }
 
 : endian-test-struct-0f ( -- obj )
@@ -58,39 +59,183 @@ CONSTANT: endian-bytes-f0 B{
 : endian-test-struct-f0 ( -- obj )
     endian-bytes-f0 endian-struct memory>struct ;
 
-[ HEX: ff00 ] [ endian-test-struct-0f a>> ] unit-test
+[ 0xff00 ] [ endian-test-struct-0f a>> ] unit-test
 [ -256 ] [ endian-test-struct-0f b>> ] unit-test
-[ HEX: 00ff ] [ endian-test-struct-0f c>> ] unit-test
-[ HEX: 00ff ] [ endian-test-struct-0f d>> ] unit-test
+[ 0x00ff ] [ endian-test-struct-0f c>> ] unit-test
+[ 0x00ff ] [ endian-test-struct-0f d>> ] unit-test
 
-[ HEX: ff000000 ] [ endian-test-struct-0f e>> ] unit-test
+[ 0xff000000 ] [ endian-test-struct-0f e>> ] unit-test
 [ -16777216 ] [ endian-test-struct-0f f>> ] unit-test
-[ HEX: 000000ff ] [ endian-test-struct-0f g>> ] unit-test
-[ HEX: 000000ff ] [ endian-test-struct-0f h>> ] unit-test
+[ 0x000000ff ] [ endian-test-struct-0f g>> ] unit-test
+[ 0x000000ff ] [ endian-test-struct-0f h>> ] unit-test
 
-[ HEX: ff00000000000000 ] [ endian-test-struct-0f i>> ] unit-test
+[ 0xff00000000000000 ] [ endian-test-struct-0f i>> ] unit-test
 [ -72057594037927936 ] [ endian-test-struct-0f j>> ] unit-test
-[ HEX: 00000000000000ff ] [ endian-test-struct-0f k>> ] unit-test
-[ HEX: 00000000000000ff ] [ endian-test-struct-0f l>> ] unit-test
+[ 0x00000000000000ff ] [ endian-test-struct-0f k>> ] unit-test
+[ 0x00000000000000ff ] [ endian-test-struct-0f l>> ] unit-test
 
 
-[ HEX: ff00 ] [ endian-test-struct-f0 c>> ] unit-test
+[ 0xff00 ] [ endian-test-struct-f0 c>> ] unit-test
 [ -256 ] [ endian-test-struct-f0 d>> ] unit-test
-[ HEX: 00ff ] [ endian-test-struct-f0 a>> ] unit-test
-[ HEX: 00ff ] [ endian-test-struct-f0 b>> ] unit-test
+[ 0x00ff ] [ endian-test-struct-f0 a>> ] unit-test
+[ 0x00ff ] [ endian-test-struct-f0 b>> ] unit-test
 
-[ HEX: ff000000 ] [ endian-test-struct-f0 g>> ] unit-test
+[ 0xff000000 ] [ endian-test-struct-f0 g>> ] unit-test
 [ -16777216 ] [ endian-test-struct-f0 h>> ] unit-test
-[ HEX: 000000ff ] [ endian-test-struct-f0 e>> ] unit-test
-[ HEX: 000000ff ] [ endian-test-struct-f0 f>> ] unit-test
+[ 0x000000ff ] [ endian-test-struct-f0 e>> ] unit-test
+[ 0x000000ff ] [ endian-test-struct-f0 f>> ] unit-test
 
-[ HEX: ff00000000000000 ] [ endian-test-struct-f0 k>> ] unit-test
+[ 0xff00000000000000 ] [ endian-test-struct-f0 k>> ] unit-test
 [ -72057594037927936 ] [ endian-test-struct-f0 l>> ] unit-test
-[ HEX: 00000000000000ff ] [ endian-test-struct-f0 i>> ] unit-test
-[ HEX: 00000000000000ff ] [ endian-test-struct-f0 j>> ] unit-test
+[ 0x00000000000000ff ] [ endian-test-struct-f0 i>> ] unit-test
+[ 0x00000000000000ff ] [ endian-test-struct-f0 j>> ] unit-test
 
 [ t ]
 [ endian-test-struct-0f binary [ write ] with-byte-writer endian-bytes-0f = ] unit-test
 
 [ t ]
 [ endian-test-struct-f0 binary [ write ] with-byte-writer endian-bytes-f0 = ] unit-test
+
+LE-STRUCT: le-endian-struct
+    { a ule16 }
+    { b le16 }
+    { c ube16 }
+    { d be16 }
+    { e ule32 }
+    { f le32 }
+    { g ube32 }
+    { h be32 }
+    { i ule64 }
+    { j le64 }
+    { k ube64 }
+    { l be64 } ;
+
+[ t ]
+[
+    endian-bytes-0f le-endian-struct memory>struct
+    binary [ write ] with-byte-writer endian-bytes-0f =
+] unit-test
+
+[ t ]
+[
+    endian-bytes-f0 le-endian-struct memory>struct
+    binary [ write ] with-byte-writer endian-bytes-f0 =
+] unit-test
+
+
+BE-STRUCT: be-endian-struct
+    { a ule16 }
+    { b le16 }
+    { c ube16 }
+    { d be16 }
+    { e ule32 }
+    { f le32 }
+    { g ube32 }
+    { h be32 }
+    { i ule64 }
+    { j le64 }
+    { k ube64 }
+    { l be64 } ;
+
+[ t ]
+[
+    endian-bytes-0f be-endian-struct memory>struct
+    binary [ write ] with-byte-writer endian-bytes-0f =
+] unit-test
+
+[ t ]
+[
+    endian-bytes-f0 be-endian-struct memory>struct
+    binary [ write ] with-byte-writer endian-bytes-f0 =
+] unit-test
+
+LE-STRUCT: le-override-struct
+    { a ushort }
+    { b short }
+    { c ube16 }
+    { d be16 }
+    { e uint }
+    { f int }
+    { g ube32 }
+    { h be32 }
+    { i ulonglong }
+    { j longlong }
+    { k ube64 }
+    { l be64 } ;
+
+[ t ]
+[
+    endian-bytes-0f le-override-struct memory>struct
+    binary [ write ] with-byte-writer endian-bytes-0f =
+] unit-test
+
+[ t ]
+[
+    endian-bytes-f0 le-override-struct memory>struct
+    binary [ write ] with-byte-writer endian-bytes-f0 =
+] unit-test
+
+BE-STRUCT: be-override-struct
+    { a ule16 }
+    { b le16 }
+    { c ushort }
+    { d short }
+    { e ule32 }
+    { f le32 }
+    { g uint }
+    { h int }
+    { i ule64 }
+    { j le64 }
+    { k ulonglong }
+    { l longlong } ;
+
+[ t ]
+[
+    endian-bytes-0f be-override-struct memory>struct
+    binary [ write ] with-byte-writer endian-bytes-0f =
+] unit-test
+
+[ t ]
+[
+    endian-bytes-f0 be-override-struct memory>struct
+    binary [ write ] with-byte-writer endian-bytes-f0 =
+] unit-test
+
+
+LE-PACKED-STRUCT: le-packed-struct
+    { a char[7] }
+    { b int } ;
+
+[ t ]
+[
+    B{ 0 0 0 0 0 0 0  3 0 0 0 } [
+        le-packed-struct memory>struct
+        binary [ write ] with-byte-writer
+    ] keep =
+] unit-test
+
+[ 3 ]
+[
+    B{ 0 0 0 0 0 0 0  3 0 0 0 } le-packed-struct memory>struct
+    b>>
+] unit-test
+
+
+BE-PACKED-STRUCT: be-packed-struct
+    { a char[7] }
+    { b int } ;
+
+[ t ]
+[
+    B{ 0 0 0 0 0 0 0  0 0 0 3 } [
+        be-packed-struct memory>struct
+        binary [ write ] with-byte-writer
+    ] keep =
+] unit-test
+
+[ 3 ]
+[
+    B{ 0 0 0 0 0 0 0  0 0 0 3 } be-packed-struct memory>struct
+    b>>
+] unit-test
+