From 369f5b6d138245e8ef7baf0b32457aebbe01fad4 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Thu, 26 Jan 2017 22:09:13 -0800 Subject: [PATCH] sequences.extras: additional tests for take-while and drop-while. --- extra/sequences/extras/extras-tests.factor | 2 ++ extra/sequences/extras/extras.factor | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/extra/sequences/extras/extras-tests.factor b/extra/sequences/extras/extras-tests.factor index 52a016c344..a8eed85a1e 100644 --- a/extra/sequences/extras/extras-tests.factor +++ b/extra/sequences/extras/extras-tests.factor @@ -247,6 +247,8 @@ IN: sequences.extras.tests { { 0 1 2 3 } } [ 8 iota [ 4 < ] take-while >array ] unit-test { { } } [ { 15 16 } [ 4 < ] take-while >array ] unit-test +{ { 0 1 2 } } [ 3 iota [ 4 < ] take-while >array ] unit-test { { 4 5 6 7 } } [ 8 iota [ 4 < ] drop-while >array ] unit-test { { 15 16 } } [ { 15 16 } [ 4 < ] drop-while >array ] unit-test +{ { } } [ 3 iota [ 4 < ] drop-while >array ] unit-test diff --git a/extra/sequences/extras/extras.factor b/extra/sequences/extras/extras.factor index 1092be46b7..5ae2255a80 100644 --- a/extra/sequences/extras/extras.factor +++ b/extra/sequences/extras/extras.factor @@ -604,7 +604,9 @@ PRIVATE> '[ swap _ dip swap ] assoc-map ; inline : take-while ( ... seq quot: ( ... elt -- ... ? ) -- head-slice ) - [ '[ @ not ] find drop ] 2keep drop swap 0 or head-slice ; inline + [ '[ @ not ] find drop ] 2keep drop swap + [ dup length ] unless* head-slice ; inline : drop-while ( ... seq quot: ( ... elt -- ... ? ) -- tail-slice ) - [ '[ @ not ] find drop ] 2keep drop swap 0 or tail-slice ; inline + [ '[ @ not ] find drop ] 2keep drop swap + [ dup length ] unless* tail-slice ; inline -- 2.34.1