iftest.fth revision 7c478bd95313f5f23a4c958a745db2134aa03244
\ #ident "%Z%%M% %I% %E% SMI"
\ Copyright 2005 Sun Microsystems, Inc. All rights reserved.
\ Use is subject to license terms.
\
\ CDDL HEADER START
\
\ The contents of this file are subject to the terms of the
\ Common Development and Distribution License, Version 1.0 only
\ (the "License"). You may not use this file except in compliance
\ with the License.
\
\ You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
\ or http://www.opensolaris.org/os/licensing.
\ See the License for the specific language governing permissions
\ and limitations under the License.
\
\ When distributing Covered Code, include this CDDL HEADER in each
\ file and include the License file at usr/src/OPENSOLARIS.LICENSE.
\ If applicable, add the following below this CDDL HEADER, with the
\ fields enclosed by brackets "[]" replaced with your own identifying
\ information: Portions Copyright [yyyy] [name of copyright owner]
\
\ CDDL HEADER END
\
cr ." Simple interpreted IF THEN test: "
1 if .passed then space
0 if .failed then space
cr
." Simple interpreted IF ELSE THEN test: "
0 if .failed else .passed then space
1 if .passed else .failed then space
cr
." Nested interpreted IF test: "
1 1 1 0 0 1 0 0
if if .failed else .failed then space
else if .failed else .passed then space
then
if if .failed else .passed then space
else if .failed else .failed then space
then
if if .failed else .failed then space
else if .passed else .failed then space
then
if if .passed else .failed then space
else if .failed else .failed then space
then
cr
." Compiled single IF tests:" space
: if-true? if .passed space 0 exit then .failed space 0 ; 1 if-true?
: if-false? if .failed space 1 exit then .passed space 1 ; if-false?
: true? if .passed else .failed then space 0 ; true?
: false? if .failed else .passed then space ; false?
cr
." Nested compiled IF test: "
: if-test1 ( -- )
0 1 0 if
.failed
else
if
dup if .failed then
if .failed else .passed then
else
.failed
then
then
; if-test1 space
: .passed? ( str,len flag )
if if then if then .passed space else cr type space .failed cr then
;
: if-test2 ( x x x -- )
if
if
if
7
else
6
then
else
if
5
else
4
then
then
else
if
if
3
else
2
then
else
if
1
else
0
then
then
then
;
" if-test2.0" 0 0 0 if-test2 0 = .passed?
" if-test2.1" 1 0 0 if-test2 1 = .passed?
" if-test2.2" 0 1 0 if-test2 2 = .passed?
" if-test2.3" 1 1 0 if-test2 3 = .passed?
" if-test2.4" 0 0 1 if-test2 4 = .passed?
" if-test2.5" 1 0 1 if-test2 5 = .passed?
" if-test2.6" 0 1 1 if-test2 6 = .passed?
" if-test2.7" 1 1 1 if-test2 7 = .passed?
cr