1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
|
// -*- c++ -*-
//*****************************************************************************
/** @file BooleEnvTest.cc
*
* @author Ket Kalda, Alexander Dreyer
* @date 2010-11-02
*
* boost/test-driven unit test
*
* @par Copyright:
* (c) 2010 by The PolyBoRi Team
*
**/
//*****************************************************************************
#if 0
#include <boost/test/unit_test.hpp>
#include <boost/version.hpp>
#if BOOST_VERSION < 107100
#include <boost/test/output_test_stream.hpp>
#else
#include <boost/test/tools/output_test_stream.hpp>
#endif
using boost::test_tools::output_test_stream;
#include <polybori/pbori_defs.h>
#include <polybori/BooleEnv.h>
#include <polybori/orderings/pbori_order.h>
USING_NAMESPACE_PBORI
struct Fenv {
Fenv(): ring(5) { BOOST_TEST_MESSAGE( "setup fixture" ); }
~Fenv() { BOOST_TEST_MESSAGE( "teardown fixture" ); }
BoolePolyRing ring;
};
BOOST_FIXTURE_TEST_SUITE(BooleEnvTestSuite, Fenv )
BOOST_AUTO_TEST_CASE(test_dd_type) {
BOOST_TEST_MESSAGE( "variable, zero, one" );
BOOST_CHECK_THROW(BooleEnv::variable(-1), PBoRiError);
BOOST_CHECK_EQUAL(BooleEnv::variable(0), ring.variable(0));
BOOST_CHECK_EQUAL(BooleEnv::variable(1), ring.variable(1));
BOOST_CHECK_EQUAL(BooleEnv::variable(2), ring.variable(2));
BOOST_CHECK_EQUAL(BooleEnv::variable(3), ring.variable(3));
BOOST_CHECK_EQUAL(BooleEnv::variable(4), ring.variable(4));
BOOST_CHECK_THROW(BooleEnv::variable(5), PBoRiError);
BOOST_CHECK_EQUAL(BooleEnv::zero(), ring.zero());
BOOST_CHECK_EQUAL(BooleEnv::one(), ring.one());
}
BOOST_AUTO_TEST_CASE(test_variables) {
BOOST_TEST_MESSAGE( "nVariables, setVariableName, getVariableName" );
BOOST_CHECK_EQUAL(BooleEnv::nVariables(), ring.nVariables());
BooleEnv::setVariableName(0, "x");
BOOST_CHECK_EQUAL(BooleEnv::getVariableName(0), ring.getVariableName(0));
BOOST_CHECK_EQUAL(BooleEnv::getVariableName(0), "x");
ring.setVariableName(1, "y");
BOOST_CHECK_EQUAL(BooleEnv::getVariableName(1), ring.getVariableName(1));
BOOST_CHECK_EQUAL(BooleEnv::getVariableName(1), "y");
BooleEnv::setVariableName(2, "z");
BOOST_CHECK_EQUAL(BooleEnv::getVariableName(2), ring.getVariableName(2));
BOOST_CHECK_EQUAL(BooleEnv::getVariableName(2), "z");
ring.setVariableName(3, "v");
BOOST_CHECK_EQUAL(BooleEnv::getVariableName(3), ring.getVariableName(3));
BOOST_CHECK_EQUAL(BooleEnv::getVariableName(3), "v");
BooleEnv::setVariableName(4, "w");
BOOST_CHECK_EQUAL(BooleEnv::getVariableName(4), ring.getVariableName(4));
BOOST_CHECK_EQUAL(BooleEnv::getVariableName(4), "w");
BooleEnv::setVariableName(5, "t");
BOOST_CHECK_EQUAL(BooleEnv::getVariableName(5), ring.getVariableName(5));
BOOST_CHECK_EQUAL(BooleEnv::getVariableName(5), "t");
BOOST_CHECK_THROW( BooleEnv::setVariableName(-1, "r"), std::exception);
BOOST_CHECK_THROW(BooleEnv::getVariableName(-1), std::exception);
BOOST_CHECK_THROW(BooleEnv::getVariableName(-1), std::exception);
}
BOOST_AUTO_TEST_CASE(test_ordering) {
BOOST_TEST_MESSAGE( "ordering, getOrderCode, getBaseOrderCode, changeOrdering" );
// BOOST_CHECK_EQUAL(BooleEnv::ordering().getOrderCode(), ring.ordering().getOrderCode());
BOOST_CHECK_EQUAL(BooleEnv::getOrderCode(), ring.ordering().getOrderCode());
BOOST_CHECK_EQUAL(BooleEnv::getBaseOrderCode(), ring.ordering().getBaseOrderCode());
BooleEnv::changeOrdering(COrderEnums::dlex);
// BOOST_CHECK_EQUAL(BooleEnv::ordering().getOrderCode(), COrderEnums::dlex);
BOOST_CHECK_EQUAL(BooleEnv::getOrderCode(), ring.ordering().getOrderCode());
ring.changeOrdering(COrderEnums::dp_asc);
// BOOST_CHECK_EQUAL(BooleEnv::ordering().getOrderCode(), COrderEnums::dp_asc);
BOOST_CHECK_EQUAL(BooleEnv::getOrderCode(), ring.ordering().getOrderCode());
BooleEnv::changeOrdering(COrderEnums::block_dlex);
// BOOST_CHECK_EQUAL(BooleEnv::ordering().getOrderCode(), COrderEnums::block_dlex);
BOOST_CHECK_EQUAL(BooleEnv::getOrderCode(), ring.ordering().getOrderCode());
ring.changeOrdering(COrderEnums::block_dp_asc);
// BOOST_CHECK_EQUAL(BooleEnv::ordering().getOrderCode(), COrderEnums::block_dp_asc);
BOOST_CHECK_EQUAL(BooleEnv::getOrderCode(), ring.ordering().getOrderCode());
BooleEnv::changeOrdering(-1);
// BOOST_CHECK_EQUAL(BooleEnv::ordering().getOrderCode(), COrderEnums::lp);//default is lp
BOOST_CHECK_EQUAL(BooleEnv::getOrderCode(), ring.ordering().getOrderCode());
BooleEnv::changeOrdering(5);
// BOOST_CHECK_EQUAL(BooleEnv::ordering().getOrderCode(), COrderEnums::lp);//default is lp
BOOST_CHECK_EQUAL(BooleEnv::getOrderCode(), ring.ordering().getOrderCode());
}
BOOST_AUTO_TEST_CASE(test_ring) {
///@todo implement == for rings?
BoolePolyRing notempty(3, 1, false);
BoolePolyRing empty(0,2,false);
// BOOST_TEST_MESSAGE( "ring, set" );
// BOOST_CHECK_EQUAL(BooleEnv::ring().ordering().getOrderCode(), ring.ordering().getOrderCode());
// BOOST_CHECK_EQUAL(BooleEnv::ring().nVariables(), ring.nVariables());
// BooleEnv::set(notempty);
// BOOST_CHECK_EQUAL(BooleEnv::ring().ordering().getOrderCode(), notempty.ordering().getOrderCode());
// BOOST_CHECK_EQUAL(BooleEnv::ring().nVariables(), notempty.nVariables());
// BooleEnv::set(empty);
// BOOST_CHECK_EQUAL(BooleEnv::ring().ordering().getOrderCode(), empty.ordering().getOrderCode());
// BOOST_CHECK_EQUAL(BooleEnv::ring().nVariables(), empty.nVariables());
// BooleEnv::set(ring);
// BOOST_CHECK_EQUAL(BooleEnv::ring().ordering().getOrderCode(), ring.ordering().getOrderCode());
// BOOST_CHECK_EQUAL(BooleEnv::ring().nVariables(), ring.nVariables());
}
BOOST_AUTO_TEST_CASE(test_blocks) {
BOOST_TEST_MESSAGE( "blockBegin, blockEnd, appendBlock, clearBlocks, lastBlockStart" );
BOOST_CHECK_EQUAL(BooleEnv::lastBlockStart(), ring.ordering().lastBlockStart());
BOOST_CHECK_EQUAL(BooleEnv::lastBlockStart(), CUDD_MAXINDEX);
output_test_stream output, output_ring;
BooleEnv::changeOrdering(COrderEnums::block_dlex);
BOOST_CHECK_THROW(BooleEnv::appendBlock(0), std::exception);
BooleEnv::appendBlock(2);
BoolePolyRing::block_iterator start(BooleEnv::blockBegin()),
finish(BooleEnv::blockEnd());
while (start != finish) {
output << *start <<", ";
++start;
}
start = ring.ordering().blockBegin();
finish = ring.ordering().blockEnd();
while (start != finish) {
output_ring << *start <<", ";
++start;
}
BOOST_CHECK_EQUAL(output.str(),output_ring.str());
output_ring.str("");
output_ring << "2, " << CUDD_MAXINDEX << ", ";
BOOST_CHECK_EQUAL(output.str(), output_ring.str());
BooleEnv::clearBlocks();
start = BooleEnv::blockBegin();
finish = BooleEnv::blockEnd();
output.str("");
while (start != finish) {
output << *start <<", ";
++start;
}
start = ring.ordering().blockBegin();
finish = ring.ordering().blockEnd();
output_ring.str("");
while (start != finish) {
output_ring << *start <<", ";
++start;
}
BOOST_CHECK_EQUAL(output.str(), output_ring.str());
output_ring.str("");
output_ring << CUDD_MAXINDEX << ", ";
BOOST_CHECK_EQUAL(output.str(), output_ring.str());
}
BOOST_AUTO_TEST_SUITE_END()
#endif
|