Sim QA: Add Spice .subckt parsing tests
This commit is contained in:
parent
0b5814f98f
commit
08d37d2795
|
@ -0,0 +1,36 @@
|
|||
*
|
||||
* subckts.lib.spice
|
||||
*
|
||||
|
||||
.SUBCKT NO_PARAMS_0 1 2
|
||||
|
||||
R1 1 2 1K
|
||||
|
||||
.ENDS
|
||||
|
||||
|
||||
.subckt ONE_PARAM_1 1 2 PARAMS: PARAM1=1
|
||||
|
||||
R1 1 2 1K
|
||||
|
||||
.endsubckt
|
||||
|
||||
|
||||
.SUBCKT ONE_PARAM_SHORT_FORM_2 1 2 PARAM1=1.0
|
||||
|
||||
R1 1 2 1K
|
||||
|
||||
.ENDSUBCKT
|
||||
|
||||
|
||||
.subckt two_params_3 1 2 Params: param1=1.1e+1 param2=2.2e+2
|
||||
R1 1 2 1K
|
||||
.ends
|
||||
|
||||
.subckt two_params_short_form_4 1 2 param1=1.1E+1 param2=2.2E+2
|
||||
R1 1 2 1K
|
||||
.ends
|
||||
|
||||
.subckt NOTHING_5
|
||||
R1 1 2 1K
|
||||
.ends
|
|
@ -125,9 +125,88 @@ public:
|
|||
BOOST_FIXTURE_TEST_SUITE( SimLibrarySpice, TEST_SIM_LIBRARY_SPICE_FIXTURE )
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE( Subckts )
|
||||
{
|
||||
LOCALE_IO toggle;
|
||||
|
||||
LoadLibrary( "subckts" );
|
||||
|
||||
const std::vector<SIM_LIBRARY::MODEL> models = m_library->GetModels();
|
||||
|
||||
BOOST_CHECK_EQUAL( models.size(), 6 );
|
||||
|
||||
for( int i = 0; i < models.size(); ++i )
|
||||
{
|
||||
const auto& [modelName, model] = models.at( i );
|
||||
|
||||
switch( i )
|
||||
{
|
||||
case 0:
|
||||
BOOST_CHECK( model.GetType() == SIM_MODEL::TYPE::SUBCKT );
|
||||
BOOST_CHECK_EQUAL( modelName, "NO_PARAMS_0" );
|
||||
break;
|
||||
|
||||
case 1:
|
||||
BOOST_CHECK( model.GetType() == SIM_MODEL::TYPE::SUBCKT );
|
||||
BOOST_CHECK_EQUAL( modelName, "ONE_PARAM_1" );
|
||||
BOOST_REQUIRE_EQUAL( model.GetParamCount(), 1 );
|
||||
BOOST_CHECK_EQUAL( model.GetParam( 0 ).info.name, "PARAM1" );
|
||||
BOOST_CHECK_EQUAL( model.GetParam( 0 ).info.defaultValue, "1" );
|
||||
BOOST_REQUIRE_EQUAL( model.GetPinCount(), 2 );
|
||||
BOOST_CHECK_EQUAL( model.GetPin( 0 ).name, "1" );
|
||||
BOOST_CHECK_EQUAL( model.GetPin( 1 ).name, "2" );
|
||||
break;
|
||||
|
||||
case 2:
|
||||
BOOST_CHECK( model.GetType() == SIM_MODEL::TYPE::SUBCKT );
|
||||
BOOST_CHECK_EQUAL( modelName, "ONE_PARAM_SHORT_FORM_2" );
|
||||
BOOST_REQUIRE_EQUAL( model.GetParamCount(), 1 );
|
||||
BOOST_CHECK_EQUAL( model.GetParam( 0 ).info.name, "PARAM1" );
|
||||
BOOST_CHECK_EQUAL( model.GetParam( 0 ).info.defaultValue, "1.0" );
|
||||
BOOST_CHECK_EQUAL( model.GetPin( 0 ).name, "1" );
|
||||
BOOST_CHECK_EQUAL( model.GetPin( 1 ).name, "2" );
|
||||
break;
|
||||
|
||||
case 3:
|
||||
BOOST_CHECK( model.GetType() == SIM_MODEL::TYPE::SUBCKT );
|
||||
BOOST_CHECK_EQUAL( modelName, "two_params_3" );
|
||||
BOOST_REQUIRE_EQUAL( model.GetParamCount(), 2 );
|
||||
BOOST_CHECK_EQUAL( model.GetParam( 0 ).info.name, "param1" );
|
||||
BOOST_CHECK_EQUAL( model.GetParam( 0 ).info.defaultValue, "1.1e+1" );
|
||||
BOOST_CHECK_EQUAL( model.GetParam( 1 ).info.name, "param2" );
|
||||
BOOST_CHECK_EQUAL( model.GetParam( 1 ).info.defaultValue, "2.2e+2" );
|
||||
BOOST_REQUIRE_EQUAL( model.GetPinCount(), 2 );
|
||||
BOOST_CHECK_EQUAL( model.GetPin( 0 ).name, "1" );
|
||||
BOOST_CHECK_EQUAL( model.GetPin( 1 ).name, "2" );
|
||||
break;
|
||||
|
||||
case 4:
|
||||
BOOST_CHECK( model.GetType() == SIM_MODEL::TYPE::SUBCKT );
|
||||
BOOST_CHECK_EQUAL( modelName, "two_params_short_form_4" );
|
||||
BOOST_REQUIRE_EQUAL( model.GetParamCount(), 2 );
|
||||
BOOST_CHECK_EQUAL( model.GetParam( 0 ).info.name, "param1" );
|
||||
BOOST_CHECK_EQUAL( model.GetParam( 0 ).info.defaultValue, "1.1E+1" );
|
||||
BOOST_CHECK_EQUAL( model.GetParam( 1 ).info.name, "param2" );
|
||||
BOOST_CHECK_EQUAL( model.GetParam( 1 ).info.defaultValue, "2.2E+2" );
|
||||
BOOST_REQUIRE_EQUAL( model.GetPinCount(), 2 );
|
||||
BOOST_CHECK_EQUAL( model.GetPin( 0 ).name, "1" );
|
||||
BOOST_CHECK_EQUAL( model.GetPin( 1 ).name, "2" );
|
||||
break;
|
||||
|
||||
case 5:
|
||||
BOOST_CHECK( model.GetType() == SIM_MODEL::TYPE::SUBCKT );
|
||||
BOOST_CHECK_EQUAL( modelName, "NOTHING_5" );
|
||||
BOOST_CHECK_EQUAL( model.GetParamCount(), 0 );
|
||||
BOOST_CHECK_EQUAL( model.GetPinCount(), 0 );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE( Diodes )
|
||||
{
|
||||
LOCALE_IO dummy;
|
||||
LOCALE_IO toggle;
|
||||
|
||||
LoadLibrary( "diodes" );
|
||||
|
||||
|
@ -271,7 +350,7 @@ BOOST_AUTO_TEST_CASE( Diodes )
|
|||
|
||||
BOOST_AUTO_TEST_CASE( Bjts )
|
||||
{
|
||||
LOCALE_IO dummy;
|
||||
LOCALE_IO toggle;
|
||||
|
||||
LoadLibrary( "bjts" );
|
||||
|
||||
|
@ -331,7 +410,7 @@ BOOST_AUTO_TEST_CASE( Bjts )
|
|||
|
||||
BOOST_AUTO_TEST_CASE( Fets )
|
||||
{
|
||||
LOCALE_IO dummy;
|
||||
LOCALE_IO toggle;
|
||||
|
||||
LoadLibrary( "fets" );
|
||||
|
||||
|
|
Loading…
Reference in New Issue