• R/O
  • SSH
  • HTTPS

iutest: Commit


Commit MetaInfo

Révision1352 (tree)
l'heure2018-11-02 02:51:17
Auteursrz_zumix

Message de Log

Merge remote-tracking branch 'origin/develop'

git@6d0e3f3a34a7c8ec6cd2a6c9519bee396ff4a8d9
https://github.com/srz-zumix/iutest/commit/6d0e3f3a34a7c8ec6cd2a6c9519bee396ff4a8d9

Change Summary

Modification

--- trunk/CHANGES.md (revision 1351)
+++ trunk/CHANGES.md (revision 1352)
@@ -6,6 +6,9 @@
66
77 * Improved
88
9+* Changes
10+ * deprecated: IUTEST_USE_OWN_LIST
11+
912 * Bug fixes
1013
1114 --------------------------------------------------
--- trunk/README.md (revision 1351)
+++ trunk/README.md (revision 1352)
@@ -1,4 +1,4 @@
1-[![Travis-CI Build Status](https://travis-ci.org/srz-zumix/iutest.svg?branch=master)](https://travis-ci.org/srz-zumix/iutest)
1+[![Travis-CI Build Status](https://travis-ci.com/srz-zumix/iutest.svg?branch=master)](https://travis-ci.com/srz-zumix/iutest)
22 [![AppVeyor Build status](https://ci.appveyor.com/api/projects/status/2gdmgo8ce8m0iy0e/branch/master?svg=true)](https://ci.appveyor.com/project/srz-zumix/iutest/branch/master)
33 [![Coverity Scan Build Status](https://scan.coverity.com/projects/1316/badge.svg)](https://scan.coverity.com/projects/srz-zumix-iutest)
44 [![Codeship Status for srz-zumix/iutest](https://codeship.com/projects/5bc87030-5b41-0133-6000-4242aa07dce3/status?branch=master)](https://codeship.com/projects/110695)
@@ -103,7 +103,7 @@
103103
104104 |CI|master|develop|Tests|
105105 |:--|:--|:--|:--|
106-|Travis CI |[![Travis-CI Build Status](https://travis-ci.org/srz-zumix/iutest.svg?branch=master)](https://travis-ci.org/srz-zumix/iutest)|[![Travis-CI Build Status](https://travis-ci.org/srz-zumix/iutest.svg?branch=develop)](https://travis-ci.org/srz-zumix/iutest)|Basic tests, Google Test compatibility, Coverage, Coverity-scan|
106+|Travis CI |[![Travis-CI Build Status](https://travis-ci.com/srz-zumix/iutest.svg?branch=master)](https://travis-ci.com/srz-zumix/iutest)|[![Travis-CI Build Status](https://travis-ci.com/srz-zumix/iutest.svg?branch=develop)](https://travis-ci.com/srz-zumix/iutest)|Basic tests, Google Test compatibility, Coverage, Coverity-scan|
107107 |AppVeyor |[![AppVeyor Build status](https://ci.appveyor.com/api/projects/status/2gdmgo8ce8m0iy0e/branch/master?svg=true)](https://ci.appveyor.com/project/srz-zumix/iutest/branch/master)|[![AppVeyor Build status](https://ci.appveyor.com/api/projects/status/2gdmgo8ce8m0iy0e/branch/develop?svg=true)](https://ci.appveyor.com/project/srz-zumix/iutest/branch/develop)|Windows, Visual Studio, Cygwin, MINGW, NuGet|
108108 | |[![AppVeyor Build PREFAST status](https://ci.appveyor.com/api/projects/status/0w0wuhc58kre178q/branch/master?svg=true)](https://ci.appveyor.com/project/srz-zumix/iutest-xsqun/branch/master)|[![AppVeyor Build PREFAST status](https://ci.appveyor.com/api/projects/status/0w0wuhc58kre178q/branch/develop?svg=true)](https://ci.appveyor.com/project/srz-zumix/iutest-xsqun/branch/develop)|Visual Studio PREFAST (Code Analysis)|
109109 |Wercker |[![wercker status](https://app.wercker.com/status/d385156052aa4118a7f24affe4a8f851/s/master "wercker status")](https://app.wercker.com/project/byKey/d385156052aa4118a7f24affe4a8f851)|[![wercker status](https://app.wercker.com/status/d385156052aa4118a7f24affe4a8f851/s/develop "wercker status")](https://app.wercker.com/project/byKey/d385156052aa4118a7f24affe4a8f851)|Syntax tests for compiler each version|
--- trunk/buddy.yml (revision 1351)
+++ trunk/buddy.yml (revision 1352)
@@ -42,11 +42,23 @@
4242 docker_image_tag: "latest"
4343 execute_commands:
4444 - "cd test"
45- - "make USE_GTEST=1 GTEST_EXPECT_VER=0x01080000 GTEST_EXPECT_LATEST=1 gtest-version"
46- - "make USE_GTEST=1 USE_GMOCK=1 GTEST_EXPECT_VER=0x01080000 GTEST_EXPECT_LATEST=1 gtest-version"
45+ - "make USE_GTEST=1 GTEST_EXPECT_VER=0x01080100 GTEST_EXPECT_LATEST=1 gtest-version"
46+ - "make USE_GTEST=1 USE_GMOCK=1 GTEST_EXPECT_VER=0x01080100 GTEST_EXPECT_LATEST=1 gtest-version"
4747 mount_filesystem_path: "/buddy/iutest"
4848 shell: "SH"
4949 trigger_condition: "ALWAYS"
50+ - action: "release-1.8.1"
51+ type: "BUILD"
52+ working_directory: "/buddy/iutest"
53+ docker_image_name: "srzzumix/googletest"
54+ docker_image_tag: "release-1.8.1"
55+ execute_commands:
56+ - "cd test"
57+ - "make USE_GTEST=1 GTEST_EXPECT_VER=0x01080100 gtest-version"
58+ - "make USE_GTEST=1 USE_GMOCK=1 GTEST_EXPECT_VER=0x01080100 gtest-version"
59+ mount_filesystem_path: "/buddy/iutest"
60+ shell: "SH"
61+ trigger_condition: "ALWAYS"
5062 - action: "release-1.8.0"
5163 type: "BUILD"
5264 working_directory: "/buddy/iutest"
--- trunk/include/gtest/iutest_gmock_ver.hpp (revision 1351)
+++ trunk/include/gtest/iutest_gmock_ver.hpp (revision 1352)
@@ -32,7 +32,7 @@
3232
3333 //!< Minor Version
3434 #ifndef GMOCK_MINORVER
35-# if defined(GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_)
35+# if !defined(GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_)
3636 # define GMOCK_MINORVER 0x08
3737 # define GMOCK_LATEST 1
3838 # elif defined(GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_CALLBACK_MATCHERS_H_)
@@ -50,8 +50,19 @@
5050 # endif
5151 #endif
5252
53+//!< Micro Version
54+#ifndef GMOCK_MICROVER
55+# if GMOCK_MICROVER == 0x08 && defined(GMOCK_INCLUDE_GMOCK_MORE_MATCHERS_H_)
56+# define GMOCK_MICROVER 0x01
57+# endif
58+#endif
59+
60+#ifndef GMOCK_MICROVER
61+# define GMOCK_MICROVER 0x00
62+#endif
63+
5364 #ifndef GMOCK_BUILD
54-# define GMOCK_BUILD 0x00 //!< Build
65+# define GMOCK_BUILD GMOCK_MICROVER //!< @deprecated
5566 #endif
5667
5768 #ifndef GMOCK_REVISION
@@ -61,13 +72,13 @@
6172 #ifndef GMOCK_VER
6273 # define GMOCK_VER ((GMOCK_MAJORVER<<24) \
6374 |(GMOCK_MINORVER<<16) \
64- |(GMOCK_BUILD<<8) \
75+ |(GMOCK_MICROVER<<8) \
6576 |(GMOCK_REVISION<<0) \
66- ) //!< google test version
77+ ) //!< google mock version
6778 #endif
6879
6980 #if !defined(GMOCK_LATEST)
70-# define GMOCK_LATEST 0 //!< google test development latest version
81+# define GMOCK_LATEST 0 //!< google mock development latest version
7182 #endif
7283
7384 #endif
--- trunk/include/gtest/iutest_gtest_ver.hpp (revision 1351)
+++ trunk/include/gtest/iutest_gtest_ver.hpp (revision 1352)
@@ -32,7 +32,7 @@
3232
3333 //!< Minor Version
3434 #ifndef GTEST_MINORVER
35-# if defined(GTEST_STRINGIFY_)
35+# if !defined(GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_)
3636 # define GTEST_MINORVER 0x08
3737 # define GTEST_LATEST 1
3838 # elif defined(GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_)
@@ -58,16 +58,20 @@
5858
5959 //!< Micro Version
6060 #ifndef GTEST_MICROVER
61-# if GTEST_MINORVER == 0x02 && defined(GTEST_HAS_CLONE)
61+# if GTEST_MINORVER == 0x08 && defined(GTEST_STRINGIFY_)
62+# define GTEST_MICROVER 0x01
63+# elif GTEST_MINORVER == 0x02 && defined(GTEST_HAS_CLONE)
6264 # define GTEST_MICROVER 0x01
6365 # elif GTEST_MINORVER == 0x00
6466 // 判断難しい
6567 # define GTEST_MICROVER 0x01
66-# else
67-# define GTEST_MICROVER 0x00
6868 # endif
6969 #endif
7070
71+#ifndef GTEST_MICROVER
72+# define GTEST_MICROVER 0x00
73+#endif
74+
7175 #ifndef GTEST_BUILD
7276 # define GTEST_BUILD GTEST_MICROVER //!< @deprecated
7377 #endif
--- trunk/include/gtest/iutest_switch_for_gtest.hpp (revision 1351)
+++ trunk/include/gtest/iutest_switch_for_gtest.hpp (revision 1352)
@@ -276,7 +276,7 @@
276276 // tuple
277277 namespace tuples
278278 {
279-#if GTEST_HAS_STD_TUPLE_
279+#if GTEST_VER >= 0x01090000 || GTEST_LATEST || (defined(GTEST_HAS_STD_TUPLE_) && GTEST_HAS_STD_TUPLE_)
280280 using ::std::tuple;
281281 using ::std::tuple_size;
282282 using ::std::tuple_element;
--- trunk/include/internal/iutest_core_impl.hpp (revision 1351)
+++ trunk/include/internal/iutest_core_impl.hpp (revision 1352)
@@ -30,8 +30,11 @@
3030 class UnitTestImpl
3131 {
3232 protected:
33+#if IUTEST_USE_OWN_LIST
3334 typedef detail::iu_list<TestCase> iuTestCases;
34- //typedef ::std::vector<TestCase*> iuTestCases;
35+#else
36+ typedef ::std::vector<TestCase*> iuTestCases;
37+#endif
3538 typedef ::std::vector<Environment*> iuEnvironmentList;
3639 protected:
3740 UnitTestImpl() : m_total_test_num(0), m_disable_num(0), m_should_run_num(0)
--- trunk/include/internal/iutest_list.hpp (revision 1351)
+++ trunk/include/internal/iutest_list.hpp (revision 1352)
@@ -17,8 +17,12 @@
1717
1818 //======================================================================
1919 // include
20-#ifdef _IUTEST_DEBUG
21-#include <assert.h>
20+#if IUTEST_USE_OWN_LIST
21+# ifdef _IUTEST_DEBUG
22+# include <assert.h>
23+# endif
24+#else
25+# include <list>
2226 #endif
2327
2428 namespace iutest {
@@ -25,6 +29,8 @@
2529 namespace detail
2630 {
2731
32+#if IUTEST_USE_OWN_LIST
33+
2834 //======================================================================
2935 // class
3036 /**
@@ -80,7 +86,7 @@
8086 _Myt& operator ++ () { m_node = m_node->next; return *this; }
8187 _Myt& operator -- () { m_node = m_node->prev; return *this; }
8288 value_ptr operator -> () IUTEST_CXX_NOEXCEPT_SPEC { return ptr(); }
83- value_ref operator * () IUTEST_CXX_NOEXCEPT_SPEC { return *m_node; }
89+ value_ptr operator * () IUTEST_CXX_NOEXCEPT_SPEC { return m_node; }
8490 value_ptr ptr() const IUTEST_CXX_NOEXCEPT_SPEC { return m_node; }
8591
8692 operator value_ptr () { return ptr(); }
@@ -225,7 +231,7 @@
225231 p->prev = prev;
226232 }
227233 // 削除
228- void erase(node_ptr p)
234+ void remove(node_ptr p)
229235 {
230236 if( p == NULL )
231237 {
@@ -255,7 +261,7 @@
255261 }
256262 void erase(iterator it)
257263 {
258- erase(it.ptr());
264+ remove(it.ptr());
259265 }
260266 public:
261267 /**
@@ -444,6 +450,9 @@
444450 #endif
445451 };
446452
453+#endif
454+
455+
447456 IUTEST_PRAGMA_WARN_PUSH()
448457 IUTEST_PRAGMA_WARN_DISABLE_NOEXCEPT_TPYE()
449458
@@ -455,29 +464,32 @@
455464 {
456465 r.shuffle(begin, last);
457466 }
458-
467+#if IUTEST_USE_OWN_LIST
459468 template<typename Node, typename Fn>
460469 void RandomShuffle(iu_list<Node>& list, Fn& r)
461470 {
462471 list.shuffle(r);
463472 }
464-template<typename Node, typename Fn>
465-void RandomShuffle(::std::vector<Node>& list, Fn& r)
473+#endif
474+template<typename T, typename Fn>
475+void RandomShuffle(::std::vector<T>& list, Fn& r)
466476 {
467477 RandomShuffle(list.begin(), list.end(), r);
468478 }
469479
480+#if IUTEST_USE_OWN_LIST
470481 template<typename Node, typename Fn>
471482 Node* FindList(const iu_list<Node>& list, Fn& f)
472483 {
473484 return list.find(f);
474485 }
475-template<typename Node, typename Fn>
476-Node FindList(const ::std::vector<Node>& list, Fn& f)
486+#else
487+template<typename T, typename Fn>
488+T FindList(const ::std::vector<T>& list, Fn& f)
477489 {
478- for( typename ::std::vector<Node>::const_iterator it=list.begin(), end=list.end(); it != end; ++it )
490+ for(typename ::std::vector<T>::const_iterator it = list.begin(), end = list.end(); it != end; ++it)
479491 {
480- if( f(*it) )
492+ if(f(*it))
481493 {
482494 return *it;
483495 }
@@ -484,10 +496,14 @@
484496 }
485497 return NULL;
486498 }
499+#endif
487500
501+
488502 /**
489503 * @brief 条件に合う要素数をカウント
490504 */
505+#if IUTEST_USE_OWN_LIST
506+
491507 template<typename Node, typename Fn>
492508 int CountIf(const iu_list<Node>& list, Fn f)
493509 {
@@ -494,7 +510,7 @@
494510 int count = 0;
495511 for( typename iu_list<Node>::const_iterator it = list.begin(), end=list.end(); it != end; ++it )
496512 {
497- if( f(it) )
513+ if( f(*it) )
498514 {
499515 ++count;
500516 }
@@ -502,9 +518,30 @@
502518 return count;
503519 }
504520
521+#else
522+
523+template<typename T, typename Fn>
524+int CountIf(const ::std::vector<T>& list, Fn f)
525+{
526+ int count = 0;
527+ for(typename ::std::vector<T>::const_iterator it = list.begin(), end = list.end(); it != end; ++it)
528+ {
529+ if(f(*it))
530+ {
531+ ++count;
532+ }
533+ }
534+ return count;
535+}
536+
537+#endif
538+
539+
505540 /**
506541 * @brief リストの示す値の総和
507542 */
543+#if IUTEST_USE_OWN_LIST
544+
508545 template<typename Node, typename Fn>
509546 int SumOverList(const iu_list<Node>& list, Fn f)
510547 {
@@ -511,14 +548,32 @@
511548 int count = 0;
512549 for( typename iu_list<Node>::const_iterator it = list.begin(), end=list.end(); it != end; ++it )
513550 {
514- count += ((*it).*f)();
551+ count += ((*it)->*f)();
515552 }
516553 return count;
517554 }
518555
556+#else
557+
558+template<typename T, typename Fn>
559+int SumOverList(const ::std::vector<T>& list, Fn f)
560+{
561+ int count = 0;
562+ for(typename ::std::vector<T>::const_iterator it = list.begin(), end = list.end(); it != end; ++it)
563+ {
564+ count += ((*it)->*f)();
565+ }
566+ return count;
567+}
568+
569+#endif
570+
571+
519572 /**
520573 * @brief リストの示す真の総和
521574 */
575+#if IUTEST_USE_OWN_LIST
576+
522577 template<typename Node, typename Fn>
523578 int CountIfOverList(const iu_list<Node>& list, Fn f)
524579 {
@@ -525,7 +580,7 @@
525580 int count = 0;
526581 for( typename iu_list<Node>::const_iterator it = list.begin(), end=list.end(); it != end; ++it )
527582 {
528- if( ((*it).*f)() )
583+ if( ((*it)->*f)() )
529584 {
530585 ++count;
531586 }
@@ -533,15 +588,35 @@
533588 return count;
534589 }
535590
591+#else
592+
593+template<typename T, typename Fn>
594+int CountIfOverList(const ::std::vector<T>& list, Fn f)
595+{
596+ int count = 0;
597+ for(typename ::std::vector<T>::const_iterator it = list.begin(), end = list.end(); it != end; ++it)
598+ {
599+ if(((*it)->*f)())
600+ {
601+ ++count;
602+ }
603+ }
604+ return count;
605+}
606+
607+#endif
608+
536609 /**
537610 * @brief 条件に合う要素があるかどうか
538611 */
612+#if IUTEST_USE_OWN_LIST
613+
539614 template<typename Node, typename Fn>
540615 bool AnyOverList(const iu_list<Node>& list, Fn f)
541616 {
542617 for( typename iu_list<Node>::const_iterator it = list.begin(), end=list.end(); it != end; ++it )
543618 {
544- if( ((*it).*f)() )
619+ if( ((*it)->*f)() )
545620 {
546621 return true;
547622 }
@@ -549,6 +624,23 @@
549624 return false;
550625 }
551626
627+#else
628+
629+template<typename T, typename Fn>
630+bool AnyOverList(const ::std::vector<T>& list, Fn f)
631+{
632+ for(typename ::std::vector<T>::const_iterator it = list.begin(), end = list.end(); it != end; ++it)
633+ {
634+ if(((*it)->*f)())
635+ {
636+ return true;
637+ }
638+ }
639+ return false;
640+}
641+
642+#endif
643+
552644 IUTEST_PRAGMA_WARN_POP()
553645
554646 } // end of namespace detail
--- trunk/include/iutest_assertion.hpp (revision 1351)
+++ trunk/include/iutest_assertion.hpp (revision 1352)
@@ -202,8 +202,11 @@
202202
203203 public:
204204 /** @private */
205- class ScopedMessage : public detail::iu_list_node<ScopedMessage>
206- , public detail::iuCodeMessage
205+ class ScopedMessage
206+ : public detail::iuCodeMessage
207+#if IUTEST_USE_OWN_LIST
208+ , public detail::iu_list_node<ScopedMessage>
209+#endif
207210 {
208211 public:
209212 ScopedMessage(const detail::iuCodeMessage& msg) // NOLINT
@@ -213,7 +216,7 @@
213216 }
214217 ~ScopedMessage()
215218 {
216- ScopedTrace::GetInstance().list.erase(this);
219+ ScopedTrace::GetInstance().list.remove(this);
217220 }
218221 };
219222 private:
@@ -220,13 +223,17 @@
220223 class ScopedTrace
221224 {
222225 public:
226+#if IUTEST_USE_OWN_LIST
223227 typedef detail::iu_list<ScopedMessage> msg_list;
228+#else
229+ typedef ::std::list<ScopedMessage*> msg_list;
230+#endif
224231 msg_list list;
225232 static ScopedTrace& GetInstance() { static ScopedTrace inst; return inst; }
226233 public:
227234 void append_message(TestPartResult& part_result)
228235 {
229- if( list.count() )
236+ if( list.size() )
230237 {
231238 part_result.add_message("\niutest trace:");
232239 for( msg_list::iterator it = list.begin(), end=list.end(); it != end; ++it )
@@ -234,7 +241,7 @@
234241 // TODO : 追加メッセージとして保存するべき
235242 // 現状はテスト結果のメッセージに追加している。
236243 part_result.add_message("\n");
237- part_result.add_message(it->make_message().c_str());
244+ part_result.add_message((*it)->make_message().c_str());
238245 }
239246 }
240247 }
--- trunk/include/iutest_case.hpp (revision 1351)
+++ trunk/include/iutest_case.hpp (revision 1352)
@@ -28,11 +28,18 @@
2828 * @brief テストケース
2929 */
3030 class TestCase
31+#if IUTEST_USE_OWN_LIST
3132 : public detail::iu_list_node<TestCase>
33+#endif
3234 {
3335 protected:
34- typedef detail::iu_list<TestInfo> iuTestInfos; //!< TestInfo リスト
35- //typedef ::std::vector<TestInfo*> iuTestInfos; //!< TestInfo リスト
36+ //! TestInfo リスト
37+#if IUTEST_USE_OWN_LIST
38+ typedef detail::iu_list<TestInfo> iuTestInfos;
39+#else
40+ typedef ::std::vector<TestInfo*> iuTestInfos;
41+#endif
42+
3643 protected:
3744 /**
3845 * @brief コンストラクタ
--- trunk/include/iutest_config.hpp (revision 1351)
+++ trunk/include/iutest_config.hpp (revision 1352)
@@ -640,6 +640,20 @@
640640
641641
642642 /**
643+ * @brief テストの所持を独自リストクラスで行う
644+ * @deprecated
645+*/
646+#if !defined(IUTEST_USE_OWN_LIST)
647+# if defined(IUTEST_NO_TEMPLATE_TEMPLATES)
648+# define IUTEST_USE_OWN_LIST 1
649+# endif
650+#endif
651+
652+#if !defined(IUTEST_USE_OWN_LIST)
653+# define IUTEST_USE_OWN_LIST 0
654+#endif
655+
656+/**
643657 * @}
644658 */
645659
--- trunk/include/iutest_info.hpp (revision 1351)
+++ trunk/include/iutest_info.hpp (revision 1352)
@@ -29,7 +29,9 @@
2929 * @brief テスト情報クラス
3030 */
3131 class TestInfo
32+#if IUTEST_USE_OWN_LIST
3233 : public detail::iu_list_node<TestInfo>
34+#endif
3335 {
3436 public:
3537 /**
--- trunk/include/iutest_ver.hpp (revision 1351)
+++ trunk/include/iutest_ver.hpp (revision 1352)
@@ -17,11 +17,11 @@
1717
1818 //======================================================================
1919 // define
20-#define IUTEST_VER 0x01169903u //!< iutest version 1.16.99.3
20+#define IUTEST_VER 0x01169905u //!< iutest version 1.16.99.5
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 0x03u //!< Revision
24+#define IUTEST_REVISION 0x05u //!< Revision
2525
2626 #define IUTEST_BUILD IUTEST_MICROVER //!< @deprecated
2727
@@ -120,6 +120,11 @@
120120 * @page CHANGELOG 変更履歴
121121 * @par Changes
122122 <ul>
123+ <li>v1.17.0.0
124+ <ul>
125+ <li></li>
126+ </ul>
127+ </li>
123128 <li>v1.16.7.0
124129 <ul>
125130 <li>古い google mock の互換性エラー修正</li>
--- trunk/projects/cmake/.gitignore (nonexistent)
+++ trunk/projects/cmake/.gitignore (revision 1352)
@@ -0,0 +1 @@
1+*/
--- trunk/test/cxx_feature_tests.cpp (revision 1351)
+++ trunk/test/cxx_feature_tests.cpp (revision 1352)
@@ -91,6 +91,10 @@
9191 }
9292 {
9393 ::std::optional<int> opt = ::std::nullopt;
94+ IUTEST_EXPECT_EQ(::std::nullopt, opt);
95+ }
96+ {
97+ ::std::optional<int> opt = ::std::nullopt;
9498 IUTEST_EXPECT_FALSE(opt);
9599 IUTEST_EXPECT_NONFATAL_FAILURE(IUTEST_EXPECT_EQ(1234, opt), "1234");
96100 }
Afficher sur ancien navigateur de dépôt.