test: add testbench for macro namespace
This commit is contained in:
@ -17,9 +17,9 @@ namespace yycc::macro::stl {
|
|||||||
|
|
||||||
/// @brief The STL implementation kind.
|
/// @brief The STL implementation kind.
|
||||||
enum class StlKind {
|
enum class StlKind {
|
||||||
MSSTL, ///< Microsoft STL
|
MsStl, ///< Microsoft STL
|
||||||
GNUSTL, ///< GNU STL
|
GnuStl, ///< GNU STL
|
||||||
CLANGSTL ///< Clang STL
|
ClangStl ///< Clang STL
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -28,11 +28,11 @@ namespace yycc::macro::stl {
|
|||||||
*/
|
*/
|
||||||
inline constexpr StlKind get_stl() {
|
inline constexpr StlKind get_stl() {
|
||||||
#if defined(YYCC_STL_MSSTL)
|
#if defined(YYCC_STL_MSSTL)
|
||||||
return StlKind::MSSTL;
|
return StlKind::MsStl;
|
||||||
#elif defined(YYCC_STL_GNUSTL)
|
#elif defined(YYCC_STL_GNUSTL)
|
||||||
return StlKind::GNUSTL;
|
return StlKind::GnuStl;
|
||||||
#else
|
#else
|
||||||
return StlKind::CLANGSTL;
|
return StlKind::ClangStl;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,6 +7,11 @@ PRIVATE
|
|||||||
|
|
||||||
main.cpp
|
main.cpp
|
||||||
yycc/macro/version_cmp.cpp
|
yycc/macro/version_cmp.cpp
|
||||||
|
yycc/macro/os_detector.cpp
|
||||||
|
yycc/macro/compiler_detector.cpp
|
||||||
|
yycc/macro/endian_detector.cpp
|
||||||
|
yycc/macro/ptr_size_detector.cpp
|
||||||
|
yycc/macro/stl_detector.cpp
|
||||||
yycc/flag_enum.cpp
|
yycc/flag_enum.cpp
|
||||||
yycc/constraint.cpp
|
yycc/constraint.cpp
|
||||||
yycc/constraint/builder.cpp
|
yycc/constraint/builder.cpp
|
||||||
|
20
testbench/yycc/macro/compiler_detector.cpp
Normal file
20
testbench/yycc/macro/compiler_detector.cpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#include <gtest/gtest.h>
|
||||||
|
#include <yycc.hpp>
|
||||||
|
#include <yycc/macro/compiler_detector.hpp>
|
||||||
|
|
||||||
|
#define COMPILER ::yycc::macro::compiler
|
||||||
|
|
||||||
|
namespace yycctest::macro::compiler {
|
||||||
|
|
||||||
|
TEST(MacroCompiler, Main) {
|
||||||
|
auto rv = COMPILER::get_compiler();
|
||||||
|
#if defined(YYCC_CC_MSVC)
|
||||||
|
EXPECT_EQ(rv, COMPILER::CompilerKind::Msvc);
|
||||||
|
#elif defined(YYCC_CC_GCC)
|
||||||
|
EXPECT_EQ(rv, COMPILER::CompilerKind::Gcc);
|
||||||
|
#else
|
||||||
|
EXPECT_EQ(rv, COMPILER::CompilerKind::Clang);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace yycctest::macro::compiler
|
18
testbench/yycc/macro/endian_detector.cpp
Normal file
18
testbench/yycc/macro/endian_detector.cpp
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#include <gtest/gtest.h>
|
||||||
|
#include <yycc.hpp>
|
||||||
|
#include <yycc/macro/endian_detector.hpp>
|
||||||
|
|
||||||
|
#define ENDIAN ::yycc::macro::endian
|
||||||
|
|
||||||
|
namespace yycctest::macro::endian {
|
||||||
|
|
||||||
|
TEST(MacroEndian, Main) {
|
||||||
|
auto rv = ENDIAN::get_endian();
|
||||||
|
#if defined(YYCC_ENDIAN_LITTLE)
|
||||||
|
EXPECT_EQ(rv, ENDIAN::EndianKind::Little);
|
||||||
|
#else
|
||||||
|
EXPECT_EQ(rv, ENDIAN::EndianKind::Big);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace yycctest::macro::endian
|
20
testbench/yycc/macro/os_detector.cpp
Normal file
20
testbench/yycc/macro/os_detector.cpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#include <gtest/gtest.h>
|
||||||
|
#include <yycc.hpp>
|
||||||
|
#include <yycc/macro/os_detector.hpp>
|
||||||
|
|
||||||
|
#define OS ::yycc::macro::os
|
||||||
|
|
||||||
|
namespace yycctest::macro::os {
|
||||||
|
|
||||||
|
TEST(MacroOs, Main) {
|
||||||
|
auto rv = OS::get_os();
|
||||||
|
#if defined(YYCC_OS_WINDOWS)
|
||||||
|
EXPECT_EQ(rv, OS::OsKind::Windows);
|
||||||
|
#elif defined(YYCC_OS_LINUX)
|
||||||
|
EXPECT_EQ(rv, OS::OsKind::Linux);
|
||||||
|
#else
|
||||||
|
EXPECT_EQ(rv, OS::OsKind::MacOs);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace yycctest::macro::os
|
18
testbench/yycc/macro/ptr_size_detector.cpp
Normal file
18
testbench/yycc/macro/ptr_size_detector.cpp
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#include <gtest/gtest.h>
|
||||||
|
#include <yycc.hpp>
|
||||||
|
#include <yycc/macro/ptr_size_detector.hpp>
|
||||||
|
|
||||||
|
#define PTR_SIZE ::yycc::macro::ptr_size
|
||||||
|
|
||||||
|
namespace yycctest::macro::ptr_size {
|
||||||
|
|
||||||
|
TEST(MacroPtrSize, Main) {
|
||||||
|
auto rv = PTR_SIZE::get_ptr_size();
|
||||||
|
#if defined(YYCC_PTRSIZE_32)
|
||||||
|
EXPECT_EQ(rv, PTR_SIZE::PtrSizeKind::Bits32);
|
||||||
|
#else
|
||||||
|
EXPECT_EQ(rv, PTR_SIZE::PtrSizeKind::Bits64);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace yycctest::macro::ptr_size
|
20
testbench/yycc/macro/stl_detector.cpp
Normal file
20
testbench/yycc/macro/stl_detector.cpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#include <gtest/gtest.h>
|
||||||
|
#include <yycc.hpp>
|
||||||
|
#include <yycc/macro/stl_detector.hpp>
|
||||||
|
|
||||||
|
#define STL ::yycc::macro::stl
|
||||||
|
|
||||||
|
namespace yycctest::macro::stl {
|
||||||
|
|
||||||
|
TEST(MacroStl, Main) {
|
||||||
|
auto rv = STL::get_stl();
|
||||||
|
#if defined(YYCC_STL_MSSTL)
|
||||||
|
EXPECT_EQ(rv, STL::StlKind::MsStl);
|
||||||
|
#elif defined(YYCC_STL_GNUSTL)
|
||||||
|
EXPECT_EQ(rv, STL::StlKind::GnuStl);
|
||||||
|
#else
|
||||||
|
EXPECT_EQ(rv, STL::StlKind::ClangStl);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace yycctest::macro::stl
|
Reference in New Issue
Block a user