factor/extra/brainfuck/brainfuck-tests.factor

94 lines
2.0 KiB
Factor
Raw Normal View History

2009-06-01 14:21:14 -04:00
! Copyright (C) 2009 John Benediktsson
! See http://factorcode.org/license.txt for BSD license
2014-12-26 22:20:11 -05:00
USING: brainfuck io.streams.string kernel literals math
math.parser math.ranges sequences tools.test ;
[ "+" run-brainfuck ] must-infer
[ "+" get-brainfuck ] must-infer
2009-06-01 17:00:37 -04:00
! Hello World!
2014-12-26 22:20:11 -05:00
{ "Hello World!\n" } [
"
2014-12-26 22:20:11 -05:00
++++++++++[>+++++++>++++++++++>+++>+<<<<-]
>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
------.--------.>+.>.
" get-brainfuck
2014-12-26 22:20:11 -05:00
] unit-test
2009-06-01 14:21:14 -04:00
2009-06-01 17:00:37 -04:00
! Addition (single-digit)
2014-12-26 22:20:11 -05:00
{ "8" } [
"35" [
",>++++++[<-------->-],[<+>-]<." get-brainfuck
] with-string-reader
] unit-test
2009-06-01 17:00:37 -04:00
! Multiplication (single-digit)
2014-12-26 22:20:11 -05:00
{ "8\0" } [
"24" [
"
2014-12-26 22:20:11 -05:00
,>,>++++++++[<------<------>>-]
<<[>[>+>+<<-]>>[<<+>>-]<<<-]
>>>++++++[<++++++++>-],<.>.
" get-brainfuck
2014-12-26 22:20:11 -05:00
] with-string-reader
] unit-test
2009-06-01 17:00:37 -04:00
! Division (single-digit, integer)
2014-12-26 22:20:11 -05:00
{ "3" } [
"62" [
"
2014-12-26 22:20:11 -05:00
,>,>++++++[-<--------<-------->>]
<<[
>[->+>+<<]
>[-<<-
[>]>>>[<[>>>-<<<[-]]>>]<<]
>>>+
<<[-<<+>>]
<<<]
>[-]>>>>[-<<<<<+>>>>>]
<<<<++++++[-<++++++++>]<.
" get-brainfuck
2014-12-26 22:20:11 -05:00
] with-string-reader
] unit-test
2009-06-01 17:00:37 -04:00
! Uppercase
2014-12-26 22:20:11 -05:00
{ "A" } [ "a\n" [ ",----------[----------------------.,----------]"
get-brainfuck ] with-string-reader ] unit-test
2009-06-01 17:00:37 -04:00
! cat
2014-12-26 22:20:11 -05:00
{ "ABC" } [ "ABC\0" [ ",[.,]" get-brainfuck ] with-string-reader ] unit-test
2009-06-01 17:00:37 -04:00
! Squares of numbers from 0 to 100
2014-12-26 22:20:11 -05:00
${ 100 [0,b] [ dup * number>string ] map "\n" join "\n" append }
[
"
2014-12-26 22:20:11 -05:00
++++[>+++++<-]>[<+++++>-]+<+[
>[>+>+<<-]++>>[<<+>>-]>>>[-]++>[-]+
>>>+[[-]++++++>>>]<<<[[<++++++++<++>>-]+<.<[>----<-]<]
<<[>>>>>[>>>[-]+++++++++<[>-<-]+++++++++>
[-[<->-]+[<<<]]<[>+<-]>]<<-]<<-]
" get-brainfuck
2014-12-26 22:20:11 -05:00
] unit-test
! fun with numbers: 2 + 2 = 5
{ "5" } [
"
+++++ +++++
+ +
+ + + +++++
+++++ +++ +++++
+ + + +++++
+ +
+++++ +++++.
" get-brainfuck
] unit-test