diff --git a/qa/pcbnew/CMakeLists.txt b/qa/pcbnew/CMakeLists.txt index 6f14de92d6..7804db2475 100644 --- a/qa/pcbnew/CMakeLists.txt +++ b/qa/pcbnew/CMakeLists.txt @@ -44,6 +44,7 @@ add_executable( qa_pcbnew # test compilation units (start test_) test_array_pad_name_provider.cpp test_graphics_import_mgr.cpp + test_lset.cpp test_pad_naming.cpp drc/test_drc_courtyard_invalid.cpp diff --git a/qa/pcbnew/test_lset.cpp b/qa/pcbnew/test_lset.cpp new file mode 100644 index 0000000000..afa3ceae60 --- /dev/null +++ b/qa/pcbnew/test_lset.cpp @@ -0,0 +1,61 @@ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2019 KiCad Developers, see CHANGELOG.TXT for contributors. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, you may find one here: + * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html + * or you may search the http://www.gnu.org website for the version 2 license, + * or you may write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include + +#include + +BOOST_AUTO_TEST_SUITE( LSet ) + +struct LSETS_TO_TEST +{ + LSET lset; + + std::string expectedFmtHex; + std::string expectedFmtBin; +}; + +const static std::vector type_to_ext_cases = { + { LSET( 2, F_Cu, F_Fab ), "20000_00000001", + "010|0000_0000|0000_0000|0000_0000|0000_0000|0000_0000|0000_0001" }, + { LSET( 3, In14_Cu, B_Adhes, Rescue ), "40001_00004000", + "100|0000_0000|0000_0001|0000_0000|0000_0000|0100_0000|0000_0000" } +}; + +BOOST_AUTO_TEST_CASE( FmtHex ) +{ + for( const auto& c : type_to_ext_cases ) + { + BOOST_CHECK_EQUAL( c.expectedFmtHex, c.lset.FmtHex() ); + } +} + +BOOST_AUTO_TEST_CASE( FmtBin ) +{ + for( const auto& c : type_to_ext_cases ) + { + BOOST_CHECK_EQUAL( c.expectedFmtBin, c.lset.FmtBin() ); + } +} + +BOOST_AUTO_TEST_SUITE_END() \ No newline at end of file