2007-09-20 18:09:08 -04:00
|
|
|
! Copyright (C) 2005, 2006 Alex Chapman, Daniel Ehrenberg
|
2012-09-11 13:33:47 -04:00
|
|
|
! See http://factorcode.org/license.txt for BSD license
|
2013-07-29 15:23:05 -04:00
|
|
|
USING: arrays circular kernel math sequences sequences.private
|
|
|
|
strings tools.test ;
|
2009-08-13 20:21:44 -04:00
|
|
|
IN: circular.tests
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2015-07-02 14:36:08 -04:00
|
|
|
{ 0 } [ { 0 1 2 3 4 } <circular> 0 swap virtual@ drop ] unit-test
|
|
|
|
{ 2 } [ { 0 1 2 3 4 } <circular> 2 swap virtual@ drop ] unit-test
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2015-07-02 14:36:08 -04:00
|
|
|
{ CHAR: t } [ "test" <circular> 0 swap nth ] unit-test
|
|
|
|
{ "test" } [ "test" <circular> >string ] unit-test
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2015-07-02 14:36:08 -04:00
|
|
|
{ CHAR: e } [ "test" <circular> 5 swap nth-unsafe ] unit-test
|
2015-07-02 13:34:01 -04:00
|
|
|
|
2015-07-02 14:36:08 -04:00
|
|
|
{ [ 1 2 3 ] } [ { 1 2 3 } <circular> [ ] like ] unit-test
|
|
|
|
{ [ 2 3 1 ] } [ { 1 2 3 } <circular> [ rotate-circular ] keep [ ] like ] unit-test
|
|
|
|
{ [ 3 1 2 ] } [ { 1 2 3 } <circular> [ rotate-circular ] keep [ rotate-circular ] keep [ ] like ] unit-test
|
|
|
|
{ [ 2 3 1 ] } [ { 1 2 3 } <circular> 1 over change-circular-start [ ] like ] unit-test
|
|
|
|
{ [ 3 1 2 ] } [ { 1 2 3 } <circular> 1 over change-circular-start 1 over change-circular-start [ ] like ] unit-test
|
|
|
|
{ [ 3 1 2 ] } [ { 1 2 3 } <circular> -100 over change-circular-start [ ] like ] unit-test
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2015-07-02 14:36:08 -04:00
|
|
|
{ "fob" } [ "foo" <circular> CHAR: b 2 pick set-nth >string ] unit-test
|
|
|
|
{ "boo" } [ "foo" <circular> CHAR: b 3 pick set-nth-unsafe >string ] unit-test
|
|
|
|
{ "ornact" } [ "factor" <circular> 4 over change-circular-start CHAR: n 2 pick set-nth >string ] unit-test
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2015-07-02 14:36:08 -04:00
|
|
|
{ "bcd" } [ 3 <circular-string> "abcd" [ over circular-push ] each >string ] unit-test
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2015-07-02 14:36:08 -04:00
|
|
|
{ { 0 0 } } [ { 0 0 } <circular> -1 over change-circular-start >array ] unit-test
|
2008-03-19 22:48:29 -04:00
|
|
|
|
|
|
|
! This no longer fails
|
|
|
|
! [ "test" <circular> 5 swap nth ] must-fail
|
|
|
|
! [ "foo" <circular> CHAR: b 3 rot set-nth ] must-fail
|
2008-05-25 16:19:26 -04:00
|
|
|
|
2015-07-02 14:36:08 -04:00
|
|
|
{ { } } [ 3 <growing-circular> >array ] unit-test
|
|
|
|
{ { 1 2 } } [
|
2008-05-25 16:19:26 -04:00
|
|
|
3 <growing-circular>
|
2009-12-06 18:20:46 -05:00
|
|
|
[ 1 swap growing-circular-push ] keep
|
|
|
|
[ 2 swap growing-circular-push ] keep >array
|
2008-05-25 16:19:26 -04:00
|
|
|
] unit-test
|
2015-07-02 14:36:08 -04:00
|
|
|
{ { 3 4 5 } } [
|
2008-05-25 16:19:26 -04:00
|
|
|
3 <growing-circular> dup { 1 2 3 4 5 } [
|
2009-12-06 18:20:46 -05:00
|
|
|
swap growing-circular-push
|
2008-05-25 16:19:26 -04:00
|
|
|
] with each >array
|
|
|
|
] unit-test
|
2013-07-27 21:32:37 -04:00
|
|
|
|
2015-07-02 14:36:08 -04:00
|
|
|
{ V{ 1 2 3 } } [
|
2013-07-29 16:28:11 -04:00
|
|
|
{ 1 2 3 } <circular> V{ } [
|
|
|
|
[ push f ] curry circular-while
|
|
|
|
] keep
|
|
|
|
] unit-test
|
|
|
|
|
|
|
|
CONSTANT: test-sequence1 { t f f f }
|
2015-07-02 14:36:08 -04:00
|
|
|
{ V{ 1 2 3 1 } } [
|
2013-07-29 16:28:11 -04:00
|
|
|
{ 1 2 3 } <circular> V{ } [
|
|
|
|
[ [ push ] [ length 1 - test-sequence1 nth ] bi ] curry circular-while
|
|
|
|
] keep
|
|
|
|
] unit-test
|
|
|
|
|
|
|
|
CONSTANT: test-sequence2 { t f t t f f t t t f f f }
|
2015-07-02 14:36:08 -04:00
|
|
|
{ V{ 1 2 3 1 2 3 1 2 3 1 2 3 } } [
|
2013-07-29 16:28:11 -04:00
|
|
|
{ 1 2 3 } <circular> V{ } [
|
|
|
|
[ [ push ] [ length 1 - test-sequence2 nth ] bi ] curry circular-while
|
|
|
|
] keep
|
|
|
|
] unit-test
|
|
|
|
|
2015-07-02 14:36:08 -04:00
|
|
|
{ V{ 1 2 3 1 2 } } [
|
2013-07-27 21:32:37 -04:00
|
|
|
{ 1 2 3 } <circular> V{ } [
|
2013-09-06 13:16:20 -04:00
|
|
|
[ [ push ] [ length 5 < ] bi ] curry circular-loop
|
2013-07-27 21:32:37 -04:00
|
|
|
] keep
|
|
|
|
] unit-test
|
2013-07-29 16:27:17 -04:00
|
|
|
|
2015-07-02 14:36:08 -04:00
|
|
|
{ V{ 1 } } [
|
2013-07-29 16:27:17 -04:00
|
|
|
{ 1 2 3 } <circular> V{ } [
|
2013-09-06 13:16:20 -04:00
|
|
|
[ push f ] curry circular-loop
|
2013-07-29 16:27:17 -04:00
|
|
|
] keep
|
|
|
|
] unit-test
|