64 lines
1.9 KiB
Factor
64 lines
1.9 KiB
Factor
! Copyright (C) 2009 John Benediktsson
|
|
! See http://factorcode.org/license.txt for BSD license
|
|
|
|
USING: brainfuck kernel io.streams.string math math.parser math.ranges
|
|
quotations sequences tools.test ;
|
|
IN: brainfuck.tests
|
|
|
|
|
|
[ "+" run-brainfuck ] must-infer
|
|
[ "+" get-brainfuck ] must-infer
|
|
|
|
! Hello World!
|
|
|
|
[ "Hello World!\n" ] [ """++++++++++[>+++++++>++++++++++>+++>+<<<<-]
|
|
>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
|
|
------.--------.>+.>.""" get-brainfuck ] unit-test
|
|
|
|
! Addition (single-digit)
|
|
|
|
[ "8" ] [ "35" [ ",>++++++[<-------->-],[<+>-]<."
|
|
get-brainfuck ] with-string-reader ] unit-test
|
|
|
|
! Multiplication (single-digit)
|
|
|
|
[ "8\0" ] [ "24" [ """,>,>++++++++[<------<------>>-]
|
|
<<[>[>+>+<<-]>>[<<+>>-]<<<-]
|
|
>>>++++++[<++++++++>-],<.>."""
|
|
get-brainfuck ] with-string-reader ] unit-test
|
|
|
|
! Division (single-digit, integer)
|
|
|
|
[ "3" ] [ "62" [ """,>,>++++++[-<--------<-------->>]
|
|
<<[
|
|
>[->+>+<<]
|
|
>[-<<-
|
|
[>]>>>[<[>>>-<<<[-]]>>]<<]
|
|
>>>+
|
|
<<[-<<+>>]
|
|
<<<]
|
|
>[-]>>>>[-<<<<<+>>>>>]
|
|
<<<<++++++[-<++++++++>]<."""
|
|
get-brainfuck ] with-string-reader ] unit-test
|
|
|
|
! Uppercase
|
|
|
|
[ "A" ] [ "a\n" [ ",----------[----------------------.,----------]"
|
|
get-brainfuck ] with-string-reader ] unit-test
|
|
|
|
! cat
|
|
|
|
[ "ABC" ] [ "ABC\0" [ ",[.,]" get-brainfuck ] with-string-reader ] unit-test
|
|
|
|
! Squares of numbers from 0 to 100
|
|
|
|
100 [0,b] [ dup * number>string ] map "\n" join "\n" append 1quotation
|
|
[ """++++[>+++++<-]>[<+++++>-]+<+[
|
|
>[>+>+<<-]++>>[<<+>>-]>>>[-]++>[-]+
|
|
>>>+[[-]++++++>>>]<<<[[<++++++++<++>>-]+<.<[>----<-]<]
|
|
<<[>>>>>[>>>[-]+++++++++<[>-<-]+++++++++>
|
|
[-[<->-]+[<<<]]<[>+<-]>]<<-]<<-]"""
|
|
get-brainfuck ] unit-test
|
|
|
|
|