! Copyright (C) 2005, 2006 Alex Chapman, Daniel Ehrenberg ! See http;//factorcode.org/license.txt for BSD license USING: arrays kernel tools.test sequences sequences.private circular strings ; IN: circular.tests [ 0 ] [ { 0 1 2 3 4 } 0 swap virtual@ drop ] unit-test [ 2 ] [ { 0 1 2 3 4 } 2 swap virtual@ drop ] unit-test [ CHAR: t ] [ "test" 0 swap nth ] unit-test [ "test" ] [ "test" >string ] unit-test [ CHAR: e ] [ "test" 5 swap nth-unsafe ] unit-test [ [ 1 2 3 ] ] [ { 1 2 3 } [ ] like ] unit-test [ [ 2 3 1 ] ] [ { 1 2 3 } [ rotate-circular ] keep [ ] like ] unit-test [ [ 3 1 2 ] ] [ { 1 2 3 } [ rotate-circular ] keep [ rotate-circular ] keep [ ] like ] unit-test [ [ 2 3 1 ] ] [ { 1 2 3 } 1 over change-circular-start [ ] like ] unit-test [ [ 3 1 2 ] ] [ { 1 2 3 } 1 over change-circular-start 1 over change-circular-start [ ] like ] unit-test [ [ 3 1 2 ] ] [ { 1 2 3 } -100 over change-circular-start [ ] like ] unit-test [ "fob" ] [ "foo" CHAR: b 2 pick set-nth >string ] unit-test [ "boo" ] [ "foo" CHAR: b 3 pick set-nth-unsafe >string ] unit-test [ "ornact" ] [ "factor" 4 over change-circular-start CHAR: n 2 pick set-nth >string ] unit-test [ "bcd" ] [ 3 "abcd" [ over push-circular ] each >string ] unit-test [ { 0 0 } ] [ { 0 0 } -1 over change-circular-start >array ] unit-test ! This no longer fails ! [ "test" 5 swap nth ] must-fail ! [ "foo" CHAR: b 3 rot set-nth ] must-fail [ { } ] [ 3 >array ] unit-test [ { 1 2 } ] [ 3 [ 1 swap push-growing-circular ] keep [ 2 swap push-growing-circular ] keep >array ] unit-test [ { 3 4 5 } ] [ 3 dup { 1 2 3 4 5 } [ swap push-growing-circular ] with each >array ] unit-test