Skip to content
Snippets Groups Projects
Commit 4d73f970 authored by Tomáš Pecka's avatar Tomáš Pecka Committed by Tomáš Pecka
Browse files

Integration test: Compare outputs of 3 minimizations algorithms

parent 219056ce
No related branches found
No related tags found
1 merge request!79Dev tp
#include <catch2/catch.hpp>
#include <alib/vector>
#include "testing/TimeoutAqlTest.hpp"
#include "testing/TestFiles.hpp"
const unsigned RAND_STATES = 15;
const unsigned RAND_ALPHABET = 5;
const double RAND_DENSITY = 2.5;
const size_t ITERATIONS = 100;
static const std::string qGenNFA ( ) {
std::ostringstream oss;
oss << "execute automaton::generate::RandomAutomatonFactory ";
oss << "(size_t)" << rand ( ) % RAND_STATES + 1 << " ";
oss << "(size_t)" << rand ( ) % RAND_ALPHABET + 1 << " ";
oss << "(bool)true ";
oss << "(double)\"" << RAND_DENSITY << "\"";
return oss.str ( );
}
TEST_CASE ( "Minimization FA test", "[integration]" ) {
static const std::string qDet ( "automaton::determinize::Determinize - | automaton::simplify::Trim -" );
static const std::string qMinimizeHop ( qDet + " | " + "automaton::simplify::Minimize - | automaton::simplify::Normalize -" );
static const std::string qMinimizeBrz ( qDet + " | " + "automaton::simplify::MinimizeBrzozowski - | automaton::simplify::Trim - | automaton::simplify::Normalize -" );
static const std::string qMinimizeDis ( qDet + " | " + "automaton::simplify::MinimizeDistinguishableStates - | automaton::simplify::Normalize -" );
SECTION ( "Files tests" ) {
for ( const std::string & inputFile : TestFiles::Get ( "/automaton/aconversion.test.*.xml$" ) ) {
ext::vector < std::string > qs;
qs = {
"execute < " + inputFile + " > $gen",
"quit compare::AutomatonCompare <( $gen | " + qMinimizeHop + " )" + " <( $gen | " + qMinimizeBrz + ")"
};
TimeoutAqlTest ( 2s, qs );
qs = {
"execute < " + inputFile + " > $gen",
"quit compare::AutomatonCompare <( $gen | " + qMinimizeHop + " )" + " <( $gen | " + qMinimizeDis + ")"
};
TimeoutAqlTest ( 2s, qs );
}
}
SECTION ( "Random tests" ) {
for ( size_t i = 0; i < ITERATIONS; i++ ) {
ext::vector < std::string > qs;
qs = {
qGenNFA ( ) + " > $gen",
"quit compare::AutomatonCompare <( $gen | " + qMinimizeHop + " )" + " <( $gen | " + qMinimizeBrz + ")"
};
TimeoutAqlTest ( 2s, qs );
qs = {
qGenNFA ( ) + " > $gen",
"quit compare::AutomatonCompare <( $gen | " + qMinimizeHop + " )" + " <( $gen | " + qMinimizeDis + ")"
};
TimeoutAqlTest ( 2s, qs );
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment