50 std::unique_ptr<LINE_READER> GetReader(
const wxString& aURI )
const override
52 return std::make_unique<STRING_LINE_READER>(
"",
"DUMMY_LIB_TABLE_IO Data" );
55 bool CanSaveToUri(
const wxString& aURI )
const override
61 bool UrisAreEquivalent(
const wxString& aURI1,
const wxString& aURI2 )
const override
63 return aURI1 == aURI2;
66 std::unique_ptr<OUTPUTFORMATTER> GetWriter(
const wxString& aURI )
const override
68 return std::make_unique<STRING_FORMATTER>();
80 TEST_LIB_TABLE_ROW(
const wxString& aNick,
const wxString& aURI,
const wxString& aOptions,
81 const wxString& aDescr )
82 : LIB_TABLE_ROW( aNick, aURI, aOptions, aDescr )
86 const wxString GetType()
const override {
return m_type; }
87 void SetType(
const wxString& aType )
override { m_type = aType; }
89 bool LibraryExists()
const override {
return true; }
92 LIB_TABLE_ROW* do_clone()
const override
94 return new TEST_LIB_TABLE_ROW( *
this );
111 TEST_LIB_TABLE( LIB_TABLE* aFallback =
nullptr ) :
112 LIB_TABLE( aFallback, std::make_unique<DUMMY_LIB_TABLE_IO>() )
123 void Parse( LIB_TABLE_LEXER* aLexer )
override
129 void Format( OUTPUTFORMATTER* aOutput,
int aIndentLevel )
const override
139struct LIB_ROW_DEFINITION
141 std::string m_nickname;
143 std::string m_description;
152static const std::vector<LIB_ROW_DEFINITION> main_lib_defs = {
162 "The second library",
173static const std::vector<LIB_ROW_DEFINITION> fallback_lib_defs = {
177 "The first fallback library",
183 "The second fallback library",
193struct LIB_TABLE_TEST_FIXTURE
195 LIB_TABLE_TEST_FIXTURE() : m_mainTableWithFb( &m_fallbackTable )
197 for(
const auto& lib : main_lib_defs )
199 m_mainTableNoFb.InsertRow( makeRowFromDef( lib ).release() );
200 m_mainTableWithFb.InsertRow( makeRowFromDef( lib ).release() );
203 for(
const auto& lib : fallback_lib_defs )
205 m_fallbackTable.InsertRow( makeRowFromDef( lib ).release() );
212 std::unique_ptr<TEST_LIB_TABLE_ROW> makeRowFromDef(
const LIB_ROW_DEFINITION& aDef )
214 auto row = std::make_unique<TEST_LIB_TABLE_ROW>(
215 aDef.m_nickname, aDef.m_uri,
"", aDef.m_description );
217 row->SetEnabled( aDef.m_enabled );
223 TEST_LIB_TABLE m_mainTableNoFb;
226 TEST_LIB_TABLE m_mainTableWithFb;
229 TEST_LIB_TABLE m_fallbackTable;
237BOOST_FIXTURE_TEST_SUITE( LibTable, LIB_TABLE_TEST_FIXTURE )
244 TEST_LIB_TABLE
table;
258 TEST_LIB_TABLE interposer_table( &m_fallbackTable );
259 TEST_LIB_TABLE
table( &interposer_table );
281 m_mainTableWithFb.At( 1 ).SetNickName(
"NewNickname" );
286 TEST_LIB_TABLE empty_table;
300 const auto& row0 = m_mainTableNoFb.At( 0 );
303 const auto& row1 = m_mainTableNoFb.At( 1 );
307 const auto& row2 = m_mainTableNoFb.At( 2 );
336 BOOST_CHECK_EQUAL(
"The first library", m_mainTableNoFb.GetDescription(
"Lib1" ) );
339 BOOST_CHECK_EQUAL(
"The third library", m_mainTableNoFb.GetDescription(
"Lib3" ) );
350 const LIB_TABLE_ROW* row = m_mainTableNoFb.FindRowByURI(
"://lib/1" );
353 BOOST_CHECK_NE(
nullptr, row );
360 row = m_mainTableNoFb.FindRowByURI(
"this_uri_is_not_found" );
371 auto logical_libs = m_mainTableNoFb.GetLogicalLibs();
374 const std::vector<wxString> exp_libs = {
379 BOOST_CHECK_EQUAL_COLLECTIONS(
380 logical_libs.begin(), logical_libs.end(), exp_libs.begin(), exp_libs.end() );
LIB_TABLE_IO abstracts the file I/O operations for the library table loading and saving.
Hold a record identifying a library accessed by the appropriate plug in object in the LIB_TABLE.
const wxString & GetNickName() const
Manage LIB_TABLE_ROW records (rows), and can be searched based on library nickname.
ELEM
The set of #_ELEMs that a PROJECT can hold.
PARSE_RESULT Parse(const std::string &aString, NOTATION aNotation=NOTATION::SI, SIM_VALUE::TYPE aValueType=SIM_VALUE::TYPE_FLOAT)
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
BOOST_AUTO_TEST_CASE(HorizontalAlignment)
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_CASE(Empty)
Declare the test suite.
BOOST_CHECK_EQUAL(result, "25.4")