GOOPS cosmetics
[bpt/guile.git] / test-suite / tests / brainfuck.test
CommitLineData
8753fd53
AW
1;;;; test brainfuck compilation -*- scheme -*-
2;;;;
3;;;; This library is free software; you can redistribute it and/or
4;;;; modify it under the terms of the GNU Lesser General Public
5;;;; License as published by the Free Software Foundation; either
6;;;; version 3 of the License, or (at your option) any later version.
7;;;;
8;;;; This library is distributed in the hope that it will be useful,
9;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
10;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11;;;; Lesser General Public License for more details.
12;;;;
13;;;; You should have received a copy of the GNU Lesser General Public
14;;;; License along with this library; if not, write to the Free Software
15;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
d10f7b57 17(define-module (tests brainfuck)
8753fd53
AW
18 #:use-module (test-suite lib)
19 #:use-module (system base compile))
20
21;; This program taken from Wikipedia's brainfuck introduction page.
22(define prog "
23 +++ +++ +++ + initialize counter (cell #0) to 10
24 [ use loop to set the next four cells to 70/100/30/10
25 > +++ +++ + add 7 to cell #1
26 > +++ +++ +++ + add 10 to cell #2
27 > +++ add 3 to cell #3
28 > + add 1 to cell #4
29 <<< < - decrement counter (cell #0)
30 ]
31 >++ . print 'H'
32 >+. print 'e'
33 +++ +++ +. print 'l'
34 . print 'l'
35 +++ . print 'o'
36 >++ . print ' '
37 <<+ +++ +++ +++ +++ ++. print 'W'
38 >. print 'o'
39 +++ . print 'r'
40 --- --- . print 'l'
41 --- --- --. print 'd'
42 >+. print '!'")
43
44(pass-if
45 (equal? (with-output-to-string
46 (lambda ()
47 (call-with-input-string
48 prog
49 (lambda (port)
50 (read-and-compile port #:from 'brainfuck #:to 'value)))))
51 "Hello World!"))