From: Richard W.M. Jones Date: Tue, 21 Jan 2020 13:46:06 +0000 (+0000) Subject: tests: Add basic test of predicates. X-Git-Url: http://git.annexia.org/?a=commitdiff_plain;h=b2df65a3134b02b6f341f3b2bb1330cc15395d9d;p=goals.git tests: Add basic test of predicates. --- diff --git a/tests/00-basic-predicate.gl b/tests/00-basic-predicate.gl new file mode 100644 index 0000000..c4d4506 --- /dev/null +++ b/tests/00-basic-predicate.gl @@ -0,0 +1,40 @@ +# Goals test. +# Copyright (C) 2020 Richard W.M. Jones +# Copyright (C) 2020 Red Hat Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +# Test of basic predicates. + +predicate is-cow (name) = { + if ! test %goals_final_check; then + echo %name needs transformation + exit 99 + else + echo %name is a cow + exit 0 + fi +} + +predicate is-sheep (name) = { + echo %name is a sheep +} + +goal all = : is-cow ("daisy"), is-cow ("dylan"), is-cow ("florence") + +goal cowofsheep (name) = +is-cow ("%name") : is-sheep ("%name") { + echo transform sheep %< to cow %@ +} diff --git a/tests/00-basic-predicate.sh b/tests/00-basic-predicate.sh new file mode 100755 index 0000000..547e0b1 --- /dev/null +++ b/tests/00-basic-predicate.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# Goals test. +# Copyright (C) 2020 Richard W.M. Jones +# Copyright (C) 2020 Red Hat Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +set -e + +goals -s -f 00-basic-predicate.gl > 00-basic-predicate.out + +for animal in daisy dylan florence; do + if test "$(grep "$animal" 00-basic-predicate.out)" != "$animal is a sheep +$animal needs transformation +transform sheep $animal to cow $animal +$animal is a cow"; then + echo "$0: output failed for $animal:" + cat 00-basic-predicate.out + exit 1 + fi +done + +rm 00-basic-predicate.out