• R/O
  • SSH
  • HTTPS

iutest: コミット


コミットメタ情報

リビジョン1382 (tree)
日時2019-04-18 10:30:26
作者srz_zumix

ログメッセージ

Merge remote-tracking branch 'origin/develop'

git@65ad157bbb5c14bedf7b3a550836bb0bffa30d1b
https://github.com/srz-zumix/iutest/commit/65ad157bbb5c14bedf7b3a550836bb0bffa30d1b

変更サマリ

差分

--- trunk/azure-pipelines.yml (revision 1381)
+++ trunk/azure-pipelines.yml (revision 1382)
@@ -47,16 +47,16 @@
4747 - template: .ci/azure_pipelines/template-make-nofeature-test.yml
4848 parameters:
4949 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)
6262
--- trunk/include/internal/iutest_compiler.hpp (revision 1381)
+++ trunk/include/internal/iutest_compiler.hpp (revision 1382)
@@ -106,13 +106,20 @@
106106 #define IUTEST_CPLUSPLUS_CXX14 201402L
107107 #define IUTEST_CPLUSPLUS_CXX17 201703L
108108
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+
109118 // c++2a
110119
111120 #if !defined(IUTEST_HAS_CXX2A)
112-# if (defined(__cplusplus) && __cplusplus > IUTEST_CPLUSPLUS_CXX17)
121+# if IUTEST_CPLUSPLUS > IUTEST_CPLUSPLUS_CXX17
113122 # define IUTEST_HAS_CXX2A 1
114-# elif (defined(_MSVC_LANG) && _MSVC_LANG > IUTEST_CPLUSPLUS_CXX17)
115-# define IUTEST_HAS_CXX2A 1
116123 # endif
117124 #endif
118125
@@ -123,10 +130,8 @@
123130 // c++17
124131 //! is c++17 compiler
125132 #if !defined(IUTEST_HAS_CXX17)
126-# if (defined(__cplusplus) && __cplusplus >= IUTEST_CPLUSPLUS_CXX17)
133+# if IUTEST_CPLUSPLUS >= IUTEST_CPLUSPLUS_CXX17
127134 # define IUTEST_HAS_CXX17 1
128-# elif (defined(_MSVC_LANG) && _MSVC_LANG >= IUTEST_CPLUSPLUS_CXX17)
129-# define IUTEST_HAS_CXX17 1
130135 # endif
131136 #endif
132137
@@ -135,10 +140,8 @@
135140 #endif
136141
137142 #if !defined(IUTEST_HAS_CXX1Z)
138-# if (defined(__cplusplus) && __cplusplus > IUTEST_CPLUSPLUS_CXX14)
143+# if IUTEST_CPLUSPLUS > IUTEST_CPLUSPLUS_CXX14
139144 # define IUTEST_HAS_CXX1Z 1
140-# elif (defined(_MSVC_LANG) && _MSVC_LANG > IUTEST_CPLUSPLUS_CXX14)
141-# define IUTEST_HAS_CXX1Z 1
142145 # endif
143146 #endif
144147
@@ -148,10 +151,8 @@
148151
149152 //! is c++14 compiler
150153 #if !defined(IUTEST_HAS_CXX14)
151-# if (defined(__cplusplus) && __cplusplus >= IUTEST_CPLUSPLUS_CXX14)
154+# if IUTEST_CPLUSPLUS >= IUTEST_CPLUSPLUS_CXX14
152155 # define IUTEST_HAS_CXX14 1
153-# elif (defined(_MSVC_LANG) && _MSVC_LANG >= IUTEST_CPLUSPLUS_CXX14)
154-# define IUTEST_HAS_CXX14 1
155156 # endif
156157 #endif
157158
@@ -161,7 +162,7 @@
161162
162163 //! is c++11 compiler
163164 #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__)
165166 # define IUTEST_HAS_CXX11 1
166167 # endif
167168 #endif
@@ -176,7 +177,9 @@
176177
177178 //! inline variable
178179 #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__)
180183 # if IUTEST_HAS_CXX1Z && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 9))
181184 # define IUTEST_HAS_INLINE_VARIABLE 1
182185 # endif
@@ -353,6 +356,13 @@
353356 # define IUTEST_CXX_CONSTEXPR
354357 #endif
355358
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+
356366 //! constexpr or const
357367 #if IUTEST_HAS_CONSTEXPR
358368 # define IUTEST_CXX_CONSTEXPR_OR_CONST constexpr
--- trunk/include/internal/iutest_option_message.hpp (revision 1381)
+++ trunk/include/internal/iutest_option_message.hpp (revision 1382)
@@ -6,7 +6,7 @@
66 *
77 * @author t.shirayanagi
88 * @par copyright
9- * Copyright (C) 2011-2018, Takazumi Shirayanagi\n
9+ * Copyright (C) 2011-2019, Takazumi Shirayanagi\n
1010 * This software is released under the new BSD License,
1111 * see LICENSE
1212 */
@@ -171,6 +171,7 @@
171171 IIUT_SHOW_MACRO(IUTEST_PLATFORM);
172172
173173 IIUT_SHOW_MACRO(IUTEST_CHECK_STRICT);
174+ IIUT_SHOW_MACRO(IUTEST_CPLUSPLUS);
174175 IIUT_SHOW_MACRO(IUTEST_HAS_ANALYSIS_ASSUME);
175176 IIUT_SHOW_MACRO(IUTEST_HAS_ATTRIBUTE);
176177 IIUT_SHOW_MACRO(IUTEST_HAS_AUTO);
@@ -231,6 +232,7 @@
231232 IIUT_SHOW_MACRO(IUTEST_HAS_VARIADIC_TEMPLATES);
232233 IIUT_SHOW_MACRO(IUTEST_HAS_VARIADIC_TEMPLATE_TEMPLATES);
233234 IIUT_SHOW_MACRO(IUTEST_HAS_WANT_SECURE_LIB);
235+ IIUT_SHOW_MACRO(IUTEST_USE_OWN_LIST);
234236 IIUT_SHOW_MACRO(IUTEST_USE_THROW_ON_ASSERTION_FAILURE);
235237
236238 #ifdef IUTEST_LIBSTDCXX_VERSION
--- trunk/include/internal/iutest_stdlib.hpp (revision 1381)
+++ trunk/include/internal/iutest_stdlib.hpp (revision 1382)
@@ -6,7 +6,7 @@
66 *
77 * @author t.shirayanagi
88 * @par copyright
9- * Copyright (C) 2012-2018, Takazumi Shirayanagi\n
9+ * Copyright (C) 2012-2019, Takazumi Shirayanagi\n
1010 * This software is released under the new BSD License,
1111 * see LICENSE
1212 */
@@ -386,14 +386,14 @@
386386 #if !defined(IUTEST_HAS_CXX_HDR_CODECVT)
387387 # define IUTEST_HAS_CXX_HDR_CODECVT 0
388388 #endif
389+//! has cstdint header
390+#if !defined(IUTEST_HAS_CXX_HDR_CSTDINT)
391+# define IUTEST_HAS_CXX_HDR_CSTDINT 0
392+#endif
389393 //! has cuchar
390394 #if !defined(IUTEST_HAS_CXX_HDR_CUCHAR)
391395 # define IUTEST_HAS_CXX_HDR_CUCHAR 0
392396 #endif
393-//! has cstdint header
394-#if !defined(IUTEST_HAS_CXX_HDR_CSTDINT)
395-# define IUTEST_HAS_CXX_HDR_CSTDINT 0
396-#endif
397397 //! has filesystem header
398398 #if !defined(IUTEST_HAS_CXX_HDR_FILESYSTEM)
399399 # define IUTEST_HAS_CXX_HDR_FILESYSTEM 0
--- trunk/include/iutest_ver.hpp (revision 1381)
+++ trunk/include/iutest_ver.hpp (revision 1382)
@@ -17,11 +17,11 @@
1717
1818 //======================================================================
1919 // define
20-#define IUTEST_VER 0x01169915u //!< iutest version 1.16.99.15
20+#define IUTEST_VER 0x01169917u //!< iutest version 1.16.99.17
2121 #define IUTEST_MAJORVER 0x01u //!< Major Version
2222 #define IUTEST_MINORVER 0x16u //!< Minor Version
2323 #define IUTEST_MICROVER 0x99u //!< Micro Version
24-#define IUTEST_REVISION 0x15u //!< Revision
24+#define IUTEST_REVISION 0x17u //!< Revision
2525
2626 #define IUTEST_BUILD IUTEST_MICROVER //!< @deprecated
2727
--- trunk/projects/cmake/CMakeLists.txt (revision 1381)
+++ trunk/projects/cmake/CMakeLists.txt (revision 1382)
@@ -252,7 +252,13 @@
252252 cxx_executable_test(tap_file_generator_listener_tests)
253253 cxx_executable_test(tap_printer_listener_tests)
254254 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+ )
256262 endif()
257263
258264 ########################################################################
--- trunk/test/unit_tests.cpp (revision 1381)
+++ trunk/test/unit_tests.cpp (nonexistent)
@@ -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&lt;&gt;&#x09;b&amp; &apos;&quot;c&#x0D;&#x0A;"
139- , HackXmlGeneratorListener::EscapeXmlAttribute("a<> b& \'\"c\r\n"));// NOLINT
140- IUTEST_EXPECT_STREQ("a&lt;&gt; b&amp; \'\"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-
--- trunk/test/CommonMakefile.in (revision 1381)
+++ trunk/test/CommonMakefile.in (revision 1382)
@@ -70,6 +70,18 @@
7070
7171 EXTENSIONTESTS_TARGET=extension_tests
7272
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+
7385 SYNTAXTESTS_TEST_SRCS= \
7486 syntax_tests.cpp \
7587
@@ -162,8 +174,7 @@
162174 no_yoda_tests \
163175 tap_file_generator_listener_tests \
164176 tap_printer_listener_tests \
165- type_param_strict_tests \
166- unit_tests \
177+ type_param_strict_tests
167178
168179 COMPILEERROR_TARGETS=\
169180 check_strict_tests \
--- trunk/test/Makefile (revision 1381)
+++ trunk/test/Makefile (revision 1382)
@@ -33,7 +33,7 @@
3333 #
3434 !include <CommonMakefile.in>
3535
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)
3737 BUILD_TARGETS = $(RUN_TARGETS) $(BUILD_ONLY)
3838 # BUILD_TARGETS = $(RUN_TARGETS) $(BUILD_ONLY) $(COMPILEERROR_TARGETS)
3939 TARGETS = $(BUILD_TARGETS)
@@ -104,6 +104,9 @@
104104 $(EXTENSIONTESTS_TARGET) : $(EXTENSIONTESTS_SRCS) $(IUTEST_HEADERS) Makefile
105105 $(CXX) $(IUTEST_INCLUDE) $(CXXFLAGS) /Fe$@ $(EXTENSIONTESTS_SRCS) $(LDFLAGS)
106106
107+$(UNITTESTS_TARGET) : $(UNITTESTS_SRCS) $(IUTEST_HEADERS) Makefile
108+ $(CXX) $(IUTEST_INCLUDE) $(CXXFLAGS) /Fe$@ $(UNITTESTS_SRCS) $(LDFLAGS)
109+
107110 $(NAMESPACETESTS_TARGET) : $(NAMESPACETESTS_SRCS) $(IUTEST_HEADERS) Makefile
108111 $(CXX) $(IUTEST_INCLUDE) $(CXXFLAGS) /Fe$@ $(NAMESPACETESTS_SRCS) $(LDFLAGS)
109112
--- trunk/test/unit_file_tests.cpp (nonexistent)
+++ trunk/test/unit_file_tests.cpp (revision 1382)
@@ -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+
--- trunk/test/unit_macro_tests.cpp (nonexistent)
+++ trunk/test/unit_macro_tests.cpp (revision 1382)
@@ -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+}
--- trunk/test/unit_misc_tests.cpp (nonexistent)
+++ trunk/test/unit_misc_tests.cpp (revision 1382)
@@ -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+}
--- trunk/test/unit_string_tests.cpp (nonexistent)
+++ trunk/test/unit_string_tests.cpp (revision 1382)
@@ -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&lt;&gt;&#x09;b&amp; &apos;&quot;c&#x0D;&#x0A;"
62+ , HackXmlGeneratorListener::EscapeXmlAttribute("a<> b& \'\"c\r\n"));// NOLINT
63+ IUTEST_EXPECT_STREQ("a&lt;&gt; b&amp; \'\"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+}
--- trunk/test/unit_typetraits_tests.cpp (nonexistent)
+++ trunk/test/unit_typetraits_tests.cpp (revision 1382)
@@ -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
--- trunk/tools/xml2file/xml2file.py (revision 1381)
+++ trunk/tools/xml2file/xml2file.py (revision 1382)
@@ -40,7 +40,9 @@
4040 )
4141 parser.add_argument(
4242 '--verbose',
43- action='store_true',
43+ type=int,
44+ default=0,
45+ metavar='LEVEL',
4446 help='log verbose'
4547 )
4648 parser.add_argument(
@@ -74,8 +76,8 @@
7476 print(msg)
7577
7678
77-def logv(msg):
78- if cmdline_options.verbose:
79+def logv(lv, msg):
80+ if cmdline_options.verbose >= lv:
7981 print(msg)
8082
8183
@@ -178,27 +180,36 @@
178180 f.write(jt)
179181
180182
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+
181193 def xml2file(path):
182194 basename = os.path.basename(path)
183195 filename = os.path.splitext(basename)[0]
184- logv(basename)
196+ logv(1, basename)
185197
186198 root_path = make_rootpath(filename)
187199 clean_dir(root_path)
188200
189201 try:
190- xmlp = ET.XMLParser(encoding=cmdline_options.encoding)
191- tree = ET.parse(path, xmlp)
202+ tree = opentree(path)
192203 root = tree.getroot()
193204 testsuites = root
194205
195206 testsuites_user_attrib = get_user_properties(testsuites)
196207 for testsuite in testsuites:
197- logv(" " + testsuite.attrib['name'])
208+ logv(2, " " + testsuite.attrib['name'])
198209 testsuite_user_attrib = get_user_properties(testsuite)
199210 for testcase in testsuite:
200211 if testcase.tag == 'testcase':
201- logv(" " + testcase.attrib['name'])
212+ logv(3, " " + testcase.attrib['name'])
202213 f = fopen(make_path(root_path, testsuite, testcase))
203214 write_result(f, testsuites_user_attrib, testsuite_user_attrib, testcase)
204215 f.close()
旧リポジトリブラウザで表示