]> gitweb.factorcode.org Git - factor.git/commitdiff
dlists: fix equality when custom dlist-link nodes are used.
authorJohn Benediktsson <mrjbq7@gmail.com>
Fri, 13 Jul 2012 23:56:28 +0000 (16:56 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Fri, 13 Jul 2012 23:56:28 +0000 (16:56 -0700)
basis/dlists/dlists-tests.factor
basis/dlists/dlists.factor

index d6b9fe90204942b3ca5752449c06c1915ccd7e5a..4f9a30085afed61c56b74bc61e7358734f5d28a9 100644 (file)
@@ -118,34 +118,34 @@ TUPLE: my-node < dlist-link { obj fixnum } ;
     [ prev>> ] [ next>> ] bi 2array { f f } assert= ;
 
 [ V{ } ] [ <dlist> 1 <my-node> over push-node-back [ [ back>> ] [ ] bi delete-node ] [ ] bi dlist>sequence ] unit-test
-[ V{ 1 2 } ] [| |
+[ V{ 1 2 } ] [| |
     <dlist> :> dl
         1 <my-node> :> n1 n1 dl push-node-back
         2 <my-node> :> n2 n2 dl push-node-back
         3 <my-node> :> n3 n3 dl push-node-back
 
     n3 dl delete-node n3 assert-links
-    dl dlist>sequence
+    dl dlist>sequence dup >dlist dl =
 ] unit-test
 
-[ V{ 1 3 } ] [| |
+[ V{ 1 3 } ] [| |
     <dlist> :> dl
         1 <my-node> :> n1 n1 dl push-node-back
         2 <my-node> :> n2 n2 dl push-node-back
         3 <my-node> :> n3 n3 dl push-node-back
 
     n2 dl delete-node n2 assert-links
-    dl dlist>sequence
+    dl dlist>sequence dup >dlist dl =
 ] unit-test
 
-[ V{ 2 3 } ] [| |
+[ V{ 2 3 } ] [| |
     <dlist> :> dl
         1 <my-node> :> n1 n1 dl push-node-back
         2 <my-node> :> n2 n2 dl push-node-back
         3 <my-node> :> n3 n3 dl push-node-back
 
     n1 dl delete-node n1 assert-links
-    dl dlist>sequence
+    dl dlist>sequence dup >dlist dl =
 ] unit-test
 
 
index c186d8633e3646f4963f2813af4d8d174740fd86..cb512ad95cd1efde2a97e2fef9371a25d96521eb 100644 (file)
@@ -12,6 +12,8 @@ TUPLE: dlist-node < dlist-link obj ;
 
 M: dlist-link obj>> ;
 
+M: dlist-link node-value obj>> ;
+
 : new-dlist-link ( obj prev next class -- node )
     new
         swap >>next
@@ -33,14 +35,12 @@ TUPLE: dlist
 
 M: dlist deque-empty? front>> not ; inline
 
-M: dlist-node node-value obj>> ;
-
 <PRIVATE
 
 : dlist-nodes= ( dlist-node/f dlist-node/f -- ? )
     {
-        [ [ dlist-node? ] both? ]
-        [ [ obj>> ] bi@ = ] 
+        [ [ dlist-link? ] both? ]
+        [ [ obj>> ] bi@ = ]
     } 2&& ; inline
 
 PRIVATE>
@@ -49,7 +49,7 @@ M: dlist equal?
     over dlist? [
         [ front>> ] bi@
         [ 2dup dlist-nodes= ]
-        [ [ next>> ] bi@ ] while 
+        [ [ next>> ] bi@ ] while
         or not
     ] [
         2drop f