#!/bin/sh # Copyright (C) 2009, 2010, 2012 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 = "c" "d"; "s1", "s2", "a & !b", "c" "d"; "s2", "state 3", "\"F\\G\"", "c"; "state 3", "s1", "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 = "c"; "s1", "s2", "a", "c"; "s1", "s2", "!b",; "s2", "s1", "!b",; "s2", "s1", "a", "c"; EOF run 0 ../ltl2tgba -b -X input > stdout 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 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 diff input stdout rm -f input stdout # 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 <