1 #include "../gintenlib/value_saver.hpp"
2 #include "../gintenlib/typed_saver.hpp"
4 // boost ¤ÎñÂΥƥ¹¥È¥Õ¥ì¡¼¥à¥ï¡¼¥¯
5 #include <boost/test/minimal.hpp>
7 // ¥Æ¥¹¥ÈËÜÂΤϥƥó¥×¥ì¡¼¥È¤Çµ½Ò
8 template<typename T, typename Saver>
9 void test( const T& x0, const T& x1 )
14 // ¤È¤ê¤¢¤¨¤º x ¤ÎÃͤò¥Á¥§¥Ã¥¯
15 BOOST_CHECK( x == x0 );
19 // saver ¤ËÆͤùþ¤ó¤À»þÅÀ¤Ç¤ÏÃͤÏÊѤï¤é¤Ê¤¤
20 BOOST_CHECK( x == x0 );
24 BOOST_CHECK( x == x1 );
28 BOOST_CHECK( x == x0 );
35 BOOST_CHECK( x == x1 );
39 // Éü¸µ¤Ç¤¤¿¤«¥Á¥§¥Ã¥¯
40 BOOST_CHECK( x == x0 );
42 // restore() ¸å¤Ï¥Ç¥¹¥È¥é¥¯¥¿¤ÇÉü¸µ¤·¤Ê¤¤¡Ê¤¤¤¤¤«°¤¤¤«¤ÏÊ̤Ȥ·¤Æ¡Ë
45 BOOST_CHECK( x == x1 );
49 // Êݸ¤ÈƱ»þ¤ËÃͤò½ñ¤´¹¤¨¤ë¡¢¤È¤¤¤¦¤Î¤Ï³ä¤È¤è¤¯¤¢¤ëÆ°ºî¤Ê¤Î¤Ç
50 // ³Ú¤Ç¤¤ë¤è¤¦¤ËÀìÍÑ¥³¥ó¥¹¥È¥é¥¯¥¿¤òÍÑ°Õ¤·¤Æ¤¢¤ê¤Þ¤¹
52 BOOST_CHECK( x == x1 );
54 // ¤¤Á¤ó¤ÈÉü¸µ¤Ç¤¤ë¡©
56 BOOST_CHECK( x == x0 );
59 // Êݸ¤ÈƱ»þ¤ËÃͤò½ñ¤´¹¤¨¤ë¡¢¤È¤¤¤¦¤Î¤Ï³ä¤È¤è¤¯¤¢¤ëÆ°ºî¤Ê¤Î¤Ç
60 // ³Ú¤Ç¤¤ë¤è¤¦¤ËÀìÍÑ¥³¥ó¥¹¥È¥é¥¯¥¿¤òÍÑ°Õ¤·¤Æ¤¢¤ê¤Þ¤¹
62 BOOST_CHECK( x == x1 );
66 BOOST_CHECK( x == x1 );
69 BOOST_CHECK( x == x1 );
73 void test_saver( const T& x0, const T& x1 )
75 // ·¿ÉÕ¤ÈÈÆÍÑ¡¢Î¾Êý¥Æ¥¹¥È
76 test< T, gintenlib::typed_saver<T> >( x0, x1 );
77 test< T, gintenlib::value_saver >( x0, x1 );
81 #include <boost/shared_ptr.hpp>
83 int test_main( int argc, char* argv[] )
86 test_saver<int>( 0, 1 );
88 // ¥æ¡¼¥¶ÄêµÁ·¿¡Ê e.g. std::complex ¡Ë
89 std::complex<double> j( 0, 1 );
90 test_saver< std::complex<double> >( 1.0, j );
92 // ¥æ¡¼¥¶ÄêµÁ·¿¤½¤Î¤Ë¡¢boost::shared_ptr
93 boost::shared_ptr<int> p0, p1( new int(0) );
94 test_saver< boost::shared_ptr<int> >( p0, p1 );