]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/variants/variants-tests.factor
stomp.cli: simplify
[factor.git] / extra / variants / variants-tests.factor
index ef48b36b9c7afa51f4fac84bd670e4d8092b3e04..f08901c098d27a6efcd71f0f99b1a3c37c342f94 100644 (file)
@@ -1,5 +1,6 @@
-! (c)2009 Joe Groff bsd license
-USING: kernel math tools.test variants ;
+! Copyright (C) 2009 Joe Groff.
+! See https://factorcode.org/license.txt for BSD license.
+USING: kernel math tools.test variants slots ;
 IN: variants.tests
 
 VARIANT: list
@@ -7,9 +8,9 @@ VARIANT: list
     cons: { { first object } { rest list } }
     ;
 
-[ t ] [ nil list? ] unit-test
-[ t ] [ 1 nil <cons> list? ] unit-test
-[ f ] [ 1 list? ] unit-test
+{ t } [ nil list? ] unit-test
+{ t } [ 1 nil <cons> list? ] unit-test
+{ f } [ 1 list? ] unit-test
 
 : list-length ( list -- length )
     {
@@ -17,5 +18,24 @@ VARIANT: list
         { cons [ nip list-length 1 + ] }
     } match ;
 
-[ 4 ]
+{ 4 }
 [ 5 6 7 8 nil <cons> <cons> <cons> <cons> list-length ] unit-test
+
+{ nil t } [ list initial-value ] unit-test
+
+VARIANT: list2 ;
+VARIANT-MEMBER: list2 nil2 ;
+VARIANT-MEMBER: list2 cons2: { { first object } { rest list2 } } ;
+
+{ t } [ nil2 list2? ] unit-test
+{ t } [ 1 nil2 <cons2> list2? ] unit-test
+{ f } [ 1 list2? ] unit-test
+
+: list2-length ( list2 -- length )
+    {
+        { nil2  [ 0 ] }
+        { cons2 [ nip list2-length 1 + ] }
+    } match ;
+
+{ 4 }
+[ 5 6 7 8 nil2 <cons2> <cons2> <cons2> <cons2> list2-length ] unit-test