/* -*- Indented-Text -*- */
+/* Copyright (C) 2003, 2010 TSUTSUMI Kikuo.
+ This file is part of the CCUnit Library.
+
+ The CCUnit Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License
+ as published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ The CCUnit Library is distributed in the hope that it will be
+ useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+ of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the CCUnit Library; see the file COPYING.LESSER.
+ If not, see <http://www.gnu.org/licenses/>
+*/
/* $Id$ */
/**
@english
<ol>
<li> @~english Create a test function
- @~japanese ¥Æ¥¹¥È´Ø¿ô¤òºî¤ë</li>
+ @~japanese ¥Æ¥¹¥È´Ø¿ô¤òºî¤ë
+ @~
+</li>
<li> @~english When you want to check a value, call
@~japanese Ãͤò¥Á¥§¥Ã¥¯¤·¤¿¤¤¾ì¹ç¤Ï¡¢@~
@link CCUNIT_ASSERT() CCUNIT_ASSERT(bool) @endlink
@~english and pass a bool that is true if the test succeeds
@~japanese ¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢
- ¤â¤·¥Æ¥¹¥È¤¬À®¸ù¤¹¤ë¤Î¤Ç¤¢¤ì¤Ð¿¿¤òÊÖ¤¹¤è¤¦¤Ê¿¿µ¶ÃͤòÅϤ·¤Þ¤¹</li>
+ ¤â¤·¥Æ¥¹¥È¤¬À®¸ù¤¹¤ë¤Ê¤é¿¿¤òÊÖ¤¹¤è¤¦¤Ê¿¿µ¶ÃͤòÅϤ·¤Þ¤¹@~
+
+ @~english ASSERT macro is listed in others as well in
+ @link Assertions Making assertions @endlink.
+ @~japanese ASSERT ´Ø·¸¤Î¥Þ¥¯¥í¤Ï¾¤Ë¤â
+ @link Assertions Making assertions @endlink
+ ¤Ë¥ê¥¹¥È¤·¤Æ¤¢¤ê¤Þ¤¹¡£
+ @~
+</li>
</ol>
@~english
@~japanese
Î㤨¤Ð¡¢Æó¤Ä¤ÎÊ£ÁÇ¿ô¤Î¹ç·×¤¬¡¢
Æó¤Ä¤ÎÊ£ÁÇ¿ô¤ÎÃͤò²Ã»»¤·¤¿ÃͤÈƱ¤¸¤Ç¤¢¤ë¤³¤È¤ò¥Æ¥¹¥È¤¹¤ë¤È¤·¤Þ¤¹¡£
+¡Ê¤³¤³¤Ç»ÈÍѤ¹¤ë¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¤Ï
+examples/complex ¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ê¤Þ¤¹¡£¡Ë
+@~
+
+@~english
+This sample program is in the examples/complex directory.
@~
@code
complex_t c1_1 = { 1.0, 1.0 };
complex_t result;
complex_t c11_2 = { 11.0, 2.0 };
- CCUNIT_ASSERT (complex_equals (&c11_2, complex_add (&result, c10_1, c1_1)));
+ CCUNIT_ASSERT (complex_equals (&c11_2, complex_add (&result, &c10_1, &c1_1)));
}
@endcode
¤³¤ì¤ÏÂçÊÑñ½ã¤Ê¥Æ¥¹¥È¤Ç¤¹¡£
Ä̾Ʊ¤¸¥Ç¡¼¥¿¤Î¥»¥Ã¥È¤ÇÁö¤é¤»¤ë¤¿¤á¤Ë¡¢
¤¿¤¯¤µ¤ó¤Î¾®¤µ¤Ê¥Æ¥¹¥È¥±¡¼¥¹¤òºî¤é¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤Ç¤·¤ç¤¦¡£
-¤½¤¦¤¹¤ë¤Ë¤Ï¥Õ¥£¥¯¥¹¥Á¥ã¡ÊÈ÷Éʡˤò»È¤¤¤Þ¤¹¡£
+¤½¤³¤Ç¥Õ¥£¥¯¥¹¥Á¥ã¡ÊÈ÷Éʡˤò»È¤¤¤Þ¤¹¡£
@~
@english
¤³¤Î¥Ç¡¼¥¿¤Î¥»¥Ã¥È¤ò¥Õ¥£¥¯¥¹¥Á¥ã¤È¸Æ¤Ö¤³¤È¤Ë¤·¤Þ¤¹¡£
¥Æ¥¹¥È¤ò½ñ¤¤¤Æ¤¤¤ë¤È¡¢
¼ÂºÝ¤Î¥Æ¥¹¥È¤¹¤ëÃͤò¥Õ¥£¥¯¥¹¥Á¥ã¤Ë¥»¥Ã¥È¥¢¥Ã¥×¤¹¤ë¥³¡¼¥É¤ò½ñ¤¯Êý¤Ë¡¢
-¤â¤Ã¤È»þ´Ö¤ò¤«¤±¤Æ¤¤¤ë¤³¤È¤Ëµ¤¤Å¤¯¤³¤È¤¬¤è¤¯¤¢¤ê¤Þ¤¹¡£
+¤è¤ê»þ´Ö¤ò¤«¤±¤Æ¤¤¤ë¤³¤È¤Ëµ¤¤Å¤¯¤³¤È¤¬¤è¤¯¤¢¤ê¤Þ¤¹¡£
@~
@~english
@~english
When you have a common fixture, here is what you do:
@~japanese
-¤â¤·¶¦Ä̤¹¤ë¥Õ¥£¥¯¥¹¥Á¥ã¤¬¤¢¤ì¤Ð¡¢¤³¤ó¤Ê¤Õ¤¦¤Ë¤¹¤ë¤³¤È¤Ë¤Ê¤ê
-¤Þ¤¹¡£
+¤â¤·¶¦Ä̤¹¤ë¥Õ¥£¥¯¥¹¥Á¥ã¤¬¤¢¤ì¤Ð¡¢¤³¤ó¤Ê¤Õ¤¦¤Ë¤¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
@~
<ol>
@~japanese
@link CCUnitTestCase TestCase @endlink ¹½Â¤ÂΤ˥á¥â¥ê¤ò³ä¤êÅö¤Æ¤Þ¤¹
¡Ê°Ê¹ß¡¢¹½Â¤ÂΤ˳ä¤êÅö¤Æ¤¿¥á¥â¥ê¤ò¡¢¥ª¥Ö¥¸¥§¥¯¥È¤È¸Æ¤Ö¤³¤È¤Ë¤·¤Þ¤¹¡Ë
+ @~
</li>
<li>@~english
Add an global variable for each part of the fixture
@~japanese
¥Õ¥£¥¯¥¹¥Á¥ã¤Î¤½¤ì¤¾¤ì¤ÎÉôʬ¤ËÂç°èÊÑ¿ô¤òÄɲä·¤Þ¤¹
+ @~
</li>
<li>@~english
Write <code>setUp()</code> function to initialize the valiables
@~japanese
<code>setUp()</code> ´Ø¿ô¤ò½ñ¤¤¤ÆÊÑ¿ô¤ò½é´ü²½¤·¤Þ¤¹
+ @~
</li>
<li>@~english
Write <code>tearDown()</code> to release any permanent
@~japanese
<code>tearDown()</code> ´Ø¿ô¤ò½ñ¤¤¤Æ<code>setUp</code>
¤Ç³ä¤êÅö¤Æ¤¿±Ê³Ū¥ê¥½¡¼¥¹¤ò²òÊü¤·¤Þ¤¹
+ @~
</li>
<li>@~english
Create a @link CCUnitTestFixture TestFixture @endlink object
@~japanese
@link CCUnitTestFixture CCUnitTestFixture @endlink
¹½Â¤ÂΤ˥á¥â¥ê¤ò³ä¤êÅö¤Æ¤Þ¤¹
+ @~
</li>
<li>@~english
Add @link CCUnitTestCase TestCase @endlink objects to fixture object
@link CCUnitTestCase TestCase @endlink ¥ª¥Ö¥¸¥§¥¯¥È¤ò
@link CCUnitTestFixture TestFixture @endlink
¥Õ¥£¥¯¥¹¥Á¥ã¥ª¥Ö¥¸¥§¥¯¥È¤ËÅÐÏ¿¤·¤Þ¤¹¡£
+ @~
</li>
</ol>
static complex_t* s1_1;
static complex_t* s11_2;
-void setUp_ComplexTest ()
+void setUp_complex_test ()
{
s10_1 = complex_new (10, 1);
s1_1 = complex_new (1, 1);
s11_2 = complex_new (11, 2);
}
-void tearDown_ComplexTest ()
+void tearDown_complex_test ()
{
complex_delete (s10_1);
complex_delete (s1_1);
...
CCUnitTestFixture* fixture;
- fixture = ccunit_newTestFixture ("ComplexTest",
- CCUNIT_NEWTESTFUNC(setUp_ComplexTest),
- CCUNIT_NEWTESTFUNC(tearDown_ComplexTest));
+ fixture = ccunit_newTestFixture ("complex test",
+ CCUNIT_NEWTESTFUNC(setUp_complex_test),
+ CCUNIT_NEWTESTFUNC(tearDown_complex_test));
@endcode
@~english
One may create and run objects for each test case like this:
@~japanese
°ì¤Ä¤Ë¤Ï¼¡¤Î¤è¤¦¤Ë¡¢
-¥Õ¥£¥¯¥¹¥Á¥ã¤òºîÀ®¤·¤Æ¤½¤ì¤¾¤ì¤Î¥Æ¥¹¥È¥±¡¼¥¹¤ò¼Â¹Ô¤µ¤»¤ë¤³¤È
-¤¬¤Ç¤¤Þ¤¹¡£
+¥Õ¥£¥¯¥¹¥Á¥ã¤òºîÀ®¤·¤Æ¤½¤ì¤¾¤ì¤Î¥Æ¥¹¥È¥±¡¼¥¹¤ò¼Â¹Ô¤µ¤»¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
@~
@code
Ä̾ï¤Ï @link ExecutingTest TestRunner @endlink
(@ref test_runner ¸å½Ò)
¤Ç·ë²Ì¤òɽ¼¨¤·¤Þ¤¹¡£
+@~
@~english
Once you have several tests, organize them into a suite.
@~japanese
°ìÅÙ¤¤¤¯¤Ä¤«¤Î¥Æ¥¹¥È¤òºî¤Ã¤¿¤é¡¢
-¤½¤ì¤é¤ò¥¹¥¤¡¼¥È¤ËÀ°Íý¤·¤Þ¤¹¡£
+¤½¤ì¤é¤ò¥¹¡¼¥Ä¤ËÀ°Íý¤·¤Þ¤¹¡£
+@~
@english
@section suite Suite
@japanese
-@section suite ¥¹¥¤¡¼¥È
+@section suite ¥¹¡¼¥Ä
@endif
@~english
How do you set up your tests so that you can run them all at once?
@~japanese
-¤É¤Î¤è¤¦¤Ë¤·¤Æ¡¢°ìÅ٤˥ƥ¹¥È¤ò¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¤è¤¦¡¢
-½àÈ÷¤·¤¿¤é¤¤¤¤¤Ç¤·¤ç¤¦¤«¡©
+°ìÅ٤˥ƥ¹¥È¤ò¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë½àÈ÷¤¹¤ë¤Ë¤Ï¡¢
+¤É¤Î¤è¤¦¤Ë¤·¤¿¤é¤¤¤¤¤Ç¤·¤ç¤¦¤«¡©
@~
@~english
-%CCUnit provides a @link CCUnitTestSuite TestSuite @endlink
+CCUnit provides a @link CCUnitTestSuite TestSuite @endlink
module that runs any number of TestCases together.
@~japanese
CCUnit ¤Ï¤¤¤¯¤Ä¤â¤Î @link CCUnitTestCase TestCases @endlink
@~english
To create a suite of two or more tests, you do the following:
@~japanese
-Æó¤Ä°Ê¾å¤Î¥Æ¥¹¥È¤ò´Þ¤à°ì¤Ä¤Î¥¹¥¤¡¼¥È¤òºî¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£
+Æó¤Ä°Ê¾å¤Î¥Æ¥¹¥È¤ò´Þ¤à°ì¤Ä¤Î¥¹¡¼¥Ä¤òºî¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£
@~
@code
contain @link CCUnitTestFixture TestFixtures @endlink. They
can contain any object that implements the @link CCUnitTest
Test @endlink interface. For example, you can create a
-@link CCUnitTestSuite TestSuite @endlink in your code and I
-can create one in mine, and we can run them together by
+@link CCUnitTestSuite TestSuite @endlink
+(<code>complex_add_sub_suite ()</code>) in your code and I
+can create one in mine
+(<code>complex_mul_div_suite ()</code>), and we can run them together by
creating a @link CCUnitTestSuite TestSuite @endlink that
contains both:
@~japanese
@link CCUnitTestSuite TestSuites @endlink ¤Ï
@link CCUnitTestFixture TestFixtures @endlink
¤ò´Þ¤à¤À¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£
+@link CCUnitTestSuite TestSuites @endlink ¼«¿È¤ò´Þ¤à¤³¤È¤â¤Ç¤¤Þ¤¹¡£
+<!--
¤½¤ì¤é¤Ï @link CCUnitTest Test @endlink
¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤¹¤ë¤É¤ó¤Ê¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤â´Þ¤á¤é¤ì¤Þ¤¹¡£
-Î㤨¤Ð¡¢¤¢¤Ê¤¿¤Ï¤¢¤Ê¤¿¤Î¥³¡¼¥É¤Ë@link CCUnitTestSuite TestSuite @endlink
-¤òºî¤ë¤³¤È¤¬¤Ç¤¡¢¤½¤·¤Æ»ä¤Ï»ä¤Î¥¹¥¤¡¼¥È¤òºî¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡¢
+-->
+Î㤨¤Ð¡¢¤¢¤Ê¤¿¤Ï¤¢¤Ê¤¿¤Î¥³¡¼¥É¤Ë @link CCUnitTestSuite TestSuite @endlink
+(<code>complex_add_sub_suite ()</code>)
+¤òºî¤ë¤³¤È¤¬¤Ç¤¡¢
+¤½¤·¤Æ»ä¤Ï»ä¤Î¥¹¡¼¥Ä
+(<code>complex_mul_div_suite ()</code>)
+¤òºî¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡¢
¤½¤·¤Æ»äã¤ÏξÊý¤È¤â¤ò´Þ¤ó¤Ç¤¤¤ë @link CCUnitTestSuite TestSuite @endlink
-¤òºî¤Ã¤Æ°ì½ï¤Ë¸Ä¡¹¤Î¥¹¥¤¡¼¥È¤òÆ°¤«¤¹¤³¤È¤¬¤Ç¤¤ë¤Î¤Ç¤¹¡£
+¤òºî¤Ã¤Æ°ì½ï¤Ë¤½¤ì¤¾¤ì¤Î¥¹¡¼¥Ä¤òÆ°¤«¤¹¤³¤È¤¬¤Ç¤¤ë¤Î¤Ç¤¹¡£
@~
@code
CCUnitTestSuite* suite;
CCUnitTestResult* result;
-suite = ccunit_newTestSuite ("suite");
+suite = ccunit_newTestSuite ("Complex add/sub/mul/div test suite");
ccunit_addTestSuite (suite, complex_add_sub_suite ());
ccunit_addTestSuite (suite, complex_mul_div_suite ());
result = ccunit_runTestSuite(suite, NULL);
CreatingTestSuite ccunit_makeSuite @endlink tool that generate a
creating test suite code.
@~japanese
-°ì¤Ä¥Æ¥¹¥È¥¹¥¤¡¼¥È¤ò½ñ¤¤¤¿¤é¡¢
+°ì¤Ä¥Æ¥¹¥È¥¹¡¼¥Ä¤ò½ñ¤¤¤¿¤é¡¢
¤½¤ì¤ò¼Â¹Ô¤·¤¿¤¤¤Ç¤·¤ç¤¦¡£
-CCUnit ¤Ï¥¹¥¤¡¼¥È¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤ËÄêµÁ¤·¡¢
+CCUnit ¤Ï¥¹¡¼¥Ä¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤ËÄêµÁ¤·¡¢
·ë²Ì¤òɽ¼¨¤¹¤ë¤¿¤á¤Î¥Ä¡¼¥ë¤òÄ󶡤·¤Þ¤¹¡£
-¥¹¡¼¥Ä¤ò@link CreatingTestSuite ccunit_makeSuite @endlink
+¥¹¡¼¥Ä¤ò @link CreatingTestSuite ccunit_makeSuite @endlink
¥Ä¡¼¥ë¤ËÆþÎϤǤ¤ë¤è¤¦¤Ê·Á¼°¤Ç½ñ¤¯¤³¤È¤Ç¡¢
¥Æ¥¹¥È¥¹¡¼¥Ä¤òºîÀ®¤¹¤ë¥³¡¼¥É¤ò¼«Æ°Åª¤ËÀ¸À®¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
@~
For example, to make a ComplexTest suite available to a
@link CreatingTestSuite ccunit_makeSuite @endlink,
excute the following tool to
-ComplexTest.c:
+testComplex.c:
@~japanese
-Î㤨¤Ð¡¢ComplexTest ¥¹¥¤¡¼¥È¤ò
+Î㤨¤Ð¡¢ComplexTest ¥¹¡¼¥Ä¤ò
@link CreatingTestSuite ccunit_makeSuite @endlink
¤ò»È¤Ã¤Æ»ÈÍѤǤ¤ë¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¡¢
-°Ê²¼¤Î¥Ä¡¼¥ë¤ò ComplexTest.c ¤Ë¼Â¹Ô¤·¤Þ¤¹¡£
+°Ê²¼¤Î¥Ä¡¼¥ë¤ò testComplex.c ¤Ë¼Â¹Ô¤·¤Þ¤¹¡£
@~
@code
-$ ccunit_makeSuite -f complex_suite -o suiteComplex.c ComplexTest.c
+$ ccunit_makeSuite -f complex_suite -o suiteComplex.c testComplex.c
@endcode
@anchor test_runner_code
@~english
-To use the TestRunner, include the header files for the tests in Main.c:
+@~japanese
+<code>complex_suite</code> ¤È¤¤¤¦´Ø¿ô¤¬ÄêµÁ¤µ¤ì¤¿¡¢
+<code>suiteComplex.c</code> ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤¬ºîÀ®¤µ¤ì¤Þ¤¹¡£
+@~
+
+@~english
+To use the TestRunner, include the header files for the tests in runTest.c:
@~japanese
TestRunner ¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¡¢
-Main.c¤Ç¥Æ¥¹¥È¤Î¤¿¤á¤Î¥Õ¥¡¥¤¥ë¤Î¥Ø¥Ã¥À¤ò¥¤¥ó¥¯¥ë¡¼¥É¤·¤Þ¤¹¡£
+Î㤨¤Ð runTest.c ¤Ç¥Æ¥¹¥È¤Î¤¿¤á¤Î¥Õ¥¡¥¤¥ë¤Î¥Ø¥Ã¥À¤ò¥¤¥ó¥¯¥ë¡¼¥É¤·¤Þ¤¹¡£
@~
@code
The name of the source file that contains the test
@~japanese
¥Æ¥¹¥È¤ò´Þ¤ó¤Ç¤¤¤ë¥½¡¼¥¹¥Õ¥¡¥¤¥ë̾
+ @~
</li>
<li>@~english
The line number where the failure occurred
@~japanese
¼ºÇÔ¤¬µ¯¤³¤Ã¤¿¹ÔÈÖ¹æ
+ @~
</li>
<li>@~english
The name of the test case that failed
@~japanese
¼ºÇÔ¤·¤¿¥Æ¥¹¥È¥±¡¼¥¹¤Î̾Á°
+ @~
</li>
<li>@~english
All of the text inside the call to
<code>CCUNIT_ASSERT ()</code> which detected the failure
@~japanese
¼ºÇÔ¤ò¸¡ÃΤ·¤¿<code>CCUNIT_ASSERT ()</code>¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿»þ¤Î¾ò·ï¤Îʸ»úÎó¡£
+ @~
</li>
</ul>
@~
@code
-#include <cppunit/CCUnitAssert.h>
+#include <ccunit/CCUnitAssert.h>
@endcode
@~english
ºÇ½é¤Ë¡¢¥Õ¥£¥¯¥¹¥Á¥ã¤òÀë¸À¤·¤Þ¤¹¡£
¤³¤ì¤ÏjavaDoc¥¹¥¿¥¤¥ë¤Î¥³¥á¥ó¥ÈÆâ¤Ë¥Õ¥£¥¯¥¹¥Á¥ã¤Î̾Á°¤òµ½Ò¤·¤Þ¤¹¡£
javaDoc¥¹¥¿¥¤¥ë¤Î¥³¥á¥ó¥È¤È¤Ï C ¥¹¥¿¥¤¥ë¤Î¥³¥á¥ó¥È¥Ö¥í¥Ã¥¯¤Î³«»Ï¤¬
-Æó¤Ä¤Î¥¢¥¹¥¿¥ê¥¹¥¯<tt>*</tt>¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤â¤Î¤Ç¤¹¡£
+Æó¤Ä¤Î¥¢¥¹¥¿¥ê¥¹¥¯ <tt>**</tt> ¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤â¤Î¤Ç¤¹¡£
@~
@code
To generate creating suite function code, run
<code>ccunit_makeSuite</code> tool.
@~japanese
-¥¹¥¤¡¼¥ÈºîÀ®´Ø¿ô¤Î¥³¡¼¥É¤òÀ¸À®¤¹¤ë¤Ë¤Ï¡¢
+¥¹¡¼¥ÄºîÀ®´Ø¿ô¤Î¥³¡¼¥É¤òÀ¸À®¤¹¤ë¤Ë¤Ï¡¢
<code>ccunit_makeSuite</code>¥Ä¡¼¥ë¤ò¼Â¹Ô¤·¤Þ¤¹¡£
@~
Now, you need to run your application after compilation.
The sample program made in the above is in the examples/complex directory.
@~japanese
-¤½¤ì¤Ç¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤¿¸å¤Ë¼Â¹Ô¤·¤Æ¤ß¤Þ¤·¤ç
-¤¦¡£
-°Ê¾å¤ÇºîÀ®¤·¤¿¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¤Ï examples/complex ¥Ç¥£¥ì¥¯
-¥È¥ê¤Ë¤¢¤ê¤Þ¤¹¡£
+¤½¤ì¤Ç¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤¿¸å¤Ë¼Â¹Ô¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
+°Ê¾å¤ÇºîÀ®¤·¤¿¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¤Ï examples/complex ¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ê¤Þ¤¹¡£
@~
*/