* src/misc/modgray.hh, src/misc/modgray.cc: New files.

* src/misc/Makefile.am (libmisc_la_SOURCES, misc_HEADERS): Add them.
* wrap/python/spot.i: Activate directors, and interface modgray.hh.
* wrap/python/tests/modgray.py: New file.
* wrap/python/tests/Makefile.am (TESTS): Add it.
This commit is contained in:
Alexandre Duret-Lutz 2004-10-20 15:46:56 +00:00
parent 7d27fd3796
commit 094ddca665
7 changed files with 351 additions and 2 deletions

View file

@ -19,7 +19,7 @@
// Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
%module spot
%module(directors="1") spot
%include "std_string.i"
%include "std_list.i"
@ -35,6 +35,7 @@
#include "misc/version.hh"
#include "misc/bddalloc.hh"
#include "misc/minato.hh"
#include "misc/modgray.hh"
#include "ltlast/formula.hh"
#include "ltlast/refformula.hh"
@ -91,6 +92,9 @@ using namespace spot;
%include "misc/bddalloc.hh"
%include "misc/minato.hh"
%feature("director") spot::loopless_modular_mixed_radix_gray_code;
%include "misc/modgray.hh"
%include "ltlast/formula.hh"
%include "ltlast/refformula.hh"
%include "ltlast/atomic_prop.hh"

View file

@ -33,4 +33,5 @@ TESTS = \
bddnqueen.py \
ltl2tgba.test \
interdep.py \
minato.py
minato.py \
modgray.py

58
wrap/python/tests/modgray.py Executable file
View file

@ -0,0 +1,58 @@
# -*- mode: python; coding: iso-8859-1 -*-
# Copyright (C) 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 2 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 Spot; see the file COPYING. If not, write to the Free
# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
import ltihooks
import spot
class test(spot.loopless_modular_mixed_radix_gray_code):
def __init__(self, lim):
spot.loopless_modular_mixed_radix_gray_code.__init__(self, len(lim))
self.msg = list(lim)
self.lim = list(lim)
def a_first(self, j):
self.msg[j] = 'a'
def a_next(self, j):
self.msg[j] = chr(1 + ord(self.msg[j]))
def a_last(self, j):
return self.msg[j] == self.lim[j]
def run(self):
self.first()
res = []
while not self.done():
m = "".join(self.msg)
res.append(m)
print m
self.next()
return res
t = test("acbb")
expected = [ 'aaaa', 'abaa', 'acaa', 'acba',
'aaba', 'abba', 'abbb', 'acbb',
'aabb', 'aaab', 'abab', 'acab' ]
assert t.run() == expected