]> gitweb.factorcode.org Git - factor.git/commitdiff
bare: adding more tests
authorJohn Benediktsson <mrjbq7@gmail.com>
Wed, 15 Jun 2022 19:04:53 +0000 (12:04 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Wed, 15 Jun 2022 19:04:53 +0000 (12:04 -0700)
extra/bare/bare-tests.factor
extra/bare/bare.factor

index 57d662f3f818d04a24ea153bdf863bf0fbe809ef..6d8e9cc5c7c6d0fed304d8f21a25a4fc61e3d919 100644 (file)
@@ -1,4 +1,4 @@
-USING: bare multiline prettyprint prettyprint.config tools.test ;
+USING: bare multiline prettyprint prettyprint.config sequences tools.test ;
 
 ! uint
 
@@ -137,6 +137,15 @@ USING: bare multiline prettyprint prettyprint.config tools.test ;
     T{ data f 16 } >bare
 ] unit-test
 
+! enum
+
+{ "FOO" } [ B{ 0x00 } T{ enum f { { "FOO" 0 } { "BAR" 255 } { "BUZZ" 256 } } } bare> ] unit-test
+{ B{ 0x00 } } [ "FOO" T{ enum f { { "FOO" 0 } { "BAR" 255 } { "BUZZ" 256 } } } >bare ] unit-test
+{ "BAR" } [ B{ 0xFF 0x01 } T{ enum f { { "FOO" 0 } { "BAR" 255 } { "BUZZ" 256 } } } bare> ] unit-test
+{ B{ 0xFF 0x01 } } [ "BAR" T{ enum f { { "FOO" 0 } { "BAR" 255 } { "BUZZ" 256 } } } >bare ] unit-test
+{ "BUZZ" } [ B{ 0x80 0x02 } T{ enum f { { "FOO" 0 } { "BAR" 255 } { "BUZZ" 256 } } } bare> ] unit-test
+{ B{ 0x80 0x02 } } [ "BUZZ" T{ enum f { { "FOO" 0 } { "BAR" 255 } { "BUZZ" 256 } } } >bare ] unit-test
+
 ! optional<u32>
 
 { f } [ B{ 0x00 } T{ optional f u32 } bare> ] unit-test
@@ -166,6 +175,91 @@ USING: bare multiline prettyprint prettyprint.config tools.test ;
     { 0 1 254 255 256 257 126 127 128 129 } T{ list f uint 10 } >bare
 ] unit-test
 
+! map<u32><str>
+
+{
+    B{
+        0x03 0x00 0x00 0x00 0x00 0x04 0x7A 0x65 0x72 0x6F 0x01
+        0x00 0x00 0x00 0x03 0x6F 0x6E 0x65 0xFF 0x00 0x00 0x00
+        0x1B 0x74 0x77 0x6F 0x20 0x68 0x75 0x6E 0x64 0x72 0x65
+        0x64 0x73 0x20 0x61 0x6E 0x64 0x20 0x66 0x69 0x66 0x74
+        0x79 0x20 0x66 0x69 0x76 0x65
+    }
+} [
+    H{
+        { 0 "zero" }
+        { 1 "one" }
+        { 255 "two hundreds and fifty five" }
+    } T{ bare:map f u32 str } >bare
+] unit-test
+
+{
+    {
+        { 0 "zero" }
+        { 1 "one" }
+        { 255 "two hundreds and fifty five" }
+    }
+} [
+    B{
+        0x03 0x00 0x00 0x00 0x00 0x04 0x7A 0x65 0x72 0x6F 0x01
+        0x00 0x00 0x00 0x03 0x6F 0x6E 0x65 0xFF 0x00 0x00 0x00
+        0x1B 0x74 0x77 0x6F 0x20 0x68 0x75 0x6E 0x64 0x72 0x65
+        0x64 0x73 0x20 0x61 0x6E 0x64 0x20 0x66 0x69 0x66 0x74
+        0x79 0x20 0x66 0x69 0x76 0x65
+    } T{ bare:map f u32 str } bare>
+] unit-test
+
+! union
+
+{
+    {
+        0
+        1
+        1
+        -1
+        255
+        255
+        -255
+        "BARE"
+    }
+} [
+    {
+        B{ 0x00 0x00 }
+        B{ 0x00 0x02 }
+        B{ 0xFF 0x01 0x01 }
+        B{ 0x00 0x01 }
+        B{ 0x00 0xFE 0x03 }
+        B{ 0xFF 0x01 0xFF 0x01 }
+        B{ 0x00 0xFD 0x03 }
+        B{ 0x80 0x02 0x04 0x42 0x41 0x52 0x45 }
+    } [
+        T{ bare:union f { { int 0 } { uint 255 } { str 256 } } } bare>
+    ] sequences:map
+] unit-test
+
+! struct
+
+{
+    {
+        { "foo" 255 }
+        { "bar" -255 }
+        { "buzz" "BARE" }
+    }
+} [
+    B{ 0xFF 0x01 0xFD 0x03 0x04 0x42 0x41 0x52 0x45 }
+    T{ struct f { { "foo" uint } { "bar" int } { "buzz" str } } } bare>
+] unit-test
+
+{
+    B{ 0xFF 0x01 0xFD 0x03 0x04 0x42 0x41 0x52 0x45 }
+} [
+    {
+        { "foo" 255 }
+        { "bar" -255 }
+        { "buzz" "BARE" }
+    } T{ struct f { { "foo" uint } { "bar" int } { "buzz" str } } } >bare
+] unit-test
+
 ! user types / schema
 
 {
index de596c52dbba312eef19f3b6e16432f2c2e73b20..9cd68081bcaf705827e1f95b2554f6270bf69876 100644 (file)
@@ -120,7 +120,7 @@ M: data read-bare
 
 M: void read-bare drop f ; ! XXX: this isn't right
 
-M: enum read-bare [ uint read-bare ] dip value-at ;
+M: enum read-bare [ uint read-bare ] dip values>> value-at ;
 
 M: optional read-bare
     u8 read-bare 1 = [ type>> read-bare ] [ drop f ] if ;