Merge remote-tracking branch 'origin/develop'
git@65ad157bbb5c14bedf7b3a550836bb0bffa30d1b
https://github.com/srz-zumix/iutest/commit/65ad157bbb5c14bedf7b3a550836bb0bffa30d1b
@@ -47,16 +47,16 @@ | ||
47 | 47 | - template: .ci/azure_pipelines/template-make-nofeature-test.yml |
48 | 48 | parameters: |
49 | 49 | name: nofeature |
50 | - - job: publish | |
51 | - pool: | |
52 | - vmImage: ubuntu-16.04 | |
53 | - dependsOn: | |
54 | - - disabled | |
55 | - - nofeature | |
56 | - condition: always() | |
57 | - steps: | |
58 | - - task: PublishPipelineArtifact@0 | |
59 | - inputs: | |
60 | - artifactName: 'xml2file' | |
61 | - targetPath: $(Build.ArtifactStagingDirectory) | |
50 | + # - job: publish | |
51 | + # pool: | |
52 | + # vmImage: ubuntu-16.04 | |
53 | + # dependsOn: | |
54 | + # - disabled | |
55 | + # - nofeature | |
56 | + # condition: always() | |
57 | + # steps: | |
58 | + # - task: PublishPipelineArtifact@0 | |
59 | + # inputs: | |
60 | + # artifactName: 'xml2file' | |
61 | + # targetPath: $(Build.ArtifactStagingDirectory) | |
62 | 62 |
@@ -106,13 +106,20 @@ | ||
106 | 106 | #define IUTEST_CPLUSPLUS_CXX14 201402L |
107 | 107 | #define IUTEST_CPLUSPLUS_CXX17 201703L |
108 | 108 | |
109 | +// __cplusplus | |
110 | +#if defined(_MSVC_LANG) | |
111 | +# define IUTEST_CPLUSPLUS _MSVC_LANG | |
112 | +#elif defined(__cplusplus) | |
113 | +# define IUTEST_CPLUSPLUS __cplusplus | |
114 | +#else | |
115 | +# define IUTEST_CPLUSPLUS 0 | |
116 | +#endif | |
117 | + | |
109 | 118 | // c++2a |
110 | 119 | |
111 | 120 | #if !defined(IUTEST_HAS_CXX2A) |
112 | -# if (defined(__cplusplus) && __cplusplus > IUTEST_CPLUSPLUS_CXX17) | |
121 | +# if IUTEST_CPLUSPLUS > IUTEST_CPLUSPLUS_CXX17 | |
113 | 122 | # define IUTEST_HAS_CXX2A 1 |
114 | -# elif (defined(_MSVC_LANG) && _MSVC_LANG > IUTEST_CPLUSPLUS_CXX17) | |
115 | -# define IUTEST_HAS_CXX2A 1 | |
116 | 123 | # endif |
117 | 124 | #endif |
118 | 125 |
@@ -123,10 +130,8 @@ | ||
123 | 130 | // c++17 |
124 | 131 | //! is c++17 compiler |
125 | 132 | #if !defined(IUTEST_HAS_CXX17) |
126 | -# if (defined(__cplusplus) && __cplusplus >= IUTEST_CPLUSPLUS_CXX17) | |
133 | +# if IUTEST_CPLUSPLUS >= IUTEST_CPLUSPLUS_CXX17 | |
127 | 134 | # define IUTEST_HAS_CXX17 1 |
128 | -# elif (defined(_MSVC_LANG) && _MSVC_LANG >= IUTEST_CPLUSPLUS_CXX17) | |
129 | -# define IUTEST_HAS_CXX17 1 | |
130 | 135 | # endif |
131 | 136 | #endif |
132 | 137 |
@@ -135,10 +140,8 @@ | ||
135 | 140 | #endif |
136 | 141 | |
137 | 142 | #if !defined(IUTEST_HAS_CXX1Z) |
138 | -# if (defined(__cplusplus) && __cplusplus > IUTEST_CPLUSPLUS_CXX14) | |
143 | +# if IUTEST_CPLUSPLUS > IUTEST_CPLUSPLUS_CXX14 | |
139 | 144 | # define IUTEST_HAS_CXX1Z 1 |
140 | -# elif (defined(_MSVC_LANG) && _MSVC_LANG > IUTEST_CPLUSPLUS_CXX14) | |
141 | -# define IUTEST_HAS_CXX1Z 1 | |
142 | 145 | # endif |
143 | 146 | #endif |
144 | 147 |
@@ -148,10 +151,8 @@ | ||
148 | 151 | |
149 | 152 | //! is c++14 compiler |
150 | 153 | #if !defined(IUTEST_HAS_CXX14) |
151 | -# if (defined(__cplusplus) && __cplusplus >= IUTEST_CPLUSPLUS_CXX14) | |
154 | +# if IUTEST_CPLUSPLUS >= IUTEST_CPLUSPLUS_CXX14 | |
152 | 155 | # define IUTEST_HAS_CXX14 1 |
153 | -# elif (defined(_MSVC_LANG) && _MSVC_LANG >= IUTEST_CPLUSPLUS_CXX14) | |
154 | -# define IUTEST_HAS_CXX14 1 | |
155 | 156 | # endif |
156 | 157 | #endif |
157 | 158 |
@@ -161,7 +162,7 @@ | ||
161 | 162 | |
162 | 163 | //! is c++11 compiler |
163 | 164 | #if !defined(IUTEST_HAS_CXX11) |
164 | -# if (defined(__cplusplus) && __cplusplus >= IUTEST_CPLUSPLUS_CXX11) || defined(__GXX_EXPERIMENTAL_CXX0X__) | |
165 | +# if (IUTEST_CPLUSPLUS >= IUTEST_CPLUSPLUS_CXX11) || defined(__GXX_EXPERIMENTAL_CXX0X__) | |
165 | 166 | # define IUTEST_HAS_CXX11 1 |
166 | 167 | # endif |
167 | 168 | #endif |
@@ -176,7 +177,9 @@ | ||
176 | 177 | |
177 | 178 | //! inline variable |
178 | 179 | #if !defined(IUTEST_HAS_INLINE_VARIABLE) |
179 | -#if defined(__clang__) | |
180 | +#if defined(__cpp_inline_variables) && __cpp_inline_variables >= 201606 | |
181 | +# define IUTEST_HAS_INLINE_VARIABLE 1 | |
182 | +#elif defined(__clang__) | |
180 | 183 | # if IUTEST_HAS_CXX1Z && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 9)) |
181 | 184 | # define IUTEST_HAS_INLINE_VARIABLE 1 |
182 | 185 | # endif |
@@ -353,6 +356,13 @@ | ||
353 | 356 | # define IUTEST_CXX_CONSTEXPR |
354 | 357 | #endif |
355 | 358 | |
359 | +#if IUTEST_HAS_CONSTEXPR && \ | |
360 | + (defined(__cpp_constexpr) && __cpp_constexpr >= 201304 || IUTEST_HAS_CXX14) | |
361 | +# define IUTEST_CXX14_CONSTEXPR constexpr | |
362 | +#else | |
363 | +# define IUTEST_CXX14_CONSTEXPR | |
364 | +#endif | |
365 | + | |
356 | 366 | //! constexpr or const |
357 | 367 | #if IUTEST_HAS_CONSTEXPR |
358 | 368 | # define IUTEST_CXX_CONSTEXPR_OR_CONST constexpr |
@@ -6,7 +6,7 @@ | ||
6 | 6 | * |
7 | 7 | * @author t.shirayanagi |
8 | 8 | * @par copyright |
9 | - * Copyright (C) 2011-2018, Takazumi Shirayanagi\n | |
9 | + * Copyright (C) 2011-2019, Takazumi Shirayanagi\n | |
10 | 10 | * This software is released under the new BSD License, |
11 | 11 | * see LICENSE |
12 | 12 | */ |
@@ -171,6 +171,7 @@ | ||
171 | 171 | IIUT_SHOW_MACRO(IUTEST_PLATFORM); |
172 | 172 | |
173 | 173 | IIUT_SHOW_MACRO(IUTEST_CHECK_STRICT); |
174 | + IIUT_SHOW_MACRO(IUTEST_CPLUSPLUS); | |
174 | 175 | IIUT_SHOW_MACRO(IUTEST_HAS_ANALYSIS_ASSUME); |
175 | 176 | IIUT_SHOW_MACRO(IUTEST_HAS_ATTRIBUTE); |
176 | 177 | IIUT_SHOW_MACRO(IUTEST_HAS_AUTO); |
@@ -231,6 +232,7 @@ | ||
231 | 232 | IIUT_SHOW_MACRO(IUTEST_HAS_VARIADIC_TEMPLATES); |
232 | 233 | IIUT_SHOW_MACRO(IUTEST_HAS_VARIADIC_TEMPLATE_TEMPLATES); |
233 | 234 | IIUT_SHOW_MACRO(IUTEST_HAS_WANT_SECURE_LIB); |
235 | + IIUT_SHOW_MACRO(IUTEST_USE_OWN_LIST); | |
234 | 236 | IIUT_SHOW_MACRO(IUTEST_USE_THROW_ON_ASSERTION_FAILURE); |
235 | 237 | |
236 | 238 | #ifdef IUTEST_LIBSTDCXX_VERSION |
@@ -6,7 +6,7 @@ | ||
6 | 6 | * |
7 | 7 | * @author t.shirayanagi |
8 | 8 | * @par copyright |
9 | - * Copyright (C) 2012-2018, Takazumi Shirayanagi\n | |
9 | + * Copyright (C) 2012-2019, Takazumi Shirayanagi\n | |
10 | 10 | * This software is released under the new BSD License, |
11 | 11 | * see LICENSE |
12 | 12 | */ |
@@ -386,14 +386,14 @@ | ||
386 | 386 | #if !defined(IUTEST_HAS_CXX_HDR_CODECVT) |
387 | 387 | # define IUTEST_HAS_CXX_HDR_CODECVT 0 |
388 | 388 | #endif |
389 | +//! has cstdint header | |
390 | +#if !defined(IUTEST_HAS_CXX_HDR_CSTDINT) | |
391 | +# define IUTEST_HAS_CXX_HDR_CSTDINT 0 | |
392 | +#endif | |
389 | 393 | //! has cuchar |
390 | 394 | #if !defined(IUTEST_HAS_CXX_HDR_CUCHAR) |
391 | 395 | # define IUTEST_HAS_CXX_HDR_CUCHAR 0 |
392 | 396 | #endif |
393 | -//! has cstdint header | |
394 | -#if !defined(IUTEST_HAS_CXX_HDR_CSTDINT) | |
395 | -# define IUTEST_HAS_CXX_HDR_CSTDINT 0 | |
396 | -#endif | |
397 | 397 | //! has filesystem header |
398 | 398 | #if !defined(IUTEST_HAS_CXX_HDR_FILESYSTEM) |
399 | 399 | # define IUTEST_HAS_CXX_HDR_FILESYSTEM 0 |
@@ -17,11 +17,11 @@ | ||
17 | 17 | |
18 | 18 | //====================================================================== |
19 | 19 | // define |
20 | -#define IUTEST_VER 0x01169915u //!< iutest version 1.16.99.15 | |
20 | +#define IUTEST_VER 0x01169917u //!< iutest version 1.16.99.17 | |
21 | 21 | #define IUTEST_MAJORVER 0x01u //!< Major Version |
22 | 22 | #define IUTEST_MINORVER 0x16u //!< Minor Version |
23 | 23 | #define IUTEST_MICROVER 0x99u //!< Micro Version |
24 | -#define IUTEST_REVISION 0x15u //!< Revision | |
24 | +#define IUTEST_REVISION 0x17u //!< Revision | |
25 | 25 | |
26 | 26 | #define IUTEST_BUILD IUTEST_MICROVER //!< @deprecated |
27 | 27 |
@@ -252,7 +252,13 @@ | ||
252 | 252 | cxx_executable_test(tap_file_generator_listener_tests) |
253 | 253 | cxx_executable_test(tap_printer_listener_tests) |
254 | 254 | cxx_executable_test(type_param_strict_tests) |
255 | - cxx_executable_test(unit_tests) | |
255 | + cxx_executable_test_with_main(unit_tests | |
256 | + unit_file_tests.cpp | |
257 | + unit_macro_tests.cpp | |
258 | + unit_misc_tests.cpp | |
259 | + unit_string_tests.cpp | |
260 | + unit_typetraits_tests.cpp | |
261 | + ) | |
256 | 262 | endif() |
257 | 263 | |
258 | 264 | ######################################################################## |
@@ -1,255 +0,0 @@ | ||
1 | -//====================================================================== | |
2 | -//----------------------------------------------------------------------- | |
3 | -/** | |
4 | - * @file unit_tests.cpp | |
5 | - * @brief iutest test | |
6 | - * | |
7 | - * @author t.shirayanagi | |
8 | - * @par copyright | |
9 | - * Copyright (C) 2013-2018, Takazumi Shirayanagi\n | |
10 | - * The new BSD License is applied to this software. | |
11 | - * see LICENSE | |
12 | -*/ | |
13 | -//----------------------------------------------------------------------- | |
14 | -//====================================================================== | |
15 | - | |
16 | -//====================================================================== | |
17 | -// include | |
18 | -#include "iutest.hpp" | |
19 | -#include "internal/iutest_filepath.hpp" | |
20 | - | |
21 | -class Base {}; | |
22 | -class Derived : public Base {}; | |
23 | -class Hoge {}; | |
24 | - | |
25 | -typedef int inttype; | |
26 | - | |
27 | -IUTEST(UnitTest, is_class) | |
28 | -{ | |
29 | - IUTEST_STATIC_ASSERT( !::iutest_type_traits::is_class<int>::value ); | |
30 | - IUTEST_STATIC_ASSERT( ::iutest_type_traits::is_class<Base>::value ); | |
31 | - IUTEST_STATIC_ASSERT( ::iutest_type_traits::is_class<Derived>::value ); | |
32 | - IUTEST_STATIC_ASSERT( !::iutest_type_traits::is_class<void (*)()>::value ); | |
33 | -} | |
34 | - | |
35 | -IUTEST(UnitTest, is_same) | |
36 | -{ | |
37 | - IUTEST_STATIC_ASSERT( !(::iutest_type_traits::is_same<int, char>::value) ); | |
38 | - IUTEST_STATIC_ASSERT( (::iutest_type_traits::is_same<int, int>::value) ); | |
39 | - IUTEST_STATIC_ASSERT( (::iutest_type_traits::is_same<int, inttype>::value) ); | |
40 | -} | |
41 | - | |
42 | -IUTEST(UnitTest, is_void) | |
43 | -{ | |
44 | - IUTEST_STATIC_ASSERT( !::iutest_type_traits::is_void<void*>::value ); | |
45 | - IUTEST_STATIC_ASSERT( ::iutest_type_traits::is_void<void>::value ); | |
46 | - IUTEST_STATIC_ASSERT( !::iutest_type_traits::is_void<int>::value ); | |
47 | -} | |
48 | - | |
49 | -IUTEST(UnitTest, is_base_of) | |
50 | -{ | |
51 | - IUTEST_STATIC_ASSERT( !(::iutest_type_traits::is_base_of<int, Base>::value) ); | |
52 | - IUTEST_STATIC_ASSERT( (::iutest_type_traits::is_base_of<Base, Derived>::value) ); | |
53 | - IUTEST_STATIC_ASSERT( (::iutest_type_traits::is_base_of<Base, const Derived>::value) ); | |
54 | - IUTEST_STATIC_ASSERT( (::iutest_type_traits::is_base_of<const volatile Base, Derived>::value) ); | |
55 | - IUTEST_STATIC_ASSERT( (::iutest_type_traits::is_base_of<volatile Base, volatile Derived const>::value) ); | |
56 | - IUTEST_STATIC_ASSERT( !(::iutest_type_traits::is_base_of<Base, Hoge>::value) ); | |
57 | - IUTEST_STATIC_ASSERT( (::iutest_type_traits::is_base_of<Derived, Derived>::value) ); | |
58 | -} | |
59 | - | |
60 | -#if !defined(IUTEST_NO_ARGUMENT_DEPENDENT_LOOKUP) | |
61 | - | |
62 | -struct X | |
63 | -{ | |
64 | - int a, b, c; | |
65 | -}; | |
66 | -struct Y | |
67 | -{ | |
68 | - int a, b, c; | |
69 | - bool operator == (const Y&) { return true; } | |
70 | -}; | |
71 | - | |
72 | -struct Z | |
73 | -{ | |
74 | - int a, b, c; | |
75 | -}; | |
76 | - | |
77 | -bool operator == (const Z&, const Z&) { return true; } | |
78 | - | |
79 | -IUTEST(UnitTest, has_equal_to) | |
80 | -{ | |
81 | - IUTEST_STATIC_ASSERT( ::iutest_type_traits::has_equal_to<int>::value ); | |
82 | - IUTEST_STATIC_ASSERT( ::iutest_type_traits::has_equal_to<float>::value ); | |
83 | - IUTEST_STATIC_ASSERT( !::iutest_type_traits::has_equal_to<X>::value ); | |
84 | - IUTEST_STATIC_ASSERT( ::iutest_type_traits::has_equal_to<Y>::value ); | |
85 | - IUTEST_STATIC_ASSERT( ::iutest_type_traits::has_equal_to<Z>::value ); | |
86 | - IUTEST_STATIC_ASSERT( ::iutest_type_traits::has_equal_to< ::std::vector<int> >::value ); | |
87 | -} | |
88 | - | |
89 | -#if IUTEST_HAS_TUPLE | |
90 | -typedef ::iutest::tuples::tuple<bool, int, int> Tuple; | |
91 | - | |
92 | -IUTEST(UnitTest, has_equal_to_tuple) | |
93 | -{ | |
94 | - IUTEST_STATIC_ASSERT( ::iutest_type_traits::has_equal_to<Tuple>::value ); | |
95 | -} | |
96 | -#endif | |
97 | - | |
98 | -#endif | |
99 | - | |
100 | -IUTEST(UnitTest, StringStrip) | |
101 | -{ | |
102 | - ::std::string str = " a1 a2 "; | |
103 | - IUTEST_EXPECT_STREQ("a1 a2 " , ::iutest::detail::StripLeadingSpace(str)); | |
104 | - IUTEST_EXPECT_STREQ(" a1 a2", ::iutest::detail::StripTrailingSpace(str)); | |
105 | - IUTEST_EXPECT_STREQ("a1 a2" , ::iutest::detail::StripSpace(str)); | |
106 | -} | |
107 | - | |
108 | -IUTEST(UnitTest, StringReplace) | |
109 | -{ | |
110 | - ::std::string str = "a1a2a3a4b5"; | |
111 | - ::iutest::detail::StringReplace(str, 'a', "ii"); | |
112 | - IUTEST_EXPECT_STREQ("ii1ii2ii3ii4b5", str); | |
113 | -} | |
114 | - | |
115 | -IUTEST(UnitTest, StringReplaceToLF) | |
116 | -{ | |
117 | - ::std::string str = "a\r\nb\r\rc\r\n\nd"; | |
118 | - ::iutest::detail::StringReplaceToLF(str); | |
119 | - IUTEST_EXPECT_STREQ("a\nb\n\nc\n\nd", str); | |
120 | -} | |
121 | - | |
122 | -IUTEST(UnitTest, AddDefaultPackageName) | |
123 | -{ | |
124 | - IUTEST_EXPECT_STREQ("Test.a1a2a3a4b5", ::iutest::TestEnv::AddDefaultPackageName("a1a2a3a4b5")); | |
125 | - IUTEST_EXPECT_STREQ("Hoge.a1a2a3a4b5", ::iutest::TestEnv::AddDefaultPackageName("Hoge.a1a2a3a4b5")); | |
126 | -} | |
127 | - | |
128 | -class HackXmlGeneratorListener : public ::iutest::DefaultXmlGeneratorListener | |
129 | -{ | |
130 | - HackXmlGeneratorListener() : ::iutest::DefaultXmlGeneratorListener("") {} | |
131 | -public: | |
132 | - using DefaultXmlGeneratorListener::EscapeXmlAttribute; | |
133 | - using DefaultXmlGeneratorListener::EscapeXmlText; | |
134 | -}; | |
135 | - | |
136 | -IUTEST(UnitTest, XmlEscape) | |
137 | -{ | |
138 | - IUTEST_EXPECT_STREQ("a<>	b& '"c
" | |
139 | - , HackXmlGeneratorListener::EscapeXmlAttribute("a<> b& \'\"c\r\n"));// NOLINT | |
140 | - IUTEST_EXPECT_STREQ("a<> b& \'\"c\r\n" // NOLINT | |
141 | - , HackXmlGeneratorListener::EscapeXmlText("a<> b& \'\"c\r\n")); // NOLINT | |
142 | -} | |
143 | - | |
144 | -IUTEST(UnitTest, FileLocation) | |
145 | -{ | |
146 | - ::iutest::IUTEST_FLAG(file_location_style_msvc) = false; | |
147 | - IUTEST_EXPECT_STREQ("main.cpp:1" | |
148 | - , ::iutest::detail::FormatFileLocation("main.cpp", 1) ); | |
149 | - IUTEST_EXPECT_STREQ("unknown file:1" | |
150 | - , ::iutest::detail::FormatFileLocation(NULL, 1) ); | |
151 | - IUTEST_EXPECT_STREQ("main.cpp" | |
152 | - , ::iutest::detail::FormatFileLocation("main.cpp", -1) ); | |
153 | - | |
154 | - ::iutest::IUTEST_FLAG(file_location_style_msvc) = true; | |
155 | - IUTEST_EXPECT_STREQ("main.cpp(1)" | |
156 | - , ::iutest::detail::FormatFileLocation("main.cpp", 1) ); | |
157 | - IUTEST_EXPECT_STREQ("unknown file(1)" | |
158 | - , ::iutest::detail::FormatFileLocation(NULL, 1) ); | |
159 | - IUTEST_EXPECT_STREQ("main.cpp" | |
160 | - , ::iutest::detail::FormatFileLocation("main.cpp", -1) ); | |
161 | -} | |
162 | - | |
163 | -IUTEST(UnitTest, GetEnvironmentVariable) | |
164 | -{ | |
165 | - char buf[2]; | |
166 | - IUTEST_EXPECT_FALSE( ::iutest::detail::GetEnvironmentVariable("PATH", buf, sizeof(buf)) ); | |
167 | - IUTEST_EXPECT_FALSE( ::iutest::detail::GetEnvironmentVariable("PATH", NULL, 0) ); | |
168 | -} | |
169 | - | |
170 | -#if IUTEST_HAS_FILENO && IUTEST_HAS_FOPEN | |
171 | - | |
172 | -IUTEST(StdFileUnitTest, AppendOpenedFileSize) | |
173 | -{ | |
174 | - ::iutest::StdioFile file; | |
175 | - ::iutest::internal::FilePath filename(__FILE__); | |
176 | - IUTEST_ASSUME_TRUE( filename.FileOrDirectoryExists() ); | |
177 | - IUTEST_ASSERT_TRUE( file.Open(filename.string().c_str(), iutest::IFile::OpenAppend) ); | |
178 | - IUTEST_ASSERT_LT(0u, file.GetSize()); | |
179 | -} | |
180 | - | |
181 | -#endif | |
182 | - | |
183 | - | |
184 | -IUTEST(UnitTest, ToHexString) | |
185 | -{ | |
186 | - IUTEST_EXPECT_STREQ( "00", ::iutest::detail::ToHexString< ::iutest::UInt8 >(0)); | |
187 | - IUTEST_EXPECT_STREQ( "0000", ::iutest::detail::ToHexString< ::iutest::UInt16 >(0)); | |
188 | - IUTEST_EXPECT_STREQ( "00000000", ::iutest::detail::ToHexString< ::iutest::UInt32 >(0)); | |
189 | - IUTEST_EXPECT_STREQ("0000000000000000", ::iutest::detail::ToHexString< ::iutest::UInt64 >(0)); | |
190 | - IUTEST_EXPECT_STREQ( "01234567", ::iutest::detail::ToHexString(0x01234567u)); | |
191 | -} | |
192 | - | |
193 | -IUTEST(UnitTest, ToOctString) | |
194 | -{ | |
195 | - IUTEST_EXPECT_STREQ( "000", ::iutest::detail::ToOctString< ::iutest::UInt8 >(0)); | |
196 | - IUTEST_EXPECT_STREQ( "000000", ::iutest::detail::ToOctString< ::iutest::UInt16 >(0)); | |
197 | - IUTEST_EXPECT_STREQ( "00000000000", ::iutest::detail::ToOctString< ::iutest::UInt32 >(0)); | |
198 | - IUTEST_EXPECT_STREQ("0000000000000000000000", ::iutest::detail::ToOctString< ::iutest::UInt64 >(0)); | |
199 | - IUTEST_EXPECT_STREQ( "377", ::iutest::detail::ToOctString< ::iutest::UInt8 >(0377u)); | |
200 | -} | |
201 | - | |
202 | -IUTEST(UnitTest, FormatSizeByte) | |
203 | -{ | |
204 | - IUTEST_EXPECT_STREQ("0B", ::iutest::detail::FormatSizeByte(0)); | |
205 | - IUTEST_EXPECT_STREQ("2B", ::iutest::detail::FormatSizeByte(2)); | |
206 | -} | |
207 | - | |
208 | -IUTEST(UnitTest, FormatSizeKByte) | |
209 | -{ | |
210 | - IUTEST_EXPECT_STREQ("1KB", ::iutest::detail::FormatSizeByte(1024)); | |
211 | - IUTEST_EXPECT_STREQ("1.0KB", ::iutest::detail::FormatSizeByte(1025)); | |
212 | -} | |
213 | - | |
214 | -IUTEST(UnitTest, FormatSizeMByte) | |
215 | -{ | |
216 | - IUTEST_EXPECT_STREQ("1MB", ::iutest::detail::FormatSizeByte(1024 * 1024)); | |
217 | - IUTEST_EXPECT_STREQ("1.9MB", ::iutest::detail::FormatSizeByte(2 * 1024 * 1024 - 1)); | |
218 | -} | |
219 | - | |
220 | -IUTEST(UnitTest, FormatSizeGByte) | |
221 | -{ | |
222 | - IUTEST_EXPECT_STREQ("1GB", ::iutest::detail::FormatSizeByte(1024 * 1024 * 1024)); | |
223 | -} | |
224 | - | |
225 | -IUTEST(UnitTest, FormatSizeTByte) | |
226 | -{ | |
227 | - IUTEST_EXPECT_STREQ("1TB", ::iutest::detail::FormatSizeByte(1024ull * 1024 * 1024 * 1024)); | |
228 | - IUTEST_EXPECT_STREQ("1024TB", ::iutest::detail::FormatSizeByte(1024ull * 1024 * 1024 * 1024 * 1024)); | |
229 | -} | |
230 | - | |
231 | -IUTEST(UnitTest, EmptyAny) | |
232 | -{ | |
233 | - ::iutest::any a; | |
234 | - ::iutest::any* p = NULL; | |
235 | - IUTEST_EXPECT_NULL(::iutest::unsafe_any_cast<int>(p)); | |
236 | - IUTEST_EXPECT_NULL(::iutest::unsafe_any_cast<int>(&a)); | |
237 | -} | |
238 | - | |
239 | -IUTEST(UnitTest, StringAny) | |
240 | -{ | |
241 | - ::iutest::any a = "test"; | |
242 | - IUTEST_EXPECT_EQ("test", ::iutest::any_cast< ::std::string >(a)); | |
243 | -} | |
244 | - | |
245 | -#ifdef UNICODE | |
246 | -int wmain(int argc, wchar_t* argv[]) | |
247 | -#else | |
248 | -int main(int argc, char* argv[]) | |
249 | -#endif | |
250 | -{ | |
251 | - IUTEST_INIT(&argc, argv); | |
252 | - ::iutest::IUTEST_FLAG(default_package_name) = "Test"; | |
253 | - return IUTEST_RUN_ALL_TESTS(); | |
254 | -} | |
255 | - |
@@ -70,6 +70,18 @@ | ||
70 | 70 | |
71 | 71 | EXTENSIONTESTS_TARGET=extension_tests |
72 | 72 | |
73 | +UNITTESTS_TEST_SRCS= \ | |
74 | + unit_file_tests.cpp \ | |
75 | + unit_macro_tests.cpp \ | |
76 | + unit_misc_tests.cpp \ | |
77 | + unit_string_tests.cpp \ | |
78 | + unit_typetraits_tests.cpp \ | |
79 | + | |
80 | +UNITTESTS_SRCS= main.cpp \ | |
81 | + $(UNITTESTS_TEST_SRCS) | |
82 | + | |
83 | +UNITTESTS_TARGET=unit_tests | |
84 | + | |
73 | 85 | SYNTAXTESTS_TEST_SRCS= \ |
74 | 86 | syntax_tests.cpp \ |
75 | 87 |
@@ -162,8 +174,7 @@ | ||
162 | 174 | no_yoda_tests \ |
163 | 175 | tap_file_generator_listener_tests \ |
164 | 176 | tap_printer_listener_tests \ |
165 | - type_param_strict_tests \ | |
166 | - unit_tests \ | |
177 | + type_param_strict_tests | |
167 | 178 | |
168 | 179 | COMPILEERROR_TARGETS=\ |
169 | 180 | check_strict_tests \ |
@@ -33,7 +33,7 @@ | ||
33 | 33 | # |
34 | 34 | !include <CommonMakefile.in> |
35 | 35 | |
36 | -RUN_TARGETS = $(ALLTESTS_TARGET) $(EXTENSIONTESTS_TARGET) $(NAMESPACETESTS_TARGET) $(TARGETS1) $(TARGETS2) $(TARGETS_IUTEST_ONLY) | |
36 | +RUN_TARGETS = $(ALLTESTS_TARGET) $(EXTENSIONTESTS_TARGET) $(NAMESPACETESTS_TARGET) $(TARGETS1) $(TARGETS2) $(TARGETS_IUTEST_ONLY) $(UNITTESTS_TARGET) | |
37 | 37 | BUILD_TARGETS = $(RUN_TARGETS) $(BUILD_ONLY) |
38 | 38 | # BUILD_TARGETS = $(RUN_TARGETS) $(BUILD_ONLY) $(COMPILEERROR_TARGETS) |
39 | 39 | TARGETS = $(BUILD_TARGETS) |
@@ -104,6 +104,9 @@ | ||
104 | 104 | $(EXTENSIONTESTS_TARGET) : $(EXTENSIONTESTS_SRCS) $(IUTEST_HEADERS) Makefile |
105 | 105 | $(CXX) $(IUTEST_INCLUDE) $(CXXFLAGS) /Fe$@ $(EXTENSIONTESTS_SRCS) $(LDFLAGS) |
106 | 106 | |
107 | +$(UNITTESTS_TARGET) : $(UNITTESTS_SRCS) $(IUTEST_HEADERS) Makefile | |
108 | + $(CXX) $(IUTEST_INCLUDE) $(CXXFLAGS) /Fe$@ $(UNITTESTS_SRCS) $(LDFLAGS) | |
109 | + | |
107 | 110 | $(NAMESPACETESTS_TARGET) : $(NAMESPACETESTS_SRCS) $(IUTEST_HEADERS) Makefile |
108 | 111 | $(CXX) $(IUTEST_INCLUDE) $(CXXFLAGS) /Fe$@ $(NAMESPACETESTS_SRCS) $(LDFLAGS) |
109 | 112 |
@@ -0,0 +1,34 @@ | ||
1 | +//====================================================================== | |
2 | +//----------------------------------------------------------------------- | |
3 | +/** | |
4 | + * @file unit_filepath_tests.cpp | |
5 | + * @brief iutest test | |
6 | + * | |
7 | + * @author t.shirayanagi | |
8 | + * @par copyright | |
9 | + * Copyright (C) 2013-2019, Takazumi Shirayanagi\n | |
10 | + * The new BSD License is applied to this software. | |
11 | + * see LICENSE | |
12 | +*/ | |
13 | +//----------------------------------------------------------------------- | |
14 | +//====================================================================== | |
15 | + | |
16 | +//====================================================================== | |
17 | +// include | |
18 | +#include "iutest.hpp" | |
19 | +#include "internal/iutest_filepath.hpp" | |
20 | + | |
21 | + | |
22 | +#if IUTEST_HAS_FILENO && IUTEST_HAS_FOPEN | |
23 | + | |
24 | +IUTEST(StdFileUnitTest, AppendOpenedFileSize) | |
25 | +{ | |
26 | + ::iutest::StdioFile file; | |
27 | + ::iutest::internal::FilePath filename(__FILE__); | |
28 | + IUTEST_ASSUME_TRUE( filename.FileOrDirectoryExists() ); | |
29 | + IUTEST_ASSERT_TRUE( file.Open(filename.string().c_str(), iutest::IFile::OpenAppend) ); | |
30 | + IUTEST_ASSERT_LT(0u, file.GetSize()); | |
31 | +} | |
32 | + | |
33 | +#endif | |
34 | + |
@@ -0,0 +1,36 @@ | ||
1 | +//====================================================================== | |
2 | +//----------------------------------------------------------------------- | |
3 | +/** | |
4 | + * @file unit_macro_tests.cpp | |
5 | + * @brief iutest test | |
6 | + * | |
7 | + * @author t.shirayanagi | |
8 | + * @par copyright | |
9 | + * Copyright (C) 2019, Takazumi Shirayanagi\n | |
10 | + * The new BSD License is applied to this software. | |
11 | + * see LICENSE | |
12 | +*/ | |
13 | +//----------------------------------------------------------------------- | |
14 | +//====================================================================== | |
15 | + | |
16 | +//====================================================================== | |
17 | +// include | |
18 | +#include "iutest.hpp" | |
19 | + | |
20 | +IUTEST(UnitMacroTest, CXX) | |
21 | +{ | |
22 | +#if IUTEST_HAS_CXX2A | |
23 | + IUTEST_EXPECT_EQ(1, IUTEST_HAS_CXX17); | |
24 | + IUTEST_EXPECT_EQ(1, IUTEST_HAS_CXX1Z); | |
25 | +#endif | |
26 | +#if IUTEST_HAS_CXX17 | |
27 | + IUTEST_EXPECT_EQ(1, IUTEST_HAS_CXX1Z); | |
28 | + IUTEST_EXPECT_EQ(1, IUTEST_HAS_CXX14); | |
29 | +#endif | |
30 | +#if IUTEST_HAS_CXX1Z | |
31 | + IUTEST_EXPECT_EQ(1, IUTEST_HAS_CXX14); | |
32 | +#endif | |
33 | +#if IUTEST_HAS_CXX14 | |
34 | + IUTEST_EXPECT_EQ(1, IUTEST_HAS_CXX11); | |
35 | +#endif | |
36 | +} |
@@ -0,0 +1,39 @@ | ||
1 | +//====================================================================== | |
2 | +//----------------------------------------------------------------------- | |
3 | +/** | |
4 | + * @file unit_misc_tests.cpp | |
5 | + * @brief iutest test | |
6 | + * | |
7 | + * @author t.shirayanagi | |
8 | + * @par copyright | |
9 | + * Copyright (C) 2013-2019, Takazumi Shirayanagi\n | |
10 | + * The new BSD License is applied to this software. | |
11 | + * see LICENSE | |
12 | +*/ | |
13 | +//----------------------------------------------------------------------- | |
14 | +//====================================================================== | |
15 | + | |
16 | +//====================================================================== | |
17 | +// include | |
18 | +#include "iutest.hpp" | |
19 | + | |
20 | +IUTEST(UnitEnvTest, GetEnvironmentVariable) | |
21 | +{ | |
22 | + char buf[2]; | |
23 | + IUTEST_EXPECT_FALSE(::iutest::detail::GetEnvironmentVariable("PATH", buf, sizeof(buf))); | |
24 | + IUTEST_EXPECT_FALSE(::iutest::detail::GetEnvironmentVariable("PATH", NULL, 0)); | |
25 | +} | |
26 | + | |
27 | +IUTEST(UnitAnyTest, Empty) | |
28 | +{ | |
29 | + ::iutest::any a; | |
30 | + ::iutest::any* p = NULL; | |
31 | + IUTEST_EXPECT_NULL(::iutest::unsafe_any_cast<int>(p)); | |
32 | + IUTEST_EXPECT_NULL(::iutest::unsafe_any_cast<int>(&a)); | |
33 | +} | |
34 | + | |
35 | +IUTEST(UnitAnyTest, String) | |
36 | +{ | |
37 | + ::iutest::any a = "test"; | |
38 | + IUTEST_EXPECT_EQ("test", ::iutest::any_cast< ::std::string >(a)); | |
39 | +} |
@@ -0,0 +1,131 @@ | ||
1 | +//====================================================================== | |
2 | +//----------------------------------------------------------------------- | |
3 | +/** | |
4 | + * @file unit_string_tests.cpp | |
5 | + * @brief iutest test | |
6 | + * | |
7 | + * @author t.shirayanagi | |
8 | + * @par copyright | |
9 | + * Copyright (C) 2013-2019, Takazumi Shirayanagi\n | |
10 | + * The new BSD License is applied to this software. | |
11 | + * see LICENSE | |
12 | +*/ | |
13 | +//----------------------------------------------------------------------- | |
14 | +//====================================================================== | |
15 | + | |
16 | +//====================================================================== | |
17 | +// include | |
18 | +#include "iutest.hpp" | |
19 | + | |
20 | +IUTEST(UnitStringTest, StringStrip) | |
21 | +{ | |
22 | + ::std::string str = " a1 a2 "; | |
23 | + IUTEST_EXPECT_STREQ("a1 a2 " , ::iutest::detail::StripLeadingSpace(str)); | |
24 | + IUTEST_EXPECT_STREQ(" a1 a2", ::iutest::detail::StripTrailingSpace(str)); | |
25 | + IUTEST_EXPECT_STREQ("a1 a2" , ::iutest::detail::StripSpace(str)); | |
26 | +} | |
27 | + | |
28 | +IUTEST(UnitStringTest, StringReplace) | |
29 | +{ | |
30 | + ::std::string str = "a1a2a3a4b5"; | |
31 | + ::iutest::detail::StringReplace(str, 'a', "ii"); | |
32 | + IUTEST_EXPECT_STREQ("ii1ii2ii3ii4b5", str); | |
33 | +} | |
34 | + | |
35 | +IUTEST(UnitStringTest, StringReplaceToLF) | |
36 | +{ | |
37 | + ::std::string str = "a\r\nb\r\rc\r\n\nd"; | |
38 | + ::iutest::detail::StringReplaceToLF(str); | |
39 | + IUTEST_EXPECT_STREQ("a\nb\n\nc\n\nd", str); | |
40 | +} | |
41 | + | |
42 | +IUTEST(UnitStringTest, AddDefaultPackageName) | |
43 | +{ | |
44 | + const ::std::string prev_name = ::iutest::IUTEST_FLAG(default_package_name); | |
45 | + ::iutest::IUTEST_FLAG(default_package_name) = "Test"; | |
46 | + IUTEST_EXPECT_STREQ("Test.a1a2a3a4b5", ::iutest::TestEnv::AddDefaultPackageName("a1a2a3a4b5")); | |
47 | + IUTEST_EXPECT_STREQ("Hoge.a1a2a3a4b5", ::iutest::TestEnv::AddDefaultPackageName("Hoge.a1a2a3a4b5")); | |
48 | + ::iutest::IUTEST_FLAG(default_package_name) = prev_name; | |
49 | +} | |
50 | + | |
51 | +class HackXmlGeneratorListener : public ::iutest::DefaultXmlGeneratorListener | |
52 | +{ | |
53 | + HackXmlGeneratorListener() : ::iutest::DefaultXmlGeneratorListener("") {} | |
54 | +public: | |
55 | + using DefaultXmlGeneratorListener::EscapeXmlAttribute; | |
56 | + using DefaultXmlGeneratorListener::EscapeXmlText; | |
57 | +}; | |
58 | + | |
59 | +IUTEST(UnitStringTest, XmlEscape) | |
60 | +{ | |
61 | + IUTEST_EXPECT_STREQ("a<>	b& '"c
" | |
62 | + , HackXmlGeneratorListener::EscapeXmlAttribute("a<> b& \'\"c\r\n"));// NOLINT | |
63 | + IUTEST_EXPECT_STREQ("a<> b& \'\"c\r\n" // NOLINT | |
64 | + , HackXmlGeneratorListener::EscapeXmlText("a<> b& \'\"c\r\n")); // NOLINT | |
65 | +} | |
66 | + | |
67 | +IUTEST(UnitStringTest, FileLocation) | |
68 | +{ | |
69 | + ::iutest::IUTEST_FLAG(file_location_style_msvc) = false; | |
70 | + IUTEST_EXPECT_STREQ("main.cpp:1" | |
71 | + , ::iutest::detail::FormatFileLocation("main.cpp", 1) ); | |
72 | + IUTEST_EXPECT_STREQ("unknown file:1" | |
73 | + , ::iutest::detail::FormatFileLocation(NULL, 1) ); | |
74 | + IUTEST_EXPECT_STREQ("main.cpp" | |
75 | + , ::iutest::detail::FormatFileLocation("main.cpp", -1) ); | |
76 | + | |
77 | + ::iutest::IUTEST_FLAG(file_location_style_msvc) = true; | |
78 | + IUTEST_EXPECT_STREQ("main.cpp(1)" | |
79 | + , ::iutest::detail::FormatFileLocation("main.cpp", 1) ); | |
80 | + IUTEST_EXPECT_STREQ("unknown file(1)" | |
81 | + , ::iutest::detail::FormatFileLocation(NULL, 1) ); | |
82 | + IUTEST_EXPECT_STREQ("main.cpp" | |
83 | + , ::iutest::detail::FormatFileLocation("main.cpp", -1) ); | |
84 | +} | |
85 | + | |
86 | +IUTEST(UnitStringTest, ToHexString) | |
87 | +{ | |
88 | + IUTEST_EXPECT_STREQ( "00", ::iutest::detail::ToHexString< ::iutest::UInt8 >(0)); | |
89 | + IUTEST_EXPECT_STREQ( "0000", ::iutest::detail::ToHexString< ::iutest::UInt16 >(0)); | |
90 | + IUTEST_EXPECT_STREQ( "00000000", ::iutest::detail::ToHexString< ::iutest::UInt32 >(0)); | |
91 | + IUTEST_EXPECT_STREQ("0000000000000000", ::iutest::detail::ToHexString< ::iutest::UInt64 >(0)); | |
92 | + IUTEST_EXPECT_STREQ( "01234567", ::iutest::detail::ToHexString(0x01234567u)); | |
93 | +} | |
94 | + | |
95 | +IUTEST(UnitStringTest, ToOctString) | |
96 | +{ | |
97 | + IUTEST_EXPECT_STREQ( "000", ::iutest::detail::ToOctString< ::iutest::UInt8 >(0)); | |
98 | + IUTEST_EXPECT_STREQ( "000000", ::iutest::detail::ToOctString< ::iutest::UInt16 >(0)); | |
99 | + IUTEST_EXPECT_STREQ( "00000000000", ::iutest::detail::ToOctString< ::iutest::UInt32 >(0)); | |
100 | + IUTEST_EXPECT_STREQ("0000000000000000000000", ::iutest::detail::ToOctString< ::iutest::UInt64 >(0)); | |
101 | + IUTEST_EXPECT_STREQ( "377", ::iutest::detail::ToOctString< ::iutest::UInt8 >(0377u)); | |
102 | +} | |
103 | + | |
104 | +IUTEST(UnitStringTest, FormatSizeByte) | |
105 | +{ | |
106 | + IUTEST_EXPECT_STREQ("0B", ::iutest::detail::FormatSizeByte(0)); | |
107 | + IUTEST_EXPECT_STREQ("2B", ::iutest::detail::FormatSizeByte(2)); | |
108 | +} | |
109 | + | |
110 | +IUTEST(UnitStringTest, FormatSizeKByte) | |
111 | +{ | |
112 | + IUTEST_EXPECT_STREQ("1KB", ::iutest::detail::FormatSizeByte(1024)); | |
113 | + IUTEST_EXPECT_STREQ("1.0KB", ::iutest::detail::FormatSizeByte(1025)); | |
114 | +} | |
115 | + | |
116 | +IUTEST(UnitStringTest, FormatSizeMByte) | |
117 | +{ | |
118 | + IUTEST_EXPECT_STREQ("1MB", ::iutest::detail::FormatSizeByte(1024 * 1024)); | |
119 | + IUTEST_EXPECT_STREQ("1.9MB", ::iutest::detail::FormatSizeByte(2 * 1024 * 1024 - 1)); | |
120 | +} | |
121 | + | |
122 | +IUTEST(UnitStringTest, FormatSizeGByte) | |
123 | +{ | |
124 | + IUTEST_EXPECT_STREQ("1GB", ::iutest::detail::FormatSizeByte(1024 * 1024 * 1024)); | |
125 | +} | |
126 | + | |
127 | +IUTEST(UnitStringTest, FormatSizeTByte) | |
128 | +{ | |
129 | + IUTEST_EXPECT_STREQ("1TB", ::iutest::detail::FormatSizeByte(1024ull * 1024 * 1024 * 1024)); | |
130 | + IUTEST_EXPECT_STREQ("1024TB", ::iutest::detail::FormatSizeByte(1024ull * 1024 * 1024 * 1024 * 1024)); | |
131 | +} |
@@ -0,0 +1,97 @@ | ||
1 | +//====================================================================== | |
2 | +//----------------------------------------------------------------------- | |
3 | +/** | |
4 | + * @file unit_typetraits_tests.cpp | |
5 | + * @brief iutest test | |
6 | + * | |
7 | + * @author t.shirayanagi | |
8 | + * @par copyright | |
9 | + * Copyright (C) 2013-2019, Takazumi Shirayanagi\n | |
10 | + * The new BSD License is applied to this software. | |
11 | + * see LICENSE | |
12 | +*/ | |
13 | +//----------------------------------------------------------------------- | |
14 | +//====================================================================== | |
15 | + | |
16 | +//====================================================================== | |
17 | +// include | |
18 | +#include "iutest.hpp" | |
19 | + | |
20 | +class Base {}; | |
21 | +class Derived : public Base {}; | |
22 | +class Hoge {}; | |
23 | + | |
24 | +typedef int inttype; | |
25 | + | |
26 | +IUTEST(UnitTest, is_class) | |
27 | +{ | |
28 | + IUTEST_STATIC_ASSERT( !::iutest_type_traits::is_class<int>::value ); | |
29 | + IUTEST_STATIC_ASSERT( ::iutest_type_traits::is_class<Base>::value ); | |
30 | + IUTEST_STATIC_ASSERT( ::iutest_type_traits::is_class<Derived>::value ); | |
31 | + IUTEST_STATIC_ASSERT( !::iutest_type_traits::is_class<void (*)()>::value ); | |
32 | +} | |
33 | + | |
34 | +IUTEST(UnitTest, is_same) | |
35 | +{ | |
36 | + IUTEST_STATIC_ASSERT( !(::iutest_type_traits::is_same<int, char>::value) ); | |
37 | + IUTEST_STATIC_ASSERT( (::iutest_type_traits::is_same<int, int>::value) ); | |
38 | + IUTEST_STATIC_ASSERT( (::iutest_type_traits::is_same<int, inttype>::value) ); | |
39 | +} | |
40 | + | |
41 | +IUTEST(UnitTest, is_void) | |
42 | +{ | |
43 | + IUTEST_STATIC_ASSERT( !::iutest_type_traits::is_void<void*>::value ); | |
44 | + IUTEST_STATIC_ASSERT( ::iutest_type_traits::is_void<void>::value ); | |
45 | + IUTEST_STATIC_ASSERT( !::iutest_type_traits::is_void<int>::value ); | |
46 | +} | |
47 | + | |
48 | +IUTEST(UnitTest, is_base_of) | |
49 | +{ | |
50 | + IUTEST_STATIC_ASSERT( !(::iutest_type_traits::is_base_of<int, Base>::value) ); | |
51 | + IUTEST_STATIC_ASSERT( (::iutest_type_traits::is_base_of<Base, Derived>::value) ); | |
52 | + IUTEST_STATIC_ASSERT( (::iutest_type_traits::is_base_of<Base, const Derived>::value) ); | |
53 | + IUTEST_STATIC_ASSERT( (::iutest_type_traits::is_base_of<const volatile Base, Derived>::value) ); | |
54 | + IUTEST_STATIC_ASSERT( (::iutest_type_traits::is_base_of<volatile Base, volatile Derived const>::value) ); | |
55 | + IUTEST_STATIC_ASSERT( !(::iutest_type_traits::is_base_of<Base, Hoge>::value) ); | |
56 | + IUTEST_STATIC_ASSERT( (::iutest_type_traits::is_base_of<Derived, Derived>::value) ); | |
57 | +} | |
58 | + | |
59 | +#if !defined(IUTEST_NO_ARGUMENT_DEPENDENT_LOOKUP) | |
60 | + | |
61 | +struct X | |
62 | +{ | |
63 | + int a, b, c; | |
64 | +}; | |
65 | +struct Y | |
66 | +{ | |
67 | + int a, b, c; | |
68 | + bool operator == (const Y&) { return true; } | |
69 | +}; | |
70 | + | |
71 | +struct Z | |
72 | +{ | |
73 | + int a, b, c; | |
74 | +}; | |
75 | + | |
76 | +bool operator == (const Z&, const Z&) { return true; } | |
77 | + | |
78 | +IUTEST(UnitTest, has_equal_to) | |
79 | +{ | |
80 | + IUTEST_STATIC_ASSERT( ::iutest_type_traits::has_equal_to<int>::value ); | |
81 | + IUTEST_STATIC_ASSERT( ::iutest_type_traits::has_equal_to<float>::value ); | |
82 | + IUTEST_STATIC_ASSERT( !::iutest_type_traits::has_equal_to<X>::value ); | |
83 | + IUTEST_STATIC_ASSERT( ::iutest_type_traits::has_equal_to<Y>::value ); | |
84 | + IUTEST_STATIC_ASSERT( ::iutest_type_traits::has_equal_to<Z>::value ); | |
85 | + IUTEST_STATIC_ASSERT( ::iutest_type_traits::has_equal_to< ::std::vector<int> >::value ); | |
86 | +} | |
87 | + | |
88 | +#if IUTEST_HAS_TUPLE | |
89 | +typedef ::iutest::tuples::tuple<bool, int, int> Tuple; | |
90 | + | |
91 | +IUTEST(UnitTest, has_equal_to_tuple) | |
92 | +{ | |
93 | + IUTEST_STATIC_ASSERT( ::iutest_type_traits::has_equal_to<Tuple>::value ); | |
94 | +} | |
95 | +#endif | |
96 | + | |
97 | +#endif |
@@ -40,7 +40,9 @@ | ||
40 | 40 | ) |
41 | 41 | parser.add_argument( |
42 | 42 | '--verbose', |
43 | - action='store_true', | |
43 | + type=int, | |
44 | + default=0, | |
45 | + metavar='LEVEL', | |
44 | 46 | help='log verbose' |
45 | 47 | ) |
46 | 48 | parser.add_argument( |
@@ -74,8 +76,8 @@ | ||
74 | 76 | print(msg) |
75 | 77 | |
76 | 78 | |
77 | -def logv(msg): | |
78 | - if cmdline_options.verbose: | |
79 | +def logv(lv, msg): | |
80 | + if cmdline_options.verbose >= lv: | |
79 | 81 | print(msg) |
80 | 82 | |
81 | 83 |
@@ -178,27 +180,36 @@ | ||
178 | 180 | f.write(jt) |
179 | 181 | |
180 | 182 | |
183 | +def opentree(path): | |
184 | + try: | |
185 | + with codecs.open(path, 'r', encoding=cmdline_options.encoding) as f: | |
186 | + return ET.parse(f) | |
187 | + except Exception as e: | |
188 | + loge("error: " + path + ": " + str(e)) | |
189 | + xmlp = ET.XMLParser(encoding=cmdline_options.encoding) | |
190 | + return ET.parse(path, xmlp) | |
191 | + | |
192 | + | |
181 | 193 | def xml2file(path): |
182 | 194 | basename = os.path.basename(path) |
183 | 195 | filename = os.path.splitext(basename)[0] |
184 | - logv(basename) | |
196 | + logv(1, basename) | |
185 | 197 | |
186 | 198 | root_path = make_rootpath(filename) |
187 | 199 | clean_dir(root_path) |
188 | 200 | |
189 | 201 | try: |
190 | - xmlp = ET.XMLParser(encoding=cmdline_options.encoding) | |
191 | - tree = ET.parse(path, xmlp) | |
202 | + tree = opentree(path) | |
192 | 203 | root = tree.getroot() |
193 | 204 | testsuites = root |
194 | 205 | |
195 | 206 | testsuites_user_attrib = get_user_properties(testsuites) |
196 | 207 | for testsuite in testsuites: |
197 | - logv(" " + testsuite.attrib['name']) | |
208 | + logv(2, " " + testsuite.attrib['name']) | |
198 | 209 | testsuite_user_attrib = get_user_properties(testsuite) |
199 | 210 | for testcase in testsuite: |
200 | 211 | if testcase.tag == 'testcase': |
201 | - logv(" " + testcase.attrib['name']) | |
212 | + logv(3, " " + testcase.attrib['name']) | |
202 | 213 | f = fopen(make_path(root_path, testsuite, testcase)) |
203 | 214 | write_result(f, testsuites_user_attrib, testsuite_user_attrib, testcase) |
204 | 215 | f.close() |