#!/bin/sh # -*- coding: utf-8 -*- # Copyright (C) 2009, 2010, 2012, 2014 Laboratoire de Recherche et # Développement de l'Epita (LRDE). # Copyright (C) 2003, 2004 Laboratoire d'Informatique de Paris 6 (LIP6), # département Systèmes Répartis Coopératifs (SRC), Université Pierre # et Marie Curie. # # This file is part of Spot, a model checking library. # # Spot 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 3 of the License, or # (at your option) any later version. # # Spot 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, see . . ./defs set -e cat >input <<\EOF acc = c d; s1, "s2", "a&!b", c d; "s2", "state 3", "\"F\\G\"", c; "state 3", s1,,; EOF ../ltl2tgba -b -X input > stdout cat >expected <<\EOF acc = "0" "1"; "0", "1", "a & !b", "0" "1"; "1", "2", "\"F\\G\"", "0"; "2", "0", "1",; EOF # Sort out some possible inversions in the output. # (The order is not guaranteed by SPOT.) sed 's/"d" "c"/"c" "d"/g;s/!b & a/a \& !b/g' stdout > tmp_ && mv tmp_ stdout diff stdout expected mv stdout input run 0 ../ltl2tgba -b -X input > stdout # Sort out some possible inversions in the output. # (The order is not guaranteed by SPOT.) sed 's/"d" "c"/"c" "d"/g;s/!b & a/a \& !b/g' stdout > tmp_ && mv tmp_ stdout diff input stdout rm -f input stdout expected # Transition merging cat >input <<\EOF acc = c; s1, s2, "a&!b", c; s1, s2, "b&a", c; s1, s2, "!b", ; s2, s1, "!b", ; s2, s1, "a&!b", c; s2, s1, "b&a", c; EOF cat >expected <<\EOF acc = "0"; "0", "1", "!b",; "0", "1", "a", "0"; "1", "0", "!b",; "1", "0", "a", "0"; EOF run 0 ../ltl2tgba -b -X input > stdout # FIXME: use are-isomorphic once it is available diff stdout expected # Likewise, with a randomly generated TGBA. run 0 ../randtgba -t 1 -n 20 -d 0.2 a b -a 2 0.1 >input sed 's/"b & a"/"a \& b"/g;s/"a1" "a0"/"a0" "a1"/g' input > tmp_ && mv tmp_ input cat input # the first read-write can renumber the states run 0 ../ltl2tgba -b -X input > stdout sed 's/"b & a"/"a \& b"/g;s/"a1" "a0"/"a0" "a1"/g' stdout > tmp_ && mv tmp_ stdout test `wc -l < input` = `wc -l < stdout` # But this second shout output the same as the first run 0 ../ltl2tgba -b -X input > stdout2 sed 's/"b & a"/"a \& b"/g;s/"a1" "a0"/"a0" "a1"/g' stdout2 > tmp_ && mv tmp_ stdout2 diff stdout stdout2 rm -f input stdout stdout2 # Check the position of syntax errors in the diagnostics: cat >input <<\EOF acc = "c" "d"; "s1", "s2", "a & !b", "c" "d"; "s2", "state 3", "a &&", "c"; "state 3", "s1", "1)",; EOF run 2 ../ltl2tgba -b -X input > stdout 2>stderr cat stderr grep input: stderr > stderrfilt cat >expected < input.dos mv input.dos input run 2 ../ltl2tgba -b -X input > stdout 2>stderr cat stderr grep input: stderr > stderrfilt diff stderrfilt expected