twa: implement a copy_named_properties_of() method

It was noted in #470 that make_twa_graph did not copy named
properties.  Let's fix that.

* spot/twa/twa.hh, spot/twa/twa.cc (copy_named_properties_of): New
method.
* spot/twa/twagraph.hh (make_twa_graph): Add an extra argument to
call copy_named_properties_of() optionally.
* python/spot/__init__.py (twa_graph.__copy__): Use it.
* tests/python/twagraph.py: Test that.
* tests/sanity/namedprop.test: Ensure copy_named_properties_of copies
all known named properties.
This commit is contained in:
Alexandre Duret-Lutz 2021-07-08 10:30:19 +02:00
parent 0cf2d285b6
commit 31a681c285
6 changed files with 70 additions and 10 deletions

View file

@ -1,6 +1,6 @@
#! /bin/sh
# -*- coding: utf-8 -*-
# Copyright (C) 2017 Laboratoire de Recherche et Développement de
# Copyright (C) 2017, 2021 Laboratoire de Recherche et Développement de
# l'Epita (LRDE).
#
# This file is part of Spot, a model checking library.
@ -26,6 +26,8 @@
set +x
DOC=doc/org/concepts.org
CPY=spot/twa/twa.cc
err=0
rm -f namedprop.log
@ -40,14 +42,32 @@ for dir in "$TOP/spot" "$TOP/bin" "$TOP/tests"; do
done |
xargs sed -n 's/.*get_named_prop<.*>("\([^"]*\)").*/\1/p
s/.*set_named_prop("\([^"]*\)",.*/\1/p' |
sort | uniq |
sort | uniq > proplist.lst
while read prop; do
if ! grep -q "$prop" "$TOP/$DOC"; then
echo "* $prop" >>namedprop.log
fi
done
done < proplist.lst
if test -f namedprop.log; then
echo "The following named properties are not documented in $DOC:"
cat namedprop.log
exit 1
err=1
fi
rm -f namedprop.log
while read prop; do
if ! grep -q "COPY_PROP.*$prop" "$TOP/$CPY"; then
echo "* $prop" >>namedprop.log
fi
done < proplist.lst
if test -f namedprop.log; then
echo "These properties are not copied by copy_named_properties_of() ($CPY):"
cat namedprop.log
err=1
fi
rm -f namedprop.log proplist.lst
exit $err