From 51b2cb5d415991811e217d251dce99dfcde6c811 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Mon, 11 Aug 2008 14:56:50 +0000 Subject: [PATCH] Revert changes made after deadline. [SVN r48086] --- docbook/img/boost.test.logo.png | Bin 24740 -> 0 bytes docbook/img/class-hier.jpg | Bin 9332 -> 0 bytes docbook/img/level.png | Bin 244 -> 0 bytes docbook/img/post_build_event.jpg | Bin 23140 -> 0 bytes docbook/img/post_build_out.jpg | Bin 51685 -> 0 bytes docbook/img/run_args.jpg | Bin 31817 -> 0 bytes example/Jamfile.v2 | 4 - example/cla/assign_to.cpp | 2 +- example/cla/basic_float.cpp | 2 +- example/cla/basic_int.cpp | 2 +- example/cla/basic_list.cpp | 2 +- example/cla/basic_string.cpp | 2 +- example/cla/basic_udt.cpp | 2 +- example/cla/char_parameter.cpp | 2 +- example/cla/custom_handler.cpp | 2 +- example/cla/custom_interpreter.cpp | 2 +- example/cla/custom_parameter.cpp | 2 +- example/cla/default_value.cpp | 2 +- example/cla/dual_name.cpp | 2 +- example/cla/global.cpp | 2 +- example/cla/guess_name.cpp | 2 +- example/cla/help.cpp | 2 +- example/cla/ignore_mismatch.cpp | 2 +- example/cla/input_separator.cpp | 2 +- example/cla/multiplicable.cpp | 2 +- example/cla/name.cpp | 2 +- example/cla/optional.cpp | 2 +- example/cla/optional_value.cpp | 2 +- example/cla/positional.cpp | 2 +- example/cla/prefix.cpp | 2 +- example/cla/reference.cpp | 2 +- example/cla/remainder.cpp | 2 +- example/cla/separator.cpp | 2 +- example/cla/usage.cpp | 2 +- example/cla/validation/access_unknown.cpp | 2 +- example/cla/validation/ambiguous_access.cpp | 2 +- example/cla/validation/ambiguous_input.cpp | 2 +- .../cla/validation/definition_conflict.cpp | 2 +- example/cla/validation/invalid_short_name.cpp | 2 +- .../cla/validation/multiple_generators.cpp | 2 +- .../validation/multiple_value_handlers.cpp | 2 +- .../cla/validation/opt_with_default_value.cpp | 2 +- .../optional_plus_multiplicable.cpp | 2 +- example/cla/validation/required_missing.cpp | 2 +- example/cla/validation/unexpected_input.cpp | 2 +- .../cla/validation/unexpected_repetition.cpp | 2 +- example/cla/wide_string.cpp | 2 +- example/const_string.hpp | 179 ---- example/const_string_test.cpp | 181 ---- example/env/custom_interpreter_env.cpp | 2 +- example/env/env_var_default_value.cpp | 2 +- example/env/environment_ex.cpp | 2 +- example/env/global_id.cpp | 2 +- example/env/modifier_combination.cpp | 2 +- example/env/validation/need_typed_access.cpp | 2 +- example/env/variable_ex.cpp | 2 +- example/est_example1.cpp | 2 +- example/est_example2.cpp | 2 +- example/exec_mon_example.cpp | 2 +- example/logged_exp_example.cpp | 2 +- example/named_param_example.cpp | 2 +- example/prg_exec_example.cpp | 2 +- example/unit_test_example_011.cpp | 9 - example/unit_test_example_012.cpp | 24 - example/unit_test_example_02.cpp | 2 +- example/unit_test_example_03.cpp | 2 +- example/unit_test_example_04.cpp | 2 +- example/unit_test_example_05.cpp | 2 +- example/unit_test_example_06.cpp | 2 +- example/unit_test_example_07.cpp | 4 +- example/unit_test_example_08.cpp | 2 +- example/unit_test_example_09_1.cpp | 2 +- example/unit_test_example_09_2.cpp | 2 +- example/unit_test_example_10.cpp | 2 +- example/unit_test_example_11.cpp | 2 +- example/unit_test_example_12.cpp | 2 +- example/unit_test_example_12.input | 22 +- src/compiler_log_formatter.cpp | 2 +- src/cpp_main.cpp | 2 +- src/debug.cpp | 2 +- src/exception_safety.cpp | 2 +- src/execution_monitor.cpp | 2 +- src/framework.cpp | 2 +- src/interaction_based.cpp | 2 +- src/logged_expectations.cpp | 2 +- src/plain_report_formatter.cpp | 2 +- src/progress_monitor.cpp | 2 +- src/results_collector.cpp | 2 +- src/results_reporter.cpp | 2 +- src/test_main.cpp | 2 +- src/test_tools.cpp | 2 +- src/unit_test_log.cpp | 2 +- src/unit_test_main.cpp | 2 +- src/unit_test_monitor.cpp | 2 +- src/unit_test_parameters.cpp | 2 +- src/unit_test_suite.cpp | 2 +- src/xml_log_formatter.cpp | 2 +- src/xml_report_formatter.cpp | 2 +- test/Jamfile.v2 | 11 +- test/algorithms_test.cpp | 2 +- test/basic_cstring_test.cpp | 67 +- test/boost_check_equal_str.cpp | 2 +- test/class_properties_test.cpp | 3 +- test/config_file_iterator_test.cpp | 2 +- test/config_file_test.cpp | 2 +- test/custom_exception_test.cpp | 2 +- test/errors_handling_test.cpp | 4 +- test/fixed_mapping_test.cpp | 2 +- test/foreach_test.cpp | 2 +- test/ifstream_line_iterator_test.cpp | 2 +- test/minimal_test.cpp | 2 +- test/online_test.cpp | 2 +- test/output_test_stream_test.cpp | 2 +- test/parameterized_test_test.cpp | 2 +- test/prg_exec_fail1.cpp | 2 +- test/prg_exec_fail2.cpp | 7 +- test/prg_exec_fail3.cpp | 2 +- test/prg_exec_fail4.cpp | 2 +- test/result_report_test.cpp | 2 +- test/sync_access_test.cpp | 36 - test/test_case_template_test.cpp | 2 +- test/test_files/cfg_file_tst1.cfg | 10 +- test/test_files/cfg_file_tst2.cfg | 2 +- test/test_files/cfg_file_tst3.cfg | 2 +- test/test_files/cfg_file_tst4.cfg | 2 +- test/test_files/cfg_file_tst5.cfg | 2 +- test/test_files/cfg_file_tst6.cfg | 2 +- test/test_files/cfg_file_tst7.cfg | 2 +- test/test_files/errors_handling_test.pattern | 784 +++++++++--------- test/test_files/errors_handling_test.pattern2 | 558 ++++++------- test/test_files/ifstream_line_iterator.tst1 | 6 +- test/test_files/ifstream_line_iterator.tst2 | 8 +- test/test_files/par_alias1.cfg | 18 +- test/test_files/par_alias2.cfg | 8 +- test/test_files/par_alias3.cfg | 8 +- test/test_files/result_report_test.pattern | 276 +++--- test/test_files/test_broken_line.cfg | 66 +- test/test_files/test_comments_and_blanks.cfg | 58 +- test/test_files/test_constructor.cfg | 8 +- test/test_files/test_define.cfg | 24 +- test/test_files/test_fp_comparisons.pattern | 60 +- test/test_files/test_ifdef.cfg | 74 +- test/test_files/test_ifdef2.cfg | 4 +- test/test_files/test_ifdef3.cfg | 6 +- test/test_files/test_ifdef4.cfg | 4 +- test/test_files/test_include1.cfg | 6 +- test/test_files/test_include1_include1.cfg | 2 +- test/test_files/test_include2.cfg | 6 +- test/test_files/test_include3.cfg | 6 +- .../test_incomplete_broken_line.cfg | 2 +- test/test_files/test_macro_def1.cfg | 16 +- test/test_files/test_macro_subst4.cfg | 2 +- test/test_files/test_multipart_value1.cfg | 2 +- test/test_files/test_multipart_value10.cfg | 2 +- test/test_files/test_multipart_value11.cfg | 2 +- test/test_files/test_multipart_value12.cfg | 2 +- test/test_files/test_multipart_value13.cfg | 2 +- test/test_files/test_multipart_value2.cfg | 2 +- test/test_files/test_multipart_value3.cfg | 2 +- test/test_files/test_multipart_value4.cfg | 2 +- test/test_files/test_multipart_value5.cfg | 2 +- test/test_files/test_multipart_value6.cfg | 2 +- test/test_files/test_multipart_value7.cfg | 2 +- test/test_files/test_multipart_value8.cfg | 2 +- test/test_files/test_multipart_value9.cfg | 6 +- test/test_files/test_tools_test.pattern | 141 ++-- test/test_files/test_undef.cfg | 16 +- test/test_fp_comparisons.cpp | 2 +- test/test_tools_test.cpp | 9 +- test/test_tree_management_test.cpp | 81 +- test/token_iterator_test.cpp | 2 +- .../src/console_test_runner.cpp | 2 +- .../test/test_runner_test.cpp | 2 +- 173 files changed, 1270 insertions(+), 1802 deletions(-) delete mode 100644 docbook/img/boost.test.logo.png delete mode 100644 docbook/img/class-hier.jpg delete mode 100644 docbook/img/level.png delete mode 100644 docbook/img/post_build_event.jpg delete mode 100644 docbook/img/post_build_out.jpg delete mode 100644 docbook/img/run_args.jpg delete mode 100644 example/const_string.hpp delete mode 100644 example/const_string_test.cpp delete mode 100644 example/unit_test_example_011.cpp delete mode 100644 example/unit_test_example_012.cpp delete mode 100644 test/sync_access_test.cpp mode change 100755 => 100644 test/test_files/cfg_file_tst1.cfg mode change 100755 => 100644 test/test_files/cfg_file_tst2.cfg mode change 100755 => 100644 test/test_files/cfg_file_tst3.cfg mode change 100755 => 100644 test/test_files/cfg_file_tst4.cfg mode change 100755 => 100644 test/test_files/cfg_file_tst5.cfg mode change 100755 => 100644 test/test_files/cfg_file_tst6.cfg mode change 100755 => 100644 test/test_files/cfg_file_tst7.cfg mode change 100755 => 100644 test/test_files/par_alias1.cfg mode change 100755 => 100644 test/test_files/par_alias2.cfg mode change 100755 => 100644 test/test_files/par_alias3.cfg mode change 100755 => 100644 test/test_files/test_broken_line.cfg mode change 100755 => 100644 test/test_files/test_comments_and_blanks.cfg mode change 100755 => 100644 test/test_files/test_constructor.cfg mode change 100755 => 100644 test/test_files/test_define.cfg mode change 100755 => 100644 test/test_files/test_ifdef.cfg mode change 100755 => 100644 test/test_files/test_ifdef2.cfg mode change 100755 => 100644 test/test_files/test_ifdef3.cfg mode change 100755 => 100644 test/test_files/test_ifdef4.cfg mode change 100755 => 100644 test/test_files/test_include1.cfg mode change 100755 => 100644 test/test_files/test_include1_include1.cfg mode change 100755 => 100644 test/test_files/test_include2.cfg mode change 100755 => 100644 test/test_files/test_include3.cfg mode change 100755 => 100644 test/test_files/test_incomplete_broken_line.cfg mode change 100755 => 100644 test/test_files/test_macro_def1.cfg mode change 100755 => 100644 test/test_files/test_macro_subst4.cfg mode change 100755 => 100644 test/test_files/test_multipart_value1.cfg mode change 100755 => 100644 test/test_files/test_multipart_value10.cfg mode change 100755 => 100644 test/test_files/test_multipart_value11.cfg mode change 100755 => 100644 test/test_files/test_multipart_value12.cfg mode change 100755 => 100644 test/test_files/test_multipart_value13.cfg mode change 100755 => 100644 test/test_files/test_multipart_value2.cfg mode change 100755 => 100644 test/test_files/test_multipart_value3.cfg mode change 100755 => 100644 test/test_files/test_multipart_value4.cfg mode change 100755 => 100644 test/test_files/test_multipart_value5.cfg mode change 100755 => 100644 test/test_files/test_multipart_value6.cfg mode change 100755 => 100644 test/test_files/test_multipart_value7.cfg mode change 100755 => 100644 test/test_files/test_multipart_value8.cfg mode change 100755 => 100644 test/test_files/test_multipart_value9.cfg mode change 100755 => 100644 test/test_files/test_undef.cfg diff --git a/docbook/img/boost.test.logo.png b/docbook/img/boost.test.logo.png deleted file mode 100644 index 89467d97048280b97e67319083da10cf4e763be5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24740 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 SZ6N~#1B0ilpUXO@geCw?jqSPs diff --git a/docbook/img/class-hier.jpg b/docbook/img/class-hier.jpg deleted file mode 100644 index f5cccfc6b997c4d262aa52861e48296c96876996..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9332 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 diff --git a/docbook/img/post_build_event.jpg b/docbook/img/post_build_event.jpg deleted file mode 100644 index ac9cdf9aa870644482f7ae00ab28c26bc17f6302..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23140 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 diff --git a/docbook/img/run_args.jpg b/docbook/img/run_args.jpg deleted file mode 100644 index be0ab288562f78eb559199e48ecbe3cdeadfcb40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31817 zcmex=pPQGDpO2SYNJv;%NJt6<Wg}zL(6GcQi#A>|b4p4s zEM53WT&1zu#JRX+Q`6KdYFiGPyQFOW@c#&d6eAQMY-MC(W@Tafe}q9rkdcvrnSqIk ziHRBNEI~#lAr?huRzpXTM5Bodh5z4T;9+KDU=m~&WUy!WmHEyveM512^zp*!ssg88 zW-Un&IMJ8kbhbCkbcfP9IdQJ*S9=8)o34KGb^BG-?1|H=!}-3i-M3P!!0>F=FWcO& zo_@?wNlVRHSHD!-<$-MPZR^IbRgI(e^+(qR1y7m@)p^nfX6l-Wx!oI0s&4H+ z;OPgmGtSKtqE4$Q7-oZ4+SXdRZNHYRJ^^JcSA-frrw!&XNr*1Zfm5>i6wHSM=LS6C zp|E7jR?*Xozugfuj2D^bHL>7XtJOurMIl>W{P0xla%fobwrHc-iK^8M(X=aH(n6Q+j}qfla&oTV554fzqlUMi9Gg;8c5?YFKkK}1*0(&L&TT(FRn7BCV$C9{sACFJ zPBIxS%)+9lu4}F1oT_AvdrlN>b z;=_eN*QQBH-hAc9Bo0ODOSZh@xzD*rH`hvPUF>B&fob3Nsmsw%mfv>hnuI4fuAc2Kly@g;F>Bhypv2@4O)++Tat zuj8V*PyTl4xCsY8^3_+DbcgP^@y(;-cc6@b<*WYs z`W*x%X71@ccwmaiS`NMmM=m&KmIO)^Jjl3vv*Y&AIC=6-Vf?d2;jq$EGrJr?Zrz~$&~S=qj8)(`8KS}9LUFR}h&dA-fZ zB)jj?$T*2%4m+q?0;Wn0-Ah2Eg(XH=E$~@-H zMOJPl5-Or>F2zMpujyJTOnOX_hUh%8~ z<^2~g%Dr@o<6rcP*XW~Ytlrb==H0p%MV;3s9#nk6a_*b@!NU*jc`_{4m%mlHkj+wY z>G+y?*SvPDP}AEebbr^ZgGVzzEA4rdX(82jb9+;Br1g^f*Y{6Sa_ZHx-KwUxB4gE} z3Kav#vd#AW?uPHQKW#O7*lMM`p{lq#E2>j}@8f2r%%oY~Ml!7~2FJuVFieQ)c$*gf zwD^-XPg&?oOeUi$n>SwC;l^-&1J8Ye|CAnd*wg3N@SnZ z&-QEH)Bid10@ww7pX|>rcf9BRbIS|z)Lwm)lx_T#DKO~442;v=j{~W>U=bhUA=WzaZQx@-|SPD|JjE>|9x!Fe}>s-^{tL~oVXZu?Zy;V z)g_BVtK>yKt~Z{Z_u}lwj`v@d{b%^_!8SQ>|JmKXkF)dyC3f4N+*lR&>#O1Pr{;g2 ze#tid$E{PaaP7K~Yg`&k={z2etH0`=xx2^4bnb?}#=C14xj1G#X zk@qBx<#@YQ;=}s2EJ4Sh1{x`vu24HOr@__r>{RA;SD*at*;z9qF-mC7?whxEYK(t9ndJ65**dKBY9J=S;^uwsO6Ys1065-!l`X z!ZN-ro4Io85|1_Ri*2qH;KkpZd1w5J*>(TzJBb^wMXnn}Xk5H_u}IsF zYr7n)*96}B?eZ+PZHW_CcL!{|_(SVWjB#=h*OFX`ix$6Jq+jQnPxt6ao@Y|dyGn7A zm$r8suao7f?hi3fvnqwQ=&UT+r0jO(;!2LDm_sfd=NZFWBR8l23MkEAWPj#5e{k@G z`!4k}*U2rL)AmdG&)I^nCQr;S%0J6)U%6ayU&nt2;}~0COWrT;KW9CBm3acH$v!Hl~;=KrQru+H;8w>c~cz+XhGlPyCXNbB=G#xy~cg)%~dA zTacd7Pp$7(J2wluPc>Cq^kdtkJ6~gjlZz8VvR0{2=X(67eE0IZ_5Q&-ub%zssuXgy zYxQHc)5RAH;#;Q+?Od^HUX13S;`&|xCe6Ljr`>zcaB=U$Y$X$a&S33ZAE$JzSQ#I- zqayOu!$tPW=9m4GtY)VQht3k=Vs%&$%Ejt%)Z$WOSK(5Pq&b;h63eB6+BA<%S=d#$ zlv(7l7n|m>DLlcw8rZ~n=XtR*H99N^0Lcaz`k5?9nv)4L4NWsl8rg#7z8awmy+jr^ zeGKX^S}$~E;na$0Q;gONU1|$`6cuo4kGGd(cxR@w)<@ka7y~Y%ks7DElxOvkEsIYD zevZ}rneuO@?dsRdjP#_GKN;7Wd{bVNXZ8HP?uV2To;$!ymmzQ&|3!A znkh*;lB(Sidp_HE zD@XU?gC45<+3$kotUR=J*KoJBWr}n*^~SDtU*5XaIOo^|mvd!}Ol42I7yIpetWe1G z!b3b;#m@Ta&b2`zJ_i!y()IGMxh#>^bA1=ccV6$oi3@!m8~p7Hm0q3ucszN|w`-(Qwq28a!X(^Q z*!ZI1g9Yd0CPk&rD>#y-@b*XouSSb7!_unciQV(f&Y5N@{adxGdFN-vjX&iTl$F+n zWOp2i`5mmswa1R@LfT>07hQ)8I-V)tS{o7*v4_vcBCz6Rqj+t*T*_@7Pi3d$rU#`0 z^_eFJxE`$1wv>AKpP^NVxyUlny$|Cn}z27^Q|ki%q_FH;!|wsDUFOCQ`=743)Ax_t!y;jM@n#Knt;0J~J1Xh^PJ+XS|Ni#Y~r}!b|* zJ2-jPlTSgMb056OKWq3)eA@)`=7sxBj=zYz<#3O$?ayWTh1HqN6;{%ped=1@F5!hM zbBX_w@0csdX_mTABqPzaq?0W);n#5{@*1N{r^5g!t4&DvK87xKu4t&BxYxqE4arP z-0=-wq*)lVa(e#M+nVePE_2(oH#Y2HXqohVlf|u)bMBk<(l+jRv?E*kvWLp|kaeMd zwZnLLwZazcGyTuN_%HNPREo=seRrj{uKKVhFlqlUp>?e4UUiZ7%lxx`y=*MFC_i!b z%jFwolMCf5>n25)v|fH=w)~DzM)IZy>mzQ>QQ9+WZ&+nuT>q)?w4#~ zc+N|n!MGtoY2w>6*DWlpjrVa+)i62uu5gL^R^LonrdzMCEc2Ml%d%?XCEEj=nJy^I zTjLsA$L|`hR4LZH?c<$;pWAcWI2(JJL;_q7_9)A#@%ANt<&mDHp8YwkY^Q81!`!oJ z6E5*>(tTWWVt3ENl=211y$?8Im6VbnoXC5A#=O#4m!);P!|yvURw+4GbyTJ-Ui_$4 zy;jneXGPaM)83>ldGSsE8Mt39*mBA>VwuaWRpyJ7s<;DO4!_G5s__t)ysRgn;m@UL5S~^#mmx*J%#2Q1?uN{_ns9g&*YTcwW%{o zP1!}~o@UXpq_i{dbu}J#-}&@+{X{XB1?97KtZU33ttyL7^r-2HS#fO9lzH5CYgcb? zno_GDan35>nsMJ0)1Jpmd6O+(I!Bzd3Y4vxyK{j>Z@*H|s;7?bQWItemOVV`rE!>b zjxOkd2XELP?8aTVJ-jXO8@uji9cX9|7cmGME9?ac0FmdZAp(`+SOr7+1Y(oBijox0bfg(bFGfuA6Pqe*ezD z$l}3J7Lci0k4Ctrv}C!n(-mPN7%tf-L8s@vI~7zXNsC6tkUY&T@X4eAYD`5l;7Y$O%H#43y54Z zjdklOtt*Q+ z>^;wvF3MY=d~9Vw#92or4et_*r&CtEDO;_|A7Q8Rq3lwh=iU=0bv|3GyIYE!bDT|G z4#^)qUXr%Qy)K=%Xus%X?krj*?IJ+IqCLUa43jnk)WS23EVrPUs%l+CP?TR-D# z@vP%X^TfFOIK5ckrDg@kPBA*e5UbRu-MX_aQpiEcj;a$fHFSTu)Q?hVPx~xXFCJmhYRL?90?#G9_O0KZEc5)|9YyReHsnUT9pJQjm8>zh>|Ji`2WM|K7oGSM>Qj&BYUWj`ukn(7Cl$Vw1*9 z!F}OrM=LbhL)NlQ6)C$pty1gt)}FlF-LcJV>kaRH-!YH-2V449;U7U9KklBqf6pUq zXL)GEqcD#dV#kvfsx5J8`)>NaOhYxfPGA4mB~I=8#S`x4pWD5!kj+JDo^`2*6VDA( zwvKS?M{eJgCqxGSxWwao=V@DXTlK_EaXg3bMl~d5dvNm4;Ej6r(c`e_sr}qWIX4e` zSa&W=sNGkhIxR>2(Dp-xM$2?lw~9)9`E`GGZs6Inccu9=io_(ZadRBWUX=Cq^n7cLt5CwgRN{0<;GpyCfX6}i~eVE5B_XDxwU>RbL8*(YfE|4 z-~MNa3bN(ybpH0g8ORzofBVk>F|%>a z-~F#0KqfB8w$I0_bY3&a5%bzCFZWty*h2e^EGcW{HhEhw@erD@1w~vn+5pl@MIa zWmC4`fSNMPm0KN0Zgg&2ukrKTls}v5edb;LdYK8{6F&A>dbjel?~;>F6&{x1R9AK= zZw!5`FzfExu%BP&{A1JEc2l71(xgDM2UmJat?&0=Yb^*~nEm+2pR;DCmzCzq_;T7d zn4h@xF1=H;$R%0z)b$xRug;p-doEA^+)+Q>8IRj;{aQUYUGDb6A8si>%ej4Cdbo4l zwR-aLWEi{5xf7Rd4G!+yrq3EEZdYG?VIP;%F1bgRyBD5FxO!ybOUP&SRdc%$}&>EAcHOQ!CZ-YCp*@=)r>`OM!|81t@o;5o65 z_d|cq)38HfcRf~=W<7W!-}7NZoEFEI^5R8)cMRVPsmyhjICM2uZjHjzxfgFOF5AwY zT3w@Kak;N~Ywq3i0o;oDN3JM-H`~5%$;tIkK3=QQU)2;}VdfY2@Y_rKdCf|<4>C4& z@w_rz^ux7iLU-4?>$a!XMP+Htsy3ORlQu`NXL%PVD>Ki`<8ym_cFyiDt6vqI7~5Sm zZ~6&?9*<3nPfYPx=DO+hc3UIY328f0r?_wYCz4~3rFV2)>C!2G-*dK!yGgCI2$eV^ zEP86jn@_u@RJh-kn6aeH(zL@gtk>XZIG>E!!>_>$&S&}DY!NxNs{7H!IyQ+_Z*Cs; zYdfa8@yUsctnppTq_#XvKXkC*cB|v|BIjq1Um0&|+^P7v@T=s_5OWo~JiEo#8q$;G z&E*5}D`cItwa`{Hz<_))%xYaXVG|n9s z-F~v*>dCo+hi%F?hOR!mb?f;;)|!jwUY2|3tl&)E;_j@pU`gAPZvy(RXN-*h%;%2j z*bzQ^ed9Lcs*;xp7j@Zox?Iq9o%Je>?Psp?(>|ZlV3wjON0ehazQ}EyAp>9j@Q+OpaU(cDw2KIe5#V%J!29O%|{ zq*`WXnckJ#n={G|y^Fdr%`)s+O!3K?8bwb$3k2ChC8Bf#TaIr$FQ&2H?X@s_eZaHc zJ4FUL4V%7S=;mROncJ9Unaan#ApN+}gQIEgDUb6H-QHk*{LXFhm|m?XkG*!=Nu~)l zI`&6$g}rc1_-wCbX^_YD^znk1yUWcs-Z{O*$ggwv`a=cf!EOB|h5MwHv5u-k!>Q~o?|h|vFK*Ag z?5_17XkngyjoWIu#no}P=ge(S$QY?vew`mCB5VJ!CG2)mbgSv14h^#tMz=1S3!7b3 zE@6FhyW#4&O5-6aKh?FOe==9Bd8xZk_XKaF;i?yx+6pCCtU4NI+tJ-TYsItw3?j=; zb+UEeK5S-l-D8KRP57RP-$Q-|NgUskCp>q;lH$S>?&|E*c5azr)_21C&L=mcy(c=l z+Yg-He(=#suJ6^CK4}N2yQN>-Xz)Y-xS8hWkE>6G>0g}57rv_D$7H+OIT}93>g;bW zPueWk?Oh zK)IX^Yc8MA`YS*0U%c@xri~kRUMp^V%D&ar-haK&+n1uvhv-=f6nZS;wp)Iz5S&G-+cjY!9z_a+;@m%>z1c2lvH`hSiE!f`rA`- z^KAH|_*U9p-O^`!d+)pLu2n~Zxe~Yb3VAB@1z28;aN4p@J9tfX)TK8uqR}5#SbkZ( ztM-%XJc$^K1JjGPWv49YTwO8WBJa+-HYWjBv*k&X!^8{f*0NvK%`1L8QSNKF?E|Tu zrw^@K;}e=;^+JS;m8sE@v;4=mU)nz|2QnA`_%Z+8KThAN%XTKN*_D2GdM!(L(Vl&$ zG|u&G>*!TrzOSkrc*Mu=_>O(XN1w`Z&HpuN*JGa4sPfX;|DI$osk;0JF7-_ihS5grU{y;DB$<% zdwSb?+4r5<<}IS>aooIQ${I$gF8==vd5pIe&kuIjs)#TRd1uT1JGm-VJzsW7n)Ff|8tEK*kHoC;GzxRs%x8044veq8A=HSmrVzyY!|F(*)@edYh|hQRx#%jH@Iv#dM5;KR@=!WWNv01sLA%)Y|2Z< zcjD_`Uvj`azO%c{f;eBH2Prg!*{8YnCGd*!~pHlyY-mVvVLL`Ci| z_wN4Lm%fEHIk9+!O{j}cSaTQaEuQBmQj!+m7wHlH6rcCANjKKKXV6P6 z77G$Ql*F*yr{VM(<*z0McIv8I$;tW$88H;K4v^Udb{Akx{E!#F8ir1vv3qj-da(!FRH-k{*`|z z_Uqf`@I)^cHas)Ib>_X0A4-HE{8a>ly=7yW$jr0C9EH8HavTF|ek4E!Z z-Ak`Lus_1N=Sr;Ja>joOzRwoDEVbbO$dqp??!EFreTQ)6ie0gO%zqqapLMRR@wIFxjrnmh}zouCd*fA+mh?&bKF(7cQOPmxGX9x8gp&; zv4ov5PY-vCuKi?Y@2{wM%eE-C08!6mOk6g6`T&^l9C0q@hD0oIoOG{64b7SU-8@xuH zQWgg|)^V_0NoYH0*qa?_kR5eJjblbZ@Wjpai{lvfr}KCFSNa)+MgNvp@DH2!X->+r zf5%S!tFvs_Z{{o5H2cb@F}X`1<7^VIUSpPu-&XgU{5Tw11a zowv~car0|~lBY9I@n2p4d_gLO^nv3liL1}7cygn2>W(_SD8BIfOxLuhJFj_dNccQH}-Gg6n52HQH(+9FeXk7sX`1FmpCb>Xm&VMUBhCo}XBfwAm~sx=-RmvZK?x>IJ`I^LNYT{wvB-lsK@h&B%mP zMQinxPZCG#I9BZA*j(_#dpnE6mQ2<~|Eiy^d!4T1Hc6#&qSws~SD(r9vbT;Y{1e(- zTq7ECTux-cV&NSV8y=fU9#rtjDd~Fo-qM)QZlRE2)72}lrf&REw4VRqg4h2UxZgi! z>3A@mM``CQ>E{X;dOdQQ3u+$rajA1vJk3fw-6nA%tpCn)uh{$@t4*qe=LM*4GGX7s zVYI68@cWsw=SE!GdSZt4q4Jh3VglvTQzoQtyzIc;vQp|;Oq1zdMdq(Jj~#k+{XfI` z$A_Bgcg~&nJfHQ!=eL1t_I{jqx#_;B#4&@ME{3!)-k2-l7Fv5u#IwM&&(J1b)+>d) zdU@f$_YZ1YYx^eiYAoq3?yQ`ur4Xr7E*tFOF3R*{*R+%mfl+^x%buT_k$b#v-x|ZI zp}%C8_;V=*o}%}E*{xmp=*6;$p8I$%cl0#`@m_b^=H_@J;e=^g;Kp7hE#7tRX-dzE z-W(Kb&e0X$yXkqJ$+14ar!(4Qj!yX+@sZ7_cVm>QKflb|vMe5bDb=MyX?}C1O46n! zF69onQsHr;h1*Tk)3<83QC{M1y%?$IdxM&NpB*mM{m)QzfOC(K=Ha5Cxy>?e?x!sL zLVdb+J^S!1^uxxGhYRlf72W5z(`&A&gvw;qzMPb4?ynxNI#I~pE!cZ|j*U!wDBFaL zv`GRt*9FTfdi_{!d0LxsPL73~l!yGO}kmEOMYnyWl^A*YnyfE4?o4 z)qB6D(t4Kf31_FQApcH}_TpR5BqhXnd9EoJoZ2UTJ!;W@=AC`>jDqG|=(?KCXW{iY zJz|q8Ysbsxt30^}mk8;tZ-0H$tMB4>vr8d%?|5fS`l!j^*LkdC=~fI-b@n>Bi|_l^c*B%b zDdnlBzU|X*>ijj^!fY?^bX)OD-G9%CoDf{Mu$P~0N4{Y0tIOGfzuu_27kA8*o__Sf z{#ZSZOMK6w;xs(&`YfGtI)P!;(g|N`wiwS>m#K7Ew{rd8kf<2J$JVnm>%1r5=gPQM zU=VhKVZwigPj4bsE1Bo?R$M>2ckP+Ax9&u5ZdFJ== z@1z9T9pz#W`omf>uMtyzXf2sF9lc71?E*f6a=MihTq?c^N=`i&)BPl#y=`aB?dP$2tX?1M z=O=B5S!a+Uv94WYQ-HB}iSix6)t_FA7H<{TyY;aqe(UYrowxaR*HrlU?u%WzbP|sc z-+i^uB9pEa-&~*Yl~?#HbJB{7N7QzP8pbyr*OQ6+&+zi3q_#&%r%CU(fHM*&)_3OJ zO<}UgnKY5p;?mZPwLhMO@vaGf&^6<#Z1I+BzO(*jUi=xDcE?w>^=>$WgWcMgW2R>d zzGi%@+u#1M!bJMbt)l6&x;r9v-!-d6{%^%s4h|2iN#0~DH# z4zNxxY6)1Jx$pJTD%-5xYd59tQBr%^ra1AYuz~8<)4K$X{)pM+rGNB#b=sxwg%tn2 zzqjp-oP>DVs;^mhiDbLI)XCf0b9#+Ri1XI@+)7IYyE2b;ZBllxfjgOk)pu$ySv*em_&h;sZ?a2o zb&Za}ttry)&39~jy=8;yG{d!JF9hF-d)~ZpiARW2aYm2S)@vyqebs+VVk`v1Q`v>9 z7k; zj_oYF;Bo6+lxE4K8yAikNryeQ+&wpX>SC?dfSI#q%C5;;7M^=!i_qU!+ln2kwv`1~ zU(I>e@HOYng7Q^2&oaKcdDG#2=;m3>S2u5Jytg{tgne~-D)Zj3a~b?$=T5O#t(|j0 zZtdJDd|#t27uZHyYnV3isA%45Ofr?5p`@f#!}4f_mAQzY=Ux%sqr#K&T?6g}TB>~s zKo(*yba^uSq5~Zy98X%i=LCPsyCL}G)yJ!^-L60E=acx)z{QvQZbn>rJb@+83?zWCUJ@CJa>OtD z_WtQ-+XdRv+;h`9e0AD$r>AP@vD+kSZC6}0(Or?Vzp1gfM(6awi2D}D_8sLkVRm|c z+$3_AV?D>Yqk_r4J8hy4PBdD_@#VwB3bXLDA2L6@eINEY-f42y#m|TOljh3VoVc~+ ziqoWPvke|U&C6*yZsv1x`|I^v+nJ(FjP55}2?TZ~?U>_QajMrQ+{&p(AzQL}=EQI% zL*Z1GBh{{}w3Ur)99SpZTHAJwx7T6oZJCP?=5gsy=i)unE7`7i!_4HF+d{97j_1mT zC;H+<4;wvn+y^bfIK1~C-+nRv*t$h*&p&>&zxzjM^QJA=%_fJhmE3r*d;MIVbyi1A zOtgd9x3-1Eye;Pv@akSw&uwhYC%SIUj&)Uxi_O`m@=66OOH{_PXs_yP@%Y`lEL-}3 z+wqUNhtuS|l(mmFzPNkmQ?H89EzeESO3^J}r6xuwb}p`yQT9D|T)C#tr)IUI{F1-t z67M>s-9E2%T`i$p=BBUvgl<-c28D>3x2~LNPI|OrceJCiz3bb_>s}Vwz5DRE&18jd zUBo6<*&_n-lIk1Nb$oQ!t3I&N9D;-t5`QVte)XV$~MjtG^e0&5&OG-SyQ4^YC}wR~O{1zbn4l;comc z{jg?-l!Q#~RchClzxsD5MEW~IJ_JK;BWXrctXy=$I&H;*!;(hgtPg*DzqY}yc&WY4 z{LAWFYfBCw4NjvBTU`;5N+>_JtuI>nNtLyT!{kC-d zTs9@sXZN(8*tZY1WNPvou{3b5+Y%Ef`h7e<%QMG1G0{)>RD;5_uqQD;EXB=y&%6n4+wcCXsH>xT#>?fENu8fVx2Jpc?_RoQ zll-4Og^dww6DK|nH+XPv9^ci652JV|e_`Ln_~cx{@)L~mA`4mq?#LWaHrHyE+Ihs& z@}%>C8FLce6Y$o*J5AenA6VNx{aoP&@0-b{1xa zO}U@+a!yLS)U)5NYcDFFD+%LGn)ux{OwgyVO7s;=fJM}{H{teXc7AIXzp;v58mRDY zb?+6U6L)2s-g+-uT^utbxhwk4YDJ@Wt_9okY&aiQ?BcVWd*Msp@5RDyj}LG2xbwtg zR*NF1P2-e+9UD3hZ#7N6V*1YQ`BB-nl!ps`#dY6VH<`VV_bA(@wVz`JFEN?7q`63Q zv}D|Sw7Sk*|8N`^=PhtABLLzLhXqStzSKV@*o*y)nkUMB z4Q49bcsOHa_hXg+40k=gy;1q?xPd9*SLjruT2n z7D>;`D=(C^JEd0}Px5AoN++f= ze2TNyc+}$?biB`0vwzMpsW(Ym&t=~_>c{qc!Rxr!W}-}&ksEi)KID`!F8a@Kx9oUM+o~JSBH#7u9_n-DQdT{DZR17%3H{aKQS8RX zQO_y^Z{#j`^`AlLVVBPWpJs!!wzD-SUR+rH$R&XxS>~Lxwp{aF-5a9SKW1$ain3g` zL4Q)1MUq$7SLyTeB?<)=Y@ys;X9KyL(*4+S z&($?1sF`E>jbc?klgP)0+_I^iZl+-t9KLZWb(VEvr#N+E&PC2!|9geh&N-WHsis6ul08wuAX^1^VNTbU5zm3F^3yZOJDu(72CRWo%7*;ukhk9;DX?( z>+;NMmY3zle{+7lkWaQj6uX341~^9YX>1Y<7rkp_7{~t;l%t=+`Y=e#7E${!MQb>6 zwVH00HEqq~-)iC2B6}d?_=>4!$x}L>t<%_%*y{WBSm`&7%sbyo|J~P;E_s#Gv0QlZ zNh#-+t0%&=L(MwZ`LmYk*4T@;KEB;koo#vQt+{iK@Z#HtZSu{l8#Xq4v22{-;%3sU z#QNCDVAir{$s4mihA-@YIn8*ByUTXrXf16Ld|KO)Y$0xGf7dz587aqN` zL%JZbcS^tejt)9nP#bJ{Oqn*P!X)KJ~ms z;IGAcMZ0;E!+8pPr^x+hX#b_QLwn)g_eV`zYC824XZ0j}O|R})XEAkAl0{0m>5W|1 z1rxTvcsuJ}qLfUEAQQX0@WhxMtWU1(+$Xf2``ZQ23r?~BZ1;8jGl7pr2d8GP3*56? zf0w$^(~4^y%>DTjOj55oJoCt0#vJl+pQWN<57X*dZ`Nu}Hx6#v_3*sb2kY6f?^fpR zj=f{-ugwAOoF1_{R%<>jR3uRoAm z)Dfp`xcN;|Zg_=VC{M}qol77281|hvkJa`1={DQsgk|(jwuA1I+Ear6c(YGexM3RG zJy%r2lKoC!#4+E1w+E+7nY2Z#^&5$*&I--`=;yu8@evljvEq`9gQIM1C%D zINYt+Iw4(6M=Igj)^j)BUoXyXpSZ4g`NB_k_1;ZfIJqS6)qyz0X;lX%+{n77wv%UZ znQ!!`#S?G-Fo=`-P!nr&re@xM2ENP$h_a#=y`%uO#N-(R;h*Z3T-d#&@MT(Us*M4#ZT7jN=Py*ZoJyH8AGc7|n1y8D)C zHy3S8zVUG0&7u!VG0{po5;HG(%(A_7_ejSjD@o~@GVia3=M+73+^So9`F!OhPUGh) zOm_sARRlPk=2Tg?^r79(-{nRXcN)`M9ZyNy%{$s(VZHmsbjwK&Ar5=8ECmmk9nThh zs~o~!w{Yi~-ZI{UMZ2>z?A9{J?^yh>t&y`n9p|SsdZ(J@ttE#KMCG zRi^ji*R6L>y4y5!W2K;5fAQoz&DA09btW&w-iST!zC z`-$kq&mA3xrZL|Z-0OGO+_%dEkFMGE`Ph{#l*Qw&LymUv&|*)I`<5*5Q}~# zcVCB#T}}dB{ccaMZ!~ZTJzB9bIT7r|pQ;rO$R=FOZ zn}r8Og%8DcZck;muwHaiUag>u^I$|92TNbOrboG)vC3jL6}j5%2-h<@#*0j2R!+}l zbAC5{;S#Hk;(1?OlQbvU^t$&XbN1~HUw!J@oXWei+0wGCS)=&4_m^^)F85NonZ~SA z;hd;)%4yNWH5D3XM4`<_+75Q zYfimqee*Y8m%Zomw|&>Eck(fQHCuVO%}gS-%hk!fCpPm&nc+j}Sj}R~s2zsJ0hz6L z{Z38`Ubp6sZkNW>NTzGvUA|X#@HSZ->n#*dZ~U-t6{mH2iLA)ZQz99`a-l|B7nv=1 zDeK{uEv0+mnL_E#`e3vCRZS<6#`d(!e-x%|2zbUhN!cUuNWw(Jv(ZRvw61AJ;T#{TFU9lSG&Gx%d9>3JU7fTXy>)buNQre^UXRQ8lKqS<0Gzq@aWDB z%T+6OX_`hn(Fi&W4a$BC&o~0Fkg{C|Si8#I8EcKe2_WXxQJGVV$JQ>OEvW_RTc*b|p(AYIjN_tmZLViU2TWhJE^s6!RUnU8AeH%@O{u{*<1zUZu&gshCGLSi+?(Jb+=9yfZ* zBo_U-r~mr6iuVsyYE^r zwW~vV{_!LK8OlF+oqKgT=40EYhr7=1GWJ>L(~{l1?yc?ay#}AX?&x)_O?z|3{)dmz zYa7)M6YoX6Y%^N>e!cHgxtm2hC8vFA{3L2_;~5m-u9F%bedaiaW_R4RtukHjABXtO z-z7GEak5KE?D?Yq3}&xSmn)v!q5ST^2KJi|>{Wtx%q)z#5#VaRD{uM&rUV&du9xoJ zdHp*)Om-=pSMc~!moM~Q=*sEij!75Rs$8DE_LfTJyRO$|>ms{N44?dX8+0t=Siixe zt*d7|InJhk@SllvUhK!sFZm|NDN99liCC9RYYUm_(zdp+@8=ng6TZ%I4>{N7h5g`e zJG(=}McUuw?)2hg-0o@>N0^Uae0H?1yf2y~#mUoMOS$3B+Blw5bEGqL=bqOW|GjpZ zW4<1v$Kj`pkGH(ZzBzGSOzENit?NSbo9>t)rbq%bw4zG2o=NM>*ml6j%Nj5G1+t?mySe!Z|; z4B8tF9{)mPaLw3fp!27x4Se~YxD7oyZ6j4JtkA#u)w1x$#qJz+Lq+vww)0^GArKk z1ZIE!Cx7xu_MX4i=@JoJrkYF(>${m2b)x9>Z1KIH1@fx}g`TLXy*W^k;4roK)IYYx zbGH7fv3MG<`gm7MnCldS72bB9(h9CQi#uDI4!8?Q9ODX}WvTDHH}-+@#1(Io3vbCr z32S?{=kAOaF0)bUET~dkB&4Zy`mX*J7L{VQP27gZvyj(LPVE1vRt>Y4CWi^H?jBrbS2dw=;-IIC3dg`&I!f47?5qpFza25V~! zR?q5kbk=5hT4j1;uns>8BTI*QmeVDMq;&*$P(Zj+Bp1hO~v##<96`uXK zQ^R8IE$6#lE>1Gb$_x`@)E2uktlq^hs;seaf4r3T9#cg@)10F$bB!ns(e*>C8dV zw<+lpl8zdy?N}q-rW0uRvCr$(X&+mijc2MQV>b(Fsj^Q#xHzooz=Sk+ zK^Mp92U90D&$HWqP~z5;JSC|w0lr&X;y5E7A8ax{y}hg1@vvA-sz@jEM2UNRYu^eV z`_FLmU|?W|LEDX%aPPj7OclfR+FN}jV~+SUdh}(-ZxsK!L&IvuCBd09wT;6Y10`1e z2uNQ!@to|{{8Z*(#_h8TuD*``<|Z=QWurw)IH^rW7;&~p~rMjM+cs4uu z;coLLpJvk(&?^8ZOFoe#d%9tu9kXQciucpBgekz^rwUGGx7vog&eQt%v8Fj(jZjX6@`ZxEQ*wEJi~&_H3?kZkeXe zTn4d4Uh|a#-d_B);E<74YL@9dt{RyFFYdCkkIQ|Ttt&1sYn;0$^RmOadnPXzq~}YO zTrl3=Yn35+``BC)p0|(vX0d@3vZi~P3@JAiD3tN0(D z_|LFw;@kUC2e59tLSN{HIuFt$^#0@9FX11TEt-0lE9ZojtyYTBic~h8c$pYn~Tlc6YIZX-)%Ts$T82B*jM?|=3gl~be zT3(4u>|z(6aI4pb$N3+&rZ0%zARPIztNEy*%Z(j+aduXrDccRU%ly1O-Ad0U*(c_1 z*FLWR?@2ozb4UFNjcaiYIcnfiR9W=FYD%h9#gpV!=QkQFt!G-!b}Dd*c}iGPKI@M~ zSrg^@UF+p?gim_$@7gPoZjiM`AYkR}w5y>$GV@=0ndzR^-0F4xc}z#IkKxh4*saB> zf1?7tSIAD+D|Jutx#Q(>bYD!S+l|eVDwRi8w^`(d{Ac*Ex>e);%!+GMjP<21wWU6e z3OKVT+e>nKZ>F=+$F&-1ai&XoP9NK{kWNaru1S>@TmQrUJNMhUu^Xp_$imNEVLj|p z=a#>0-jUL|EiL+&tII$AoOeOAxAoit_=Fai!J>Nq@$DDuAN#tN{gg7jSTx6Jav~m-5TTG`dT3oC%D2vo0%X#@2#$S{toh zm)VA%64TnPr#(Nv@k5n%48OR`(^c9bniEfVZI9e6Q~1N;;bD)a7ju>;&)|s(Jr@)I zv?}4{DEr>>`m z4+UwhZ$8*Owb08UR%F_aXUyV8sbwn1MIOb3=PKm;McK-)OxkO3@RUz@l9oExM_q+$ zyQK9kuC8%2s0@|5u6AcWyOiUeDr1|7C&I!;kDi|ITJ<+;OSA3!yOn08lO~w&FMV?J znwP`9zt<o3ex#yEL0-(vF=mSF)0>9;{LMw9KSg7pksu@9X($=XM40 zmy={30qbZY?fC5byFIh5PWmK9t$keac*XsVXAN(?f7Di5c1*J7KLdQE3g?=x6{sy~ z98=0`zbh(nrQW6?bvg>zl8HzQ&URk$E6FD_DLORaLH-h@Zz&a z^&Ocr+H7Y^y;q+uY~D1HX%CL?ZoC|%&{zJh_S~14Lw(oxo;kPn_`wD1eJ|PCMqUatc$Swg z(W$sHzfR!6yNMf&l2*6Rcvjo6zgW+-aq}!w}v%2dZkcppymCb9+M)rp75#5G1oP(XZp@4pZ95B z&a`vxJXxz{f3+yio|6 zW-~5c@?3Yu(Sl`)jf}b`gIc!S$E|C_ZKbXpKX|NJV|sMVmA;L7XUyKnZPPM+5UOyw z^^DJsofa>YPA-?yGZx_AEy$(4Am@qP(o?&4xrIo4aI6u%rr!R+Zg01v?tSaH)v@;r zvr2Ezk6g8Y<4u~u8Yy20*wqVbLxy*mI@H$o=v||66 zA=UJ`sf7R21yk1NEHC7rF393O$9cj2w8ItgIl>F-r!}t7w@`QZ&!Ec;)z7QQX?pzQ zlN(QNH~cyBcNXt067^GRKehF1EBeSPiWVO7>0SNw9$p)|IW-Dok{|Rrhq`iO4nY*Q6cXG54t+lW$F#%4RQtNBix<%#Xi1 z*do_Fh9 z@>$Qvsb{A1UX#pqtJwJNq3_A5p~aTFmYc5olwNjrwWD;}yJDl;W$zc=UHhqj?v5^J zzQl=UuT?CUO!%|B?2Kt;#JpU#m9ZxtN`x)g^jajjQA|U{Jm8Lskd@>*?a6i$d-D^9ae|`O&UXiI9kaAB@RMX3a|O%bjtdMA%DRDfYd7O~ozS zM3ssDeH%|yw%+MEm}PPxDO{QP774#ph?>rz8* zOp&%fn$faDcbDvSGxlt}DBvG@xOHYQ*Q?VVRpN_#G9zy5ibBXJ-Z{RcaWQbw%7YoOCz6XOqOI{brg?JKh&^Jm1bEv+9%OJ#nUWr}&j#^mggY zxRiX0>F^OB<=s~6Vppv^+-H#%BU)iIMLIR(?y}g^`;2mvbk1}gpXjl}w(DrpLdg&E z4|el&il?&en5CZFb!>}RfttHv;Hfv~kEG_bC4EnNdMa@1$*!M54YK?fA8;~BtAuq5 zM)mj@94ysZdGJ5Ohr?IAcoJWf^>`bK;r>DU*^ri<6$Xx^LGmJg!`zeObFKcfq&& zi^8l+k8bBMYhX$^xqnWOb*FORj>kh)oO*Xrd>hij*wy}a&sifvoGx!h=)a>D@98<$I z?x>%SLr&EE4sAV2HTgryfeo~zyOzSF1vZ%&44iM;c>g7wAgJ_!^u{hV&bXD!f? z$)s{!r~G8`oV6hWH)hRQxpCcs)iF9%zGYiqtX(?oCBNx3gN1RkZPGpZji#w-Jx{uO z$^O%l(2A?U&F2A|!QqTKZ;Xxg zrzf#rL>XdWYpAK|_XU*#U%0?6XOPd)8Cpp{PTGGDvfceULf!&?qE7_lxGSUtt(`TDM~SV6Jxf>Y^JdE?QMnj>$Xn3xifs4xmQ_0_0I6=`d($Byr=f; ztP0-L2;l~pYkhk9((e@8)3}(unl~NptUf(`skMgm)XJhS%Tt+)*6YPhd9xrd^y%qK zbElA_^{7(9suf8|Z&z=%)-a;F=@dAO7_E+xTnU?mWeO%MXMOln{W?P4l7c9*RH)f3 z{%_`fw#!Oqu_Xnh{DBtB8dT}z%s*H!mEbBBb!eiTmw--nX|LOK8F4E$i_}Mlwocq$ zd;IglFVjC=Y25et=Y?P1KQo!3BA3{H_dj=jssD5d?|1og?U&+Ddq}^tpUb~w|Fj9_ zcj~R=J?nK9@^}0zv77WS%He+DpBJ^Nf3{#4a|Nawu4H5jY;{}FcTQEUOgPGEZ|ICC zN1qf=6_(Q}SY=nal<-=9wDP27_n)eI)<2nzB45H|7MhCll&HCr#bej zkkvakmpRiur+wUKtT|`C=xmXwz-{qm)h@xFUEZmu%c3Vec)g?~V#m?cl}$SB+FNgW zK6+w$_Uh`5|4cRRtM6uQvx!`WiQs^fZPe(v&~g}!Ow%btIj)3I~*uM<-i z&yl^oC1Rd^piSAD$3n59i?6Qa&U-&wdXQp@0!RU8|ja%u`F}sY3t3v8@ zf)*Es96WtsM^Nwgyf@pTb1#+d%>B;Ew(Z?_ufV*NEWYa^#wvoQZAm)?f}*Edga(#{ zF6OkoZBoJ?@tW(&%U6j825p9WT4Xw+_o!xVeRW2L|LSo&Yf()%;p#0>EjK;1a}Q*R zO0Z-)Cmi3sBzkU9A5(YaF6oY&Q%|q{5VqiE&b!^B4=)Sb)i8?7n7EpJ~U%hlDxy2J=p_=Ly8@KOs~Igzpa%0e97{slYgarTfc6GIIrMO z$$hh`1+SF}3GDZMd;j#aYKJg0aVxYj8-eNd{r(U3_Zleq_PuX!=VSdNv~?o$URj0% z8!qYO#vXj{?&QgGWlw+Asj@X3K0S4XD-ERsPd2Tp%rK679>w!u2H$4J!xJSxsw6E5 zRp3=so!C;f+jz6AY1h-38$UD5r5#HgKBak@uHc(k;HhcSwf@LT%O06I_r(8P<6QCn zVL+m~gNdH^iO;v3mT2|HgzY)3-r2w7R)?GIdY3!@bOXiN&D*8;9T!-M%P2Ffxi~>d z;f$e{?OP`%yT{U-cAn}xWZ!+TEHOkOL$2MSy`Y`%hT+j&jT7~h!)MI;@ld+O(9+|( zrNqI#QCIRLRM~{KWIL8;Jojwp-Sp;7+cU}YCpNl^#_yQ(o>Ne8UHFsmg1@CKg}*Rpcv6ZoN}oQLtcweDPckp{dcCQu~}$d5%=_ zxlf$jbm5e{O@Hz9D8sF*zp4gq{KdNPywc2E=gg}PyBGEw_;d?MPmuI7-}?3h>(w9H zTlZL8NZ->d9R9p^jcV0NmhBd+oVAy@GaVO{TT;AP+v#a~YoF%ffFxPAiwc_RT9JNgUd+xtdRn|wxOmeo7|uLbW-+a1>r+}RY$?~1 zTo|vl^F-&@3puW?KEYY~Oc#>p&Uo0Bw7N;nF64GATL@Ya2dXgnD&&RU|9bxI+=8F) z2rg)N4$^^CkAmiVUj7mPxQxYf|KmsXO#e8ePAq*dY5ip>kKOl%SuQVIrsh{G$`_SS zP2PIzfHr5_%c5oRYr}cWE||EX}^P6zesx{fT#NCDO>22B0=?9E{Tsv`Q^%Tzk z41vL^>^?Vc`D|9xo?WVO?ct2slL8JIMQwX^nA7yoRS);9uYCt+EV4cvQ+7~P>hfK~ zHFw#kYJL_BJz+BCteYZ>3Ug`Y#2MPx!ZsRwxc)Ht!G%<@n|GxYq@L)URE;2Wu4pMu&q%nr*WpgmfhBr6)~-94$ssZuAcrQ zwBWMT@w+-=HU}nageOTJESRg<&+t%n?+gn^_XV?juUuD-xwGzQMd0oXodD%bj}kQx zkC#UI+-p5vl{%hswEdxW%|pL8S@fKokzwdT(YFu1v^OYceyR37Rr)IBW0SV>0=LI4 zDm7|;+RN+@8g4pqN8{MmbN2kN({44M=ec`9<;9!j(L%4{e$4ewo0Q2I#H5kx`N79Y z+)P!dTYL6gnHjk&tkZ7(Ufhu)qdEC2my=@5OHPH~bMku@UU_CAzqYJWa(dL!5Z`q- zZt;riieLVDjq~DZt(4BmqDook6?>Qt)~;vY>2!ThuHKu&;%fTGPp#axV)KpWy1XeO z$5IdPxjl2%lpV6hoCR{sCyYIE+E;Jh(W+#6HnwAZE^FQS8otMQ#qW032Q|))(iM?TrmVEBO8~S2J*{*0cIq&4|q|Gcb_X5q^ zn%wu?3buBBU!eYOvCo7;D^0%?ndU92iJcRCG@HdAXuDmUtY=-ruTUO&aLLOh9>Gh# zIUITAdsVT8>qx-%!cK`6rFYAOAJ3nD==Q^1O)|GstE0C}W>sftnp`_m&SP2DktK5* z6-_)YrDbVvlU#KrYj?ZIZAaCGAHF=De$q()lb?e?${A6|B`#GHSMj<93um)-32V5` z-1E2FFZ5H1-nH%^&e7xr+T;3u;crNqdDs4 zhl+Mq7_CcLua+g_f4Y`X{$yVMSO3!~)^c{xgL9+0uA_Qsw@u_PPqxRAHIw8OiUimDrSc zxIZ<+{fx|21y8|+#mDE$To!bjVJm2+W%?&X>ht}bTlBZu-wiOPA0ve4`@3B3xBlPZ zj8JFW-?N>52migwObWx{eBHAP`>yMpExBoNjvH#D| z8eonocmF@b?*0E6S{?32C4V;E{-2?u{yzg(nHC(~w^ z%}j22vBBxHXw$CMCsrIe&bH`qR?_}sO{ep#)tp7NK7 z-TGYSaQSJ!SKoHH+C1%d_icx($Di(d_3eUb;m`bCd$;gH)Ht3johf#gzeIb=J_9Gm z#Ra#L6fS42pKQt=ap-9BoJXl{tJK+SEWU+8mBWq1W)@U3pz!=mDaD1XqFz6j1#D+I zDA{nw=XC!<#~TMWy7gBYJzCW04*)yPhxj`3%;YLprAF*rP18h{GtSIBGTiGc>jSd35$a!?%m8Qhau|*7q9N ztWq>N^MtKm^o{nRvzK`{`CMOdb)u(<&y=Uip)w{8mOtlrrTXqzCUGHX+QWkAEfv=? zH>JGz_GZV{qrD1~&ipP`jK1gYVmv2Y_RXZA+%wNjjThUfWM}a&b2CYH6I?9FEz{%9 zvNq<$H?0ai_uS(m3vPyl?q2bq;aBAn`ERU$w3SXSzOU%=FJAsX1LIZc423Uep0KvY zwbm5stWchjw%2)*qFU#qIZLy)9`<#fJM+cLsb-Jnn24TUHz&HJ#(*_>!s#_a^MxjS z3VE@nQbJY6vfaw!yt{48+Ps~?of-!0CEAbr?%Z6vE&60pyI55W&*wae#S<*~GR~|k zm>T!p<>2a>yW`vV4vVwf+_l-~yK~pQiOoV5@5G)dvec-iyl-*a`7UYavMY02ii0iK zAFSuzpQ#QA0XNuB=;d)ogq+}X5Aeeyqv{a+=2SgmuLwNvVxZ$wOtVc0T_d!~QG z{xht4v%=!L=i)^y=NxTCLp>D@LVad_GdC*OZyf!wQiD_HNp-|bkuJAY$MdX?C8U{3 z`R-poyHmqjS@1yZ zI&=0^&nJiNx!SMJ*g2ywkSH6Tx*i zNXn6W=}YrHXH7Ixc6fB#-PcuYjc8R?I>&gT=bB~jafR!xSt(BM?|biSy1O^Uzt)HC z@0Z;#OmAOv`M#C8?pN%=J<;3ObiU89@in`2<)E;m-pO`0md^KC{pIhM-gnHqw@H29 zg8cj5`G1x}pU~=~_M#7Cl7FA#ul`x^v#Z{xzA~gR zc4^GJKzG4ul}(|OWxCu~7%B0bt)5ymG5o>O6uslI*PF8vaYZNJI$eq7ZJ^i6oQ`o~&n-T%$ys5@KF^|~8 zdVC5#)R=EAyyw1#=p;r*R|d>{P}H@BJZS#as+lbVIzWqrPpfj1mk zR`2|naAr;T)_umO7UjFL{reYVmo)#f{Jj9UX2(U^&(B;EIHSAg!vTp@t{tar*H^MV zaXIn4QfiB+Exa;gPo3|>F2pc{Ej{_xp^AfV-LoQR+6WaChMr?j`_IsMV)Kgk)sc<+ z9~J4mvc7kT4JPCv{ZC!#+~U1&74m<~>9*?ozGYO+$PAyRrAx|xESYubY1N)Jg`5u- T2g*F!Tae$j+hA>?{QsK(UK4^@ diff --git a/example/Jamfile.v2 b/example/Jamfile.v2 index fee059b2..0dbc6436 100644 --- a/example/Jamfile.v2 +++ b/example/Jamfile.v2 @@ -11,8 +11,6 @@ import testing ; # Project project libs/test/example - : - : requirements msvc-6.5:static ; # Define aliases for the needed libs to get shorter names @@ -57,6 +55,4 @@ test-suite boost_test_examples [ run-fail logged_exp_example.cpp unit_test_framework ] [ run named_param_example.cpp ] - - [ run const_string_test.cpp ] ; diff --git a/example/cla/assign_to.cpp b/example/cla/assign_to.cpp index 78113f3d..284999c8 100644 --- a/example/cla/assign_to.cpp +++ b/example/cla/assign_to.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/basic_float.cpp b/example/cla/basic_float.cpp index a3f16e4b..4a0d96f9 100644 --- a/example/cla/basic_float.cpp +++ b/example/cla/basic_float.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/basic_int.cpp b/example/cla/basic_int.cpp index 29550d3e..f110ec16 100644 --- a/example/cla/basic_int.cpp +++ b/example/cla/basic_int.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/basic_list.cpp b/example/cla/basic_list.cpp index a64f2422..92ffa859 100644 --- a/example/cla/basic_list.cpp +++ b/example/cla/basic_list.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/basic_string.cpp b/example/cla/basic_string.cpp index 95f3716c..c1df4745 100644 --- a/example/cla/basic_string.cpp +++ b/example/cla/basic_string.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/basic_udt.cpp b/example/cla/basic_udt.cpp index e6df2d9c..fdf4c4f0 100644 --- a/example/cla/basic_udt.cpp +++ b/example/cla/basic_udt.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/char_parameter.cpp b/example/cla/char_parameter.cpp index 97f7b0c9..cdd8748b 100644 --- a/example/cla/char_parameter.cpp +++ b/example/cla/char_parameter.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/custom_handler.cpp b/example/cla/custom_handler.cpp index bb72de62..44655e0d 100644 --- a/example/cla/custom_handler.cpp +++ b/example/cla/custom_handler.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/custom_interpreter.cpp b/example/cla/custom_interpreter.cpp index 5c2ab645..998dfa34 100644 --- a/example/cla/custom_interpreter.cpp +++ b/example/cla/custom_interpreter.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/custom_parameter.cpp b/example/cla/custom_parameter.cpp index 7b0dc4c3..734bf883 100644 --- a/example/cla/custom_parameter.cpp +++ b/example/cla/custom_parameter.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/default_value.cpp b/example/cla/default_value.cpp index 44a3bbce..d4253149 100644 --- a/example/cla/default_value.cpp +++ b/example/cla/default_value.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/dual_name.cpp b/example/cla/dual_name.cpp index a7ceb5e8..06f77b6d 100644 --- a/example/cla/dual_name.cpp +++ b/example/cla/dual_name.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/global.cpp b/example/cla/global.cpp index df6bc2bd..3d67eb9f 100644 --- a/example/cla/global.cpp +++ b/example/cla/global.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/guess_name.cpp b/example/cla/guess_name.cpp index d7e36e88..8e1c880c 100644 --- a/example/cla/guess_name.cpp +++ b/example/cla/guess_name.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/help.cpp b/example/cla/help.cpp index d60b4c23..4adfc9ce 100644 --- a/example/cla/help.cpp +++ b/example/cla/help.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/ignore_mismatch.cpp b/example/cla/ignore_mismatch.cpp index 70a3b85e..30dad7b8 100644 --- a/example/cla/ignore_mismatch.cpp +++ b/example/cla/ignore_mismatch.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/input_separator.cpp b/example/cla/input_separator.cpp index c0576aeb..af638b47 100644 --- a/example/cla/input_separator.cpp +++ b/example/cla/input_separator.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/multiplicable.cpp b/example/cla/multiplicable.cpp index d31eacd7..627509db 100644 --- a/example/cla/multiplicable.cpp +++ b/example/cla/multiplicable.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/name.cpp b/example/cla/name.cpp index bdbbc2a3..4001099f 100644 --- a/example/cla/name.cpp +++ b/example/cla/name.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/optional.cpp b/example/cla/optional.cpp index be9ac797..ae4ed164 100644 --- a/example/cla/optional.cpp +++ b/example/cla/optional.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/optional_value.cpp b/example/cla/optional_value.cpp index 5d029fdd..f78d8688 100644 --- a/example/cla/optional_value.cpp +++ b/example/cla/optional_value.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/positional.cpp b/example/cla/positional.cpp index 8c8850ce..dc69eef4 100644 --- a/example/cla/positional.cpp +++ b/example/cla/positional.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/prefix.cpp b/example/cla/prefix.cpp index 0c7c9686..0ba32b0b 100644 --- a/example/cla/prefix.cpp +++ b/example/cla/prefix.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/reference.cpp b/example/cla/reference.cpp index cdc2d721..19f58d47 100644 --- a/example/cla/reference.cpp +++ b/example/cla/reference.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/remainder.cpp b/example/cla/remainder.cpp index f2d7a800..4b23b678 100644 --- a/example/cla/remainder.cpp +++ b/example/cla/remainder.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/separator.cpp b/example/cla/separator.cpp index 7c5573c8..8d03f502 100644 --- a/example/cla/separator.cpp +++ b/example/cla/separator.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/usage.cpp b/example/cla/usage.cpp index 3bec499c..d966863d 100644 --- a/example/cla/usage.cpp +++ b/example/cla/usage.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/validation/access_unknown.cpp b/example/cla/validation/access_unknown.cpp index 8b6d825a..a830c235 100644 --- a/example/cla/validation/access_unknown.cpp +++ b/example/cla/validation/access_unknown.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/validation/ambiguous_access.cpp b/example/cla/validation/ambiguous_access.cpp index 0e078dee..9bf3201b 100644 --- a/example/cla/validation/ambiguous_access.cpp +++ b/example/cla/validation/ambiguous_access.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/validation/ambiguous_input.cpp b/example/cla/validation/ambiguous_input.cpp index 10f5d720..e702ba53 100644 --- a/example/cla/validation/ambiguous_input.cpp +++ b/example/cla/validation/ambiguous_input.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/validation/definition_conflict.cpp b/example/cla/validation/definition_conflict.cpp index 178f58b6..66d0dfad 100644 --- a/example/cla/validation/definition_conflict.cpp +++ b/example/cla/validation/definition_conflict.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/validation/invalid_short_name.cpp b/example/cla/validation/invalid_short_name.cpp index e26cfbaf..25c56a08 100644 --- a/example/cla/validation/invalid_short_name.cpp +++ b/example/cla/validation/invalid_short_name.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/validation/multiple_generators.cpp b/example/cla/validation/multiple_generators.cpp index 85a2efb1..d57df067 100644 --- a/example/cla/validation/multiple_generators.cpp +++ b/example/cla/validation/multiple_generators.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/validation/multiple_value_handlers.cpp b/example/cla/validation/multiple_value_handlers.cpp index 1379df58..41d74c75 100644 --- a/example/cla/validation/multiple_value_handlers.cpp +++ b/example/cla/validation/multiple_value_handlers.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/validation/opt_with_default_value.cpp b/example/cla/validation/opt_with_default_value.cpp index 442e0bde..e331e2ad 100644 --- a/example/cla/validation/opt_with_default_value.cpp +++ b/example/cla/validation/opt_with_default_value.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/validation/optional_plus_multiplicable.cpp b/example/cla/validation/optional_plus_multiplicable.cpp index 2bef9786..b6edd658 100644 --- a/example/cla/validation/optional_plus_multiplicable.cpp +++ b/example/cla/validation/optional_plus_multiplicable.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/validation/required_missing.cpp b/example/cla/validation/required_missing.cpp index 03358d80..a31904bf 100644 --- a/example/cla/validation/required_missing.cpp +++ b/example/cla/validation/required_missing.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/validation/unexpected_input.cpp b/example/cla/validation/unexpected_input.cpp index 4cdfcd73..37e3fca7 100644 --- a/example/cla/validation/unexpected_input.cpp +++ b/example/cla/validation/unexpected_input.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/validation/unexpected_repetition.cpp b/example/cla/validation/unexpected_repetition.cpp index 7b88d426..ab0b7374 100644 --- a/example/cla/validation/unexpected_repetition.cpp +++ b/example/cla/validation/unexpected_repetition.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/cla/wide_string.cpp b/example/cla/wide_string.cpp index 9e2903dd..0fd891c6 100644 --- a/example/cla/wide_string.cpp +++ b/example/cla/wide_string.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/const_string.hpp b/example/const_string.hpp deleted file mode 100644 index 03d400bc..00000000 --- a/example/const_string.hpp +++ /dev/null @@ -1,179 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile$ -// -// Version : $Revision$ -// -// Description : simple string class definition -// *************************************************************************** - -#ifndef CONST_STRING_HPP -#define CONST_STRING_HPP - -// STL -#include -#include -#include -using std::string; - -namespace common_layer { - -// ************************************************************************** // -// ************** const_string ************** // -// ************************************************************************** // - -class const_string { -public: - // Subtypes - typedef char const* iterator; - typedef char const* const_iterator; - typedef std::reverse_iterator reverse_iterator; - typedef reverse_iterator const_reverse_iterator; - - // Constructor - const_string() - : m_begin( "" ), m_end( m_begin ) {} - - // Copy constructor is generated by compiler - - const_string( const std::string& s ) - : m_begin( s.c_str() ), - m_end( m_begin + s.length() ) {} - - const_string( char const* s ) - : m_begin( s ? s : "" ) - , m_end( s ? m_begin + std::strlen( s ) : m_begin ) - {} - - const_string( char const* s, size_t length ) - : m_begin( s ), m_end( m_begin + length ) { if( length == 0 ) erase(); } - - const_string( char const* first, char const* last ) - : m_begin( first ), m_end( last ) {} - - // data access methods - char operator[]( size_t index ) const { return m_begin[index]; } - char at( size_t index ) const { return m_begin[index]; } - - char const* data() const { return m_begin; } - - // length operators - size_t length() const { return m_end - m_begin; } - bool is_empty() const { return m_end == m_begin; } - - void erase() { m_begin = m_end = ""; } - void resize( size_t new_len ) { if( m_begin + new_len < m_end ) m_end = m_begin + new_len; } - void rshorten( size_t shift = 1 ) { m_end -= shift; if( m_end <= m_begin ) erase(); } - void lshorten( size_t shift = 1 ) { m_begin += shift; if( m_end <= m_begin ) erase(); } - - // Assignment operators - const_string& operator=( const_string const& s ); - const_string& operator=( string const& s ) { return *this = const_string( s ); } - const_string& operator=( char const* s ) { return *this = const_string( s ); } - - const_string& assign( const_string const& s ) { return *this = s; } - const_string& assign( string const& s, size_t len ) { return *this = const_string( s.data(), len ); } - const_string& assign( string const& s ) { return *this = const_string( s ); } - const_string& assign( char const* s ) { return *this = const_string( s ); } - const_string& assign( char const* s, size_t len ) { return *this = const_string( s, len ); } - const_string& assign( char const* f, char const* l ) { return *this = const_string( f, l ); } - - void swap( const_string& s ) { - // do not want to include alogrithm - char const* tmp1 = m_begin; - char const* tmp2 = m_end; - - m_begin = s.m_begin; - m_end = s.m_end; - - s.m_begin = tmp1; - s.m_end = tmp2; - } - - // Comparison operators - friend bool operator==( const_string const& s1, const_string const& s2 ) - { - return s1.length() == s2.length() && std::strncmp( s1.data(), s2.data(), s1.length() ) == 0; - } - friend bool operator==( const_string const& s1, char const* s2 ) { return s1 == const_string( s2 ); } - friend bool operator==( const_string const& s1, const string& s2 ) { return s1 == const_string( s2 ); } - - friend bool operator!=( const_string const& s1, const_string const& s2 ) { return !(s1 == s2); } - friend bool operator!=( const_string const& s1, char const* s2 ) { return !(s1 == s2); } - friend bool operator!=( const_string const& s1, const string& s2 ) { return !(s1 == s2); } - - friend bool operator==( char const* s2, const_string const& s1 ) { return s1 == s2; } - friend bool operator==( const string& s2, const_string const& s1 ) { return s1 == s2; } - - friend bool operator!=( char const* s2, const_string const& s1 ) { return !(s1 == s2); } - friend bool operator!=( const string& s2, const_string const& s1 ) { return !(s1 == s2); } - - // Iterators - iterator begin() const { return m_begin; } - iterator end() const { return m_end; } - reverse_iterator rbegin() const { return reverse_iterator( m_end ); } - reverse_iterator rend() const { return reverse_iterator( m_begin ); } - -private: - - // Data members - char const* m_begin; - char const* m_end; -}; - -//____________________________________________________________________________// - -// first character -class first_char { -public: - char operator()( const_string source, char default_char = '\0' ) const { - return source.is_empty() ? default_char : *source.data(); - } -}; - -//____________________________________________________________________________// - -// last character -class last_char { -public: - char operator()( const_string source, char default_char = '\0' ) const { - return source.is_empty() ? default_char : *source.rbegin(); - } -}; - -//____________________________________________________________________________// - -inline const_string& -const_string::operator=( const_string const& s ) { - if( &s != this ) { - m_begin = s.m_begin; - m_end = s.m_end; - } - - return *this; -} - -//____________________________________________________________________________// - -typedef const_string const literal; - -//____________________________________________________________________________// - -inline std::ostream& -operator<<( std::ostream& os, const_string const& str ) -{ - os << std::string( str.begin(), str.length() ); - - return os; -} - -//____________________________________________________________________________// - -}; // namespace common_layer - -#endif // CONST_STRING_HPP diff --git a/example/const_string_test.cpp b/example/const_string_test.cpp deleted file mode 100644 index 7decae3e..00000000 --- a/example/const_string_test.cpp +++ /dev/null @@ -1,181 +0,0 @@ -// (C) Copyright Gennadiy Rozental 2001-2005. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org/libs/test for the library home page. -// -// File : $RCSfile: const_string_test.cpp,v $ -// -// Version : $Revision$ -// -// Description : simple string class test -// *************************************************************************** - -#define BOOST_TEST_MODULE const_string test -#include - -#include "const_string.hpp" -using common_layer::const_string; - -BOOST_AUTO_TEST_CASE( constructors_test ) -{ - const_string cs0( "" ); - BOOST_CHECK_EQUAL( cs0.length(), (size_t)0 ); - BOOST_CHECK_EQUAL( cs0.begin(), "" ); - BOOST_CHECK_EQUAL( cs0.end(), "" ); - BOOST_CHECK( cs0.is_empty() ); - - const_string cs01( NULL ); - BOOST_CHECK_EQUAL( cs01.length(), (size_t)0 ); - BOOST_CHECK_EQUAL( cs01.begin(), "" ); - BOOST_CHECK_EQUAL( cs01.end(), "" ); - BOOST_CHECK( cs01.is_empty() ); - - const_string cs1( "test_string" ); - BOOST_CHECK_EQUAL( std::strcmp( cs1.data(), "test_string" ), 0 ); - BOOST_CHECK_EQUAL( cs1.length(), std::strlen("test_string") ); - - std::string s( "test_string" ); - const_string cs2( s ); - BOOST_CHECK_EQUAL( std::strcmp( cs2.data(), "test_string" ), 0 ); - - const_string cs3( cs1 ); - BOOST_CHECK_EQUAL( std::strcmp( cs1.data(), "test_string" ), 0 ); - - const_string cs4( "test_string", 4 ); - BOOST_CHECK_EQUAL( std::strncmp( cs4.data(), "test", cs4.length() ), 0 ); - - const_string cs5( s.data(), s.data() + s.length() ); - BOOST_CHECK_EQUAL( std::strncmp( cs5.data(), "test_string", cs5.length() ), 0 ); - - const_string cs_array[] = { "str1", "str2" }; - - BOOST_CHECK_EQUAL( cs_array[0], "str1" ); - BOOST_CHECK_EQUAL( cs_array[1], "str2" ); -} - -BOOST_AUTO_TEST_CASE( data_access_test ) -{ - const_string cs1( "test_string" ); - BOOST_CHECK_EQUAL( std::strcmp( cs1.data(), "test_string" ), 0 ); - - BOOST_CHECK_EQUAL( cs1[(size_t)0], 't' ); - BOOST_CHECK_EQUAL( cs1[(size_t)4], '_' ); - BOOST_CHECK_EQUAL( cs1[cs1.length()-1], 'g' ); - - BOOST_CHECK_EQUAL( cs1[(size_t)0], cs1.at( 0 ) ); - BOOST_CHECK_EQUAL( cs1[(size_t)2], cs1.at( 5 ) ); - BOOST_CHECK_EQUAL( cs1.at( cs1.length() - 1 ), 'g' ); - - BOOST_CHECK_THROW( cs1.at( cs1.length() ), std::out_of_range ); - - BOOST_CHECK_EQUAL( common_layer::first_char()( cs1 ), 't' ); - BOOST_CHECK_EQUAL( common_layer::last_char()( cs1 ) , 'g' ); -} - - -BOOST_AUTO_TEST_CASE( length_test ) -{ - const_string cs1; - - BOOST_CHECK_EQUAL( cs1.length(), (size_t)0 ); - BOOST_CHECK( cs1.is_empty() ); - - cs1 = ""; - BOOST_CHECK_EQUAL( cs1.length(), (size_t)0 ); - BOOST_CHECK( cs1.is_empty() ); - - cs1 = "test_string"; - BOOST_CHECK_EQUAL( cs1.length(), (size_t)11 ); - - cs1.erase(); - BOOST_CHECK_EQUAL( cs1.length(), (size_t)0 ); - BOOST_CHECK_EQUAL( cs1.data(), "" ); - - cs1 = const_string( "test_string", 4 ); - BOOST_CHECK_EQUAL( cs1.length(), (size_t)4 ); - - cs1.resize( 5 ); - BOOST_CHECK_EQUAL( cs1.length(), (size_t)4 ); - - cs1.resize( 3 ); - BOOST_CHECK_EQUAL( cs1.length(), (size_t)3 ); - - cs1.rshorten(); - BOOST_CHECK_EQUAL( cs1.length(), (size_t)2 ); - BOOST_CHECK_EQUAL( cs1[(size_t)0], 't' ); - - cs1.lshorten(); - BOOST_CHECK_EQUAL( cs1.length(), (size_t)1 ); - BOOST_CHECK_EQUAL( cs1[(size_t)0], 'e' ); - - cs1.lshorten(); - BOOST_CHECK( cs1.is_empty() ); - BOOST_CHECK_EQUAL( cs1.data(), "" ); - - cs1 = "test_string"; - cs1.lshorten( 11 ); - BOOST_CHECK( cs1.is_empty() ); - BOOST_CHECK_EQUAL( cs1.data(), "" ); -} - -BOOST_AUTO_TEST_CASE( asignment_test ) -{ - const_string cs1; - std::string s( "test_string" ); - - cs1 = "test"; - BOOST_CHECK_EQUAL( std::strcmp( cs1.data(), "test" ), 0 ); - - cs1 = s; - BOOST_CHECK_EQUAL( std::strcmp( cs1.data(), "test_string" ), 0 ); - - cs1.assign( "test" ); - BOOST_CHECK_EQUAL( std::strcmp( cs1.data(), "test" ), 0 ); - - const_string cs2( "test_string" ); - - cs1.swap( cs2 ); - BOOST_CHECK_EQUAL( std::strcmp( cs1.data(), "test_string" ), 0 ); - BOOST_CHECK_EQUAL( std::strcmp( cs2.data(), "test" ), 0 ); -} - -BOOST_AUTO_TEST_CASE( comparison_test ) -{ - const_string cs1( "test_string" ); - const_string cs2( "test_string" ); - std::string s( "test_string" ); - - BOOST_CHECK_EQUAL( cs1, "test_string" ); - BOOST_CHECK_EQUAL( "test_string", cs1 ); - BOOST_CHECK_EQUAL( cs1, cs2 ); - BOOST_CHECK_EQUAL( cs1, s ); - BOOST_CHECK_EQUAL( s , cs1 ); - - cs1.resize( 4 ); - - BOOST_CHECK( cs1 != "test_string" ); - BOOST_CHECK( "test_string" != cs1 ); - BOOST_CHECK( cs1 != cs2 ); - BOOST_CHECK( cs1 != s ); - BOOST_CHECK( s != cs1 ); - - BOOST_CHECK_EQUAL( cs1, "test" ); -} - -BOOST_AUTO_TEST_CASE( iterators_test ) -{ - const_string cs1( "test_string" ); - std::string s; - - std::copy( cs1.begin(), cs1.end(), std::back_inserter( s ) ); - BOOST_CHECK_EQUAL( cs1, s ); - - s.erase(); - - std::copy( cs1.rbegin(), cs1.rend(), std::back_inserter( s ) ); - BOOST_CHECK_EQUAL( const_string( s ), "gnirts_tset" ); -} - -// EOF diff --git a/example/env/custom_interpreter_env.cpp b/example/env/custom_interpreter_env.cpp index a7ecfdac..0a197c5b 100644 --- a/example/env/custom_interpreter_env.cpp +++ b/example/env/custom_interpreter_env.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/env/env_var_default_value.cpp b/example/env/env_var_default_value.cpp index bb54c686..25b725fa 100644 --- a/example/env/env_var_default_value.cpp +++ b/example/env/env_var_default_value.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/env/environment_ex.cpp b/example/env/environment_ex.cpp index d2b70b6c..2799bdcb 100644 --- a/example/env/environment_ex.cpp +++ b/example/env/environment_ex.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/env/global_id.cpp b/example/env/global_id.cpp index c72dbbf3..71f01791 100644 --- a/example/env/global_id.cpp +++ b/example/env/global_id.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/env/modifier_combination.cpp b/example/env/modifier_combination.cpp index c07ba8a1..8fa8a425 100644 --- a/example/env/modifier_combination.cpp +++ b/example/env/modifier_combination.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/env/validation/need_typed_access.cpp b/example/env/validation/need_typed_access.cpp index 614b583f..5b957902 100644 --- a/example/env/validation/need_typed_access.cpp +++ b/example/env/validation/need_typed_access.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/env/variable_ex.cpp b/example/env/variable_ex.cpp index 23154666..873d8909 100644 --- a/example/env/variable_ex.cpp +++ b/example/env/variable_ex.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/est_example1.cpp b/example/est_example1.cpp index 2e2b36f1..eee0d4b8 100644 --- a/example/est_example1.cpp +++ b/example/est_example1.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/est_example2.cpp b/example/est_example2.cpp index f57a812c..44a0a9f7 100644 --- a/example/est_example2.cpp +++ b/example/est_example2.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/exec_mon_example.cpp b/example/exec_mon_example.cpp index d3e8298d..24933581 100644 --- a/example/exec_mon_example.cpp +++ b/example/exec_mon_example.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2003-2008. +// (C) Copyright Gennadiy Rozental 2003-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/logged_exp_example.cpp b/example/logged_exp_example.cpp index de0f6ab6..8b0e2538 100644 --- a/example/logged_exp_example.cpp +++ b/example/logged_exp_example.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/named_param_example.cpp b/example/named_param_example.cpp index 6e4d7b17..3f33dc1a 100644 --- a/example/named_param_example.cpp +++ b/example/named_param_example.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/prg_exec_example.cpp b/example/prg_exec_example.cpp index 88040c8a..2ee710d0 100644 --- a/example/prg_exec_example.cpp +++ b/example/prg_exec_example.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/unit_test_example_011.cpp b/example/unit_test_example_011.cpp deleted file mode 100644 index a2f300c0..00000000 --- a/example/unit_test_example_011.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#define BOOST_TEST_MODULE broken -#include - - -BOOST_AUTO_TEST_CASE( broken_test ) -{ - ::system("ls"); -} - diff --git a/example/unit_test_example_012.cpp b/example/unit_test_example_012.cpp deleted file mode 100644 index 5bc81d0b..00000000 --- a/example/unit_test_example_012.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include -#include - -using boost::unit_test::test_suite; - -void Vektor3Test1() { } - -test_suite* Vektor3_test_suite() -{ - test_suite *test = BOOST_TEST_SUITE("Vektor3 test suite"); - test->add(BOOST_TEST_CASE(&Vektor3Test1)); - - return test; -} - -test_suite* init_unit_test_suite(int, char *[]) -{ - std::system("true"); - // leads to "Test setup error: child has exited; pid: 1001; uid: 30540; exit value: 0" - - test_suite *test = BOOST_TEST_SUITE("Master test suite"); - test->add(Vektor3_test_suite()); - return test; -} \ No newline at end of file diff --git a/example/unit_test_example_02.cpp b/example/unit_test_example_02.cpp index 77de0675..e196639f 100644 --- a/example/unit_test_example_02.cpp +++ b/example/unit_test_example_02.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2002-2008. +// (C) Copyright Gennadiy Rozental 2002-2006. // (C) Copyright Gennadiy Rozental & Ullrich Koethe 2001. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at diff --git a/example/unit_test_example_03.cpp b/example/unit_test_example_03.cpp index 92ebb6c1..afdce4d2 100644 --- a/example/unit_test_example_03.cpp +++ b/example/unit_test_example_03.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2002-2008. +// (C) Copyright Gennadiy Rozental 2002-2006. // (C) Copyright Gennadiy Rozental & Ullrich Koethe 2001. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at diff --git a/example/unit_test_example_04.cpp b/example/unit_test_example_04.cpp index 4800a0be..fb7995e3 100644 --- a/example/unit_test_example_04.cpp +++ b/example/unit_test_example_04.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/unit_test_example_05.cpp b/example/unit_test_example_05.cpp index d16c2656..9e4fb912 100644 --- a/example/unit_test_example_05.cpp +++ b/example/unit_test_example_05.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/unit_test_example_06.cpp b/example/unit_test_example_06.cpp index 6b4dc2f4..10487e78 100644 --- a/example/unit_test_example_06.cpp +++ b/example/unit_test_example_06.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/unit_test_example_07.cpp b/example/unit_test_example_07.cpp index 7ef161d7..da232402 100644 --- a/example/unit_test_example_07.cpp +++ b/example/unit_test_example_07.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -29,7 +29,7 @@ typedef boost::mpl::list test_types; // each produced test case uses struct F as a fixture BOOST_AUTO_TEST_CASE_TEMPLATE( my_test, T, test_types ) { - T t = static_cast(i); + T t = i; // usually it's a bad idea to use BOOST_CHECK_EQUAL for checking equality values of // floating point types. This check may or may not produce an error report diff --git a/example/unit_test_example_08.cpp b/example/unit_test_example_08.cpp index a3c660c8..072335fa 100644 --- a/example/unit_test_example_08.cpp +++ b/example/unit_test_example_08.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/unit_test_example_09_1.cpp b/example/unit_test_example_09_1.cpp index 969fa916..fce91b06 100644 --- a/example/unit_test_example_09_1.cpp +++ b/example/unit_test_example_09_1.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/unit_test_example_09_2.cpp b/example/unit_test_example_09_2.cpp index b73b24af..ff68a387 100644 --- a/example/unit_test_example_09_2.cpp +++ b/example/unit_test_example_09_2.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/unit_test_example_10.cpp b/example/unit_test_example_10.cpp index 7a781bf2..9725c8ad 100644 --- a/example/unit_test_example_10.cpp +++ b/example/unit_test_example_10.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // (C) Copyright Gennadiy Rozental & Ullrich Koethe 2001. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at diff --git a/example/unit_test_example_11.cpp b/example/unit_test_example_11.cpp index 2b46d701..22b412fc 100644 --- a/example/unit_test_example_11.cpp +++ b/example/unit_test_example_11.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2002-2008. +// (C) Copyright Gennadiy Rozental 2002-2006. // (C) Copyright Gennadiy Rozental & Ullrich Koethe 2001. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at diff --git a/example/unit_test_example_12.cpp b/example/unit_test_example_12.cpp index 12e14777..a7857569 100644 --- a/example/unit_test_example_12.cpp +++ b/example/unit_test_example_12.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/example/unit_test_example_12.input b/example/unit_test_example_12.input index 995120cc..655f4f82 100644 --- a/example/unit_test_example_12.input +++ b/example/unit_test_example_12.input @@ -1,11 +1,11 @@ -asdf -a 1 -s 1000 -d 10 -f 100 -as 1001 -fadf 211 -ffda 211 -aaaaaaaa 8 -aaaaaaaaa -1 -ab -2 +asdf +a 1 +s 1000 +d 10 +f 100 +as 1001 +fadf 211 +ffda 211 +aaaaaaaa 8 +aaaaaaaaa -1 +ab -2 diff --git a/src/compiler_log_formatter.cpp b/src/compiler_log_formatter.cpp index fa174fb2..fa6bc259 100644 --- a/src/compiler_log_formatter.cpp +++ b/src/compiler_log_formatter.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/src/cpp_main.cpp b/src/cpp_main.cpp index 805a27fd..2912bc13 100644 --- a/src/cpp_main.cpp +++ b/src/cpp_main.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/src/debug.cpp b/src/debug.cpp index 864d6f21..dde4b678 100644 --- a/src/debug.cpp +++ b/src/debug.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2006-2008. +// (C) Copyright Gennadiy Rozental 2006. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/src/exception_safety.cpp b/src/exception_safety.cpp index 6f021963..85fcde58 100644 --- a/src/exception_safety.cpp +++ b/src/exception_safety.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/src/execution_monitor.cpp b/src/execution_monitor.cpp index 9702ed97..e4cd1ddf 100644 --- a/src/execution_monitor.cpp +++ b/src/execution_monitor.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/src/framework.cpp b/src/framework.cpp index 986f20b9..75d89112 100644 --- a/src/framework.cpp +++ b/src/framework.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/src/interaction_based.cpp b/src/interaction_based.cpp index f3dc76ff..2baff8c5 100644 --- a/src/interaction_based.cpp +++ b/src/interaction_based.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/src/logged_expectations.cpp b/src/logged_expectations.cpp index c8f690f9..55b0cd43 100644 --- a/src/logged_expectations.cpp +++ b/src/logged_expectations.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/src/plain_report_formatter.cpp b/src/plain_report_formatter.cpp index 8ef03c36..224b6731 100644 --- a/src/plain_report_formatter.cpp +++ b/src/plain_report_formatter.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/src/progress_monitor.cpp b/src/progress_monitor.cpp index 5ee24d5d..c5009cfc 100644 --- a/src/progress_monitor.cpp +++ b/src/progress_monitor.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/src/results_collector.cpp b/src/results_collector.cpp index e6be408e..07c44aa4 100644 --- a/src/results_collector.cpp +++ b/src/results_collector.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/src/results_reporter.cpp b/src/results_reporter.cpp index a1790923..d8eb8a22 100644 --- a/src/results_reporter.cpp +++ b/src/results_reporter.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/src/test_main.cpp b/src/test_main.cpp index d12dee5d..990a621b 100644 --- a/src/test_main.cpp +++ b/src/test_main.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/src/test_tools.cpp b/src/test_tools.cpp index 905e3514..75f39e7d 100644 --- a/src/test_tools.cpp +++ b/src/test_tools.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/src/unit_test_log.cpp b/src/unit_test_log.cpp index e1da0976..cf105728 100644 --- a/src/unit_test_log.cpp +++ b/src/unit_test_log.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/src/unit_test_main.cpp b/src/unit_test_main.cpp index c031c584..4329e295 100644 --- a/src/unit_test_main.cpp +++ b/src/unit_test_main.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/src/unit_test_monitor.cpp b/src/unit_test_monitor.cpp index 6a94a465..b5171860 100644 --- a/src/unit_test_monitor.cpp +++ b/src/unit_test_monitor.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/src/unit_test_parameters.cpp b/src/unit_test_parameters.cpp index 419527b8..8978835b 100644 --- a/src/unit_test_parameters.cpp +++ b/src/unit_test_parameters.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/src/unit_test_suite.cpp b/src/unit_test_suite.cpp index 6fe2f318..e7248744 100644 --- a/src/unit_test_suite.cpp +++ b/src/unit_test_suite.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/src/xml_log_formatter.cpp b/src/xml_log_formatter.cpp index e44f4588..18fc6b52 100644 --- a/src/xml_log_formatter.cpp +++ b/src/xml_log_formatter.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/src/xml_report_formatter.cpp b/src/xml_report_formatter.cpp index 4f0f59bf..09189bf1 100644 --- a/src/xml_report_formatter.cpp +++ b/src/xml_report_formatter.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2008. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index be0add5b..9463a40a 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -6,19 +6,14 @@ # See http://www.boost.org/libs/test for the library home page. -rule test-btl-lib ( test-rule : test-name : lib-name ? : pattern_file * : source_files * : extra-libs ? ) +rule test-btl-lib ( test-rule : test-name : lib-name ? : pattern_file * : source_files * ) { source_files ?= $(test-name).cpp ; - return [ $(test-rule) $(source_files) ../build//$(lib-name) $(extra-libs) + return [ $(test-rule) $(source_files) ../build//$(lib-name) : #args : $(pattern_file) : #on - # Activating -pedantic finds more gotchas - # Unfortunately, this warns about the use of "long long" in gcc's own stdlib - # So deactivate those warnings again - gcc:-pedantic - gcc:-Wno-long-long borland:-w-8080 msvc-6.5:static msvc-8.0:_SCL_SECURE_NO_DEPRECATE @@ -59,8 +54,6 @@ test-suite "unit_test_framework_test" [ test-btl-lib run : token_iterator_test : boost_unit_test_framework ] [ test-btl-lib run : boost_check_equal_str : boost_unit_test_framework ] [ test-btl-lib run : test_tree_management_test : boost_unit_test_framework ] - [ test-btl-lib run : sync_access_test : boost_unit_test_framework/static : : : /boost/thread//boost_thread ] - ; # A target that runs all the tests diff --git a/test/algorithms_test.cpp b/test/algorithms_test.cpp index ae95fb1d..0db3a124 100644 --- a/test/algorithms_test.cpp +++ b/test/algorithms_test.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2003-2008. +// (C) Copyright Gennadiy Rozental 2003-2007. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/test/basic_cstring_test.cpp b/test/basic_cstring_test.cpp index cbecb8bc..080271bd 100644 --- a/test/basic_cstring_test.cpp +++ b/test/basic_cstring_test.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2007. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -12,10 +12,6 @@ // Description : basic_cstring unit test // ***************************************************************************** -#ifdef _MSC_VER -#pragma warning(disable: 4996) -#endif - // Boost.Test #include #include @@ -94,19 +90,19 @@ BOOST_TEST_CASE_TEMPLATE_FUNCTION( constructors_test, CharT ) { { utf::basic_cstring bcs; - BOOST_CHECK_EQUAL( bcs.size(), (unsigned)0 ); + BOOST_CHECK_EQUAL( bcs.size(), 0 ); BOOST_CHECK( bcs.is_empty() ); } { utf::basic_cstring bcs( utf::basic_cstring::null_str() ); - BOOST_CHECK_EQUAL( bcs.size(), (unsigned)0 ); + BOOST_CHECK_EQUAL( bcs.size(), 0 ); BOOST_CHECK( bcs.is_empty() ); } { utf::basic_cstring bcs( 0 ); - BOOST_CHECK_EQUAL( bcs.size(), (unsigned)0 ); + BOOST_CHECK_EQUAL( bcs.size(), 0 ); BOOST_CHECK( bcs.is_empty() ); } @@ -199,24 +195,24 @@ BOOST_TEST_CASE_TEMPLATE_FUNCTION( size_test, CharT ) { utf::basic_cstring bcs1; - BOOST_CHECK_EQUAL( bcs1.size(), (unsigned)0 ); + BOOST_CHECK_EQUAL( bcs1.size(), 0 ); BOOST_CHECK( bcs1.is_empty() ); bcs1 = TEST_STRING; - BOOST_CHECK_EQUAL( bcs1.size(), (unsigned)11 ); + BOOST_CHECK_EQUAL( bcs1.size(), 11 ); bcs1.clear(); - BOOST_CHECK_EQUAL( bcs1.size(), (unsigned)0 ); + BOOST_CHECK_EQUAL( bcs1.size(), 0 ); BOOST_CHECK( bcs1.is_empty() ); bcs1 = utf::basic_cstring( TEST_STRING, 4 ); - BOOST_CHECK_EQUAL( bcs1.size(), (unsigned)4 ); + BOOST_CHECK_EQUAL( bcs1.size(), 4 ); bcs1.resize( 5 ); - BOOST_CHECK_EQUAL( bcs1.size(), (unsigned)4 ); + BOOST_CHECK_EQUAL( bcs1.size(), 4 ); bcs1.resize( 3 ); - BOOST_CHECK_EQUAL( bcs1.size(), (unsigned)3 ); + BOOST_CHECK_EQUAL( bcs1.size(), 3 ); } //____________________________________________________________________________// @@ -336,11 +332,11 @@ BOOST_TEST_CASE_TEMPLATE_FUNCTION( trim_test, CharT ) LOCAL_DEF( bcs0, "tes" ); bcs0.trim_right( 1 ); - BOOST_CHECK_EQUAL( bcs0.size(), (unsigned)2 ); + BOOST_CHECK_EQUAL( bcs0.size(), 2 ); BOOST_CHECK_EQUAL( bcs0[0], 't' ); bcs0.trim_left( 1 ); - BOOST_CHECK_EQUAL( bcs0.size(), (unsigned)1 ); + BOOST_CHECK_EQUAL( bcs0.size(), 1 ); BOOST_CHECK_EQUAL( bcs0[0], 'e' ); bcs0.trim_left( 1 ); @@ -404,30 +400,27 @@ BOOST_TEST_CASE_TEMPLATE_FUNCTION( io_test, CharT ) BOOST_TEST_CASE_TEMPLATE_FUNCTION( find_test, CharT ) { - typedef typename utf::basic_cstring::size_type size; utf::basic_cstring bcs1( TEST_STRING ); - size not_found = (size)utf::basic_cstring::npos; + BOOST_CHECK_EQUAL( bcs1.find( utf::basic_cstring() ), utf::basic_cstring::npos ); + BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "test" ) ), 0 ); + BOOST_CHECK_EQUAL( bcs1.find( TEST_STRING ), 0 ); + BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "test_string " ) ), utf::basic_cstring::npos ); + BOOST_CHECK_EQUAL( bcs1.find( LITERAL( " test_string" ) ), utf::basic_cstring::npos ); + BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "est" ) ), 1 ); + BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "t_st" ) ), 3 ); + BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "ing" ) ), 8 ); + BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "tst" ) ), utf::basic_cstring::npos ); - BOOST_CHECK_EQUAL( bcs1.find( utf::basic_cstring() ), not_found ); - BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "test" ) ), (size)0 ); - BOOST_CHECK_EQUAL( bcs1.find( TEST_STRING ), (size)0 ); - BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "test_string " ) ), not_found ); - BOOST_CHECK_EQUAL( bcs1.find( LITERAL( " test_string" ) ), not_found ); - BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "est" ) ), (size)1 ); - BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "t_st" ) ), (size)3 ); - BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "ing" ) ), (size)8 ); - BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "tst" ) ), not_found ); - - BOOST_CHECK_EQUAL( bcs1.rfind( utf::basic_cstring() ), not_found ); - BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "test" ) ), (size)0 ); - BOOST_CHECK_EQUAL( bcs1.rfind( TEST_STRING ), (size)0 ); - BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "test_string " ) ), not_found ); - BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( " test_string" ) ), not_found ); - BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "est" ) ), (size)1 ); - BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "t_st" ) ), (size)3 ); - BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "ing" ) ), (size)8 ); - BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "tst" ) ), not_found ); + BOOST_CHECK_EQUAL( bcs1.rfind( utf::basic_cstring() ), utf::basic_cstring::npos ); + BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "test" ) ), 0 ); + BOOST_CHECK_EQUAL( bcs1.rfind( TEST_STRING ), 0 ); + BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "test_string " ) ), utf::basic_cstring::npos ); + BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( " test_string" ) ), utf::basic_cstring::npos ); + BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "est" ) ), 1 ); + BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "t_st" ) ), 3 ); + BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "ing" ) ), 8 ); + BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "tst" ) ), utf::basic_cstring::npos ); } //____________________________________________________________________________// diff --git a/test/boost_check_equal_str.cpp b/test/boost_check_equal_str.cpp index c495b1fb..a5a55d91 100644 --- a/test/boost_check_equal_str.cpp +++ b/test/boost_check_equal_str.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2007. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/test/class_properties_test.cpp b/test/class_properties_test.cpp index cf85af5d..813bef5d 100644 --- a/test/class_properties_test.cpp +++ b/test/class_properties_test.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2003-2008. +// (C) Copyright Gennadiy Rozental 2003-2007. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -131,6 +131,7 @@ BOOST_AUTO_TEST_CASE( test_readonly_property ) BOOST_CHECK( s == p_str ); BOOST_CHECK( p_str2 != p_str ); + BOOST_CHECK_EQUAL( p_b->foo(), 1 ); BOOST_CHECK_EQUAL( p_one ^ 3, 2 ); diff --git a/test/config_file_iterator_test.cpp b/test/config_file_iterator_test.cpp index 59c40128..641c1344 100644 --- a/test/config_file_iterator_test.cpp +++ b/test/config_file_iterator_test.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2007. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/test/config_file_test.cpp b/test/config_file_test.cpp index 9c24fdec..18bedca9 100644 --- a/test/config_file_test.cpp +++ b/test/config_file_test.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2007. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/test/custom_exception_test.cpp b/test/custom_exception_test.cpp index ec53e3c8..3e82f9fc 100644 --- a/test/custom_exception_test.cpp +++ b/test/custom_exception_test.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2003-2008. +// (C) Copyright Gennadiy Rozental 2003-2007. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/test/errors_handling_test.cpp b/test/errors_handling_test.cpp index e48ca03f..3b70b198 100644 --- a/test/errors_handling_test.cpp +++ b/test/errors_handling_test.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2007. // (C) Copyright Beman Dawes 2001. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at @@ -46,7 +46,7 @@ struct this_test_log_formatter : public boost::unit_test::output::compiler_log_f output << line << ": "; } - void test_unit_finish( std::ostream& output, test_unit const& tu, unsigned long ) + void test_unit_finish( std::ostream& output, test_unit const& tu, unsigned long elapsed ) { output << "Leaving test " << tu.p_type_name << " \"" << tu.p_name << "\"" << std::endl; } diff --git a/test/fixed_mapping_test.cpp b/test/fixed_mapping_test.cpp index b91b0d4f..7b22d2ca 100644 --- a/test/fixed_mapping_test.cpp +++ b/test/fixed_mapping_test.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2007. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/test/foreach_test.cpp b/test/foreach_test.cpp index 3468ab84..3268948e 100644 --- a/test/foreach_test.cpp +++ b/test/foreach_test.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2007. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/test/ifstream_line_iterator_test.cpp b/test/ifstream_line_iterator_test.cpp index 7a665ec2..dde87ba3 100644 --- a/test/ifstream_line_iterator_test.cpp +++ b/test/ifstream_line_iterator_test.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2007. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/test/minimal_test.cpp b/test/minimal_test.cpp index 350c00c3..dc431bb4 100644 --- a/test/minimal_test.cpp +++ b/test/minimal_test.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2007. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/test/online_test.cpp b/test/online_test.cpp index 89282835..3697d1e2 100644 --- a/test/online_test.cpp +++ b/test/online_test.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2007. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/test/output_test_stream_test.cpp b/test/output_test_stream_test.cpp index 82a4bb1f..4ace5690 100644 --- a/test/output_test_stream_test.cpp +++ b/test/output_test_stream_test.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2007. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/test/parameterized_test_test.cpp b/test/parameterized_test_test.cpp index 93965e42..8319fe0f 100644 --- a/test/parameterized_test_test.cpp +++ b/test/parameterized_test_test.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2002-2008. +// (C) Copyright Gennadiy Rozental 2002-2007. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/test/prg_exec_fail1.cpp b/test/prg_exec_fail1.cpp index d246c74f..b8766051 100644 --- a/test/prg_exec_fail1.cpp +++ b/test/prg_exec_fail1.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2007. // (C) Copyright Beman Dawes 2001. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at diff --git a/test/prg_exec_fail2.cpp b/test/prg_exec_fail2.cpp index 8663a4e4..d6befc6d 100644 --- a/test/prg_exec_fail2.cpp +++ b/test/prg_exec_fail2.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2007. // (C) Copyright Beman Dawes 2001. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at @@ -29,13 +29,8 @@ int cpp_main( int, char *[] ) // note the name { -#if defined(APPLE) && defined(ppc) - printf("The ppc doesn't throw on divice-by-zero. No check.\n"); - return 1; -#else int div = 0; return 10 / div; -#endif } //____________________________________________________________________________// diff --git a/test/prg_exec_fail3.cpp b/test/prg_exec_fail3.cpp index 76a81146..d5b5fdbc 100644 --- a/test/prg_exec_fail3.cpp +++ b/test/prg_exec_fail3.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2002-2008. +// (C) Copyright Gennadiy Rozental 2002-2007. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/test/prg_exec_fail4.cpp b/test/prg_exec_fail4.cpp index 9772f520..c89498c4 100644 --- a/test/prg_exec_fail4.cpp +++ b/test/prg_exec_fail4.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2003-2008. +// (C) Copyright Gennadiy Rozental 2003-2007. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/test/result_report_test.cpp b/test/result_report_test.cpp index 3a13a219..a0f8018a 100644 --- a/test/result_report_test.cpp +++ b/test/result_report_test.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2007. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/test/sync_access_test.cpp b/test/sync_access_test.cpp deleted file mode 100644 index 8422d219..00000000 --- a/test/sync_access_test.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#define BOOST_TEST_MODULE sync_access_test -#include - -#include -#include -#include -#include - - -using namespace boost; -namespace ut = boost::unit_test; - -static boost::mutex m; - -/// thread execution function -static void thread_function(boost::barrier& b) -{ - b.wait(); /// wait until memory barrier allows the execution - boost::mutex::scoped_lock lock(m); /// lock mutex - BOOST_CHECK_EQUAL(1,0); /// produce the fault -} - -/// test function which creates threads -BOOST_AUTO_TEST_CASE( test_multiple_assertion_faults ) -{ - boost::thread_group tg; // thread group to manage all threads - boost::barrier b(100); // memory barrier, which should block all threads - // until all 100 threads were created - - for(size_t i=0; i<100; ++i) - tg.create_thread(boost::bind(thread_function, ref(b))); /// create a thread and pass it the barrier - - tg.join_all(); -} - -// EOF diff --git a/test/test_case_template_test.cpp b/test/test_case_template_test.cpp index 0b55600e..fa95477b 100644 --- a/test/test_case_template_test.cpp +++ b/test/test_case_template_test.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2003-2008. +// (C) Copyright Gennadiy Rozental 2003-2007. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/test/test_files/cfg_file_tst1.cfg b/test/test_files/cfg_file_tst1.cfg old mode 100755 new mode 100644 index 1e97c293..c0a4332c --- a/test/test_files/cfg_file_tst1.cfg +++ b/test/test_files/cfg_file_tst1.cfg @@ -1,5 +1,5 @@ -par1 = "ABC " -NS1::par1 = 12 -NS2::NS3::par1 = OFF -NS2::NS4::par1 = ON -NS2::NS4::NS5::par1 = 1 2 3 +par1 = "ABC " +NS1::par1 = 12 +NS2::NS3::par1 = OFF +NS2::NS4::par1 = ON +NS2::NS4::NS5::par1 = 1 2 3 diff --git a/test/test_files/cfg_file_tst2.cfg b/test/test_files/cfg_file_tst2.cfg old mode 100755 new mode 100644 index 530eff22..34acac1f --- a/test/test_files/cfg_file_tst2.cfg +++ b/test/test_files/cfg_file_tst2.cfg @@ -1 +1 @@ -par1 = |"Simple text "| +par1 = |"Simple text "| diff --git a/test/test_files/cfg_file_tst3.cfg b/test/test_files/cfg_file_tst3.cfg old mode 100755 new mode 100644 index d526d26f..e04bfd4f --- a/test/test_files/cfg_file_tst3.cfg +++ b/test/test_files/cfg_file_tst3.cfg @@ -1 +1 @@ -par1 = 1 +par1 = 1 diff --git a/test/test_files/cfg_file_tst4.cfg b/test/test_files/cfg_file_tst4.cfg old mode 100755 new mode 100644 index ee182937..c23d80d2 --- a/test/test_files/cfg_file_tst4.cfg +++ b/test/test_files/cfg_file_tst4.cfg @@ -1 +1 @@ -NS::par2 = 1 2 +NS::par2 = 1 2 diff --git a/test/test_files/cfg_file_tst5.cfg b/test/test_files/cfg_file_tst5.cfg old mode 100755 new mode 100644 index 31ae1072..254431e0 --- a/test/test_files/cfg_file_tst5.cfg +++ b/test/test_files/cfg_file_tst5.cfg @@ -1 +1 @@ -NS::par2 => 2 +NS::par2 => 2 diff --git a/test/test_files/cfg_file_tst6.cfg b/test/test_files/cfg_file_tst6.cfg old mode 100755 new mode 100644 index cbfea511..0af3cabc --- a/test/test_files/cfg_file_tst6.cfg +++ b/test/test_files/cfg_file_tst6.cfg @@ -1 +1 @@ -par1 1 +par1 1 diff --git a/test/test_files/cfg_file_tst7.cfg b/test/test_files/cfg_file_tst7.cfg old mode 100755 new mode 100644 index 5d39393c..a834b08b --- a/test/test_files/cfg_file_tst7.cfg +++ b/test/test_files/cfg_file_tst7.cfg @@ -1 +1 @@ -NS1/NS2/par 1 +NS1/NS2/par 1 diff --git a/test/test_files/errors_handling_test.pattern b/test/test_files/errors_handling_test.pattern index 0b976a47..778570c2 100644 --- a/test/test_files/errors_handling_test.pattern +++ b/test/test_files/errors_handling_test.pattern @@ -1,392 +1,392 @@ - -=========================== -log level: log_successful_tests; error type: no error; - -Entering test case "error_on_demand" -99: info: check 'no error' passed -Leaving test case "error_on_demand" - -=========================== -log level: log_successful_tests; error type: user message; - -Entering test case "error_on_demand" -message -Test case error_on_demand doesn't include any assertions -Leaving test case "error_on_demand" - -=========================== -log level: log_successful_tests; error type: user warning; - -Entering test case "error_on_demand" -107: warning in "error_on_demand": warning -Test case error_on_demand doesn't include any assertions -Leaving test case "error_on_demand" - -=========================== -log level: log_successful_tests; error type: user non-fatal error; - -Entering test case "error_on_demand" -111: error in "error_on_demand": non-fatal error -Leaving test case "error_on_demand" - -=========================== -log level: log_successful_tests; error type: cpp exception; - -Entering test case "error_on_demand" -0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message -121: last checkpoint: error_on_demand() throw runtime_error -Leaving test case "error_on_demand" - -=========================== -log level: log_successful_tests; error type: system error; - -Entering test case "error_on_demand" -0: fatal error in "error_on_demand": integer divide by zero -126: last checkpoint: error_on_demand() divide by zero -Leaving test case "error_on_demand" - -=========================== -log level: log_successful_tests; error type: user fatal error; - -Entering test case "error_on_demand" -115: fatal error in "error_on_demand": fatal error -Leaving test case "error_on_demand" - -=========================== -log level: log_successful_tests; error type: system fatal error; - -Entering test case "error_on_demand" -0: fatal error in "error_on_demand": memory access violation -131: last checkpoint: write to an invalid address -Test is aborted -Leaving test case "error_on_demand" - -=========================== -log level: log_test_suites; error type: no error; - -Entering test case "error_on_demand" -Leaving test case "error_on_demand" - -=========================== -log level: log_test_suites; error type: user message; - -Entering test case "error_on_demand" -message -Test case error_on_demand doesn't include any assertions -Leaving test case "error_on_demand" - -=========================== -log level: log_test_suites; error type: user warning; - -Entering test case "error_on_demand" -107: warning in "error_on_demand": warning -Test case error_on_demand doesn't include any assertions -Leaving test case "error_on_demand" - -=========================== -log level: log_test_suites; error type: user non-fatal error; - -Entering test case "error_on_demand" -111: error in "error_on_demand": non-fatal error -Leaving test case "error_on_demand" - -=========================== -log level: log_test_suites; error type: cpp exception; - -Entering test case "error_on_demand" -0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message -121: last checkpoint: error_on_demand() throw runtime_error -Leaving test case "error_on_demand" - -=========================== -log level: log_test_suites; error type: system error; - -Entering test case "error_on_demand" -0: fatal error in "error_on_demand": integer divide by zero -126: last checkpoint: error_on_demand() divide by zero -Leaving test case "error_on_demand" - -=========================== -log level: log_test_suites; error type: user fatal error; - -Entering test case "error_on_demand" -115: fatal error in "error_on_demand": fatal error -Leaving test case "error_on_demand" - -=========================== -log level: log_test_suites; error type: system fatal error; - -Entering test case "error_on_demand" -0: fatal error in "error_on_demand": memory access violation -131: last checkpoint: write to an invalid address -Test is aborted -Leaving test case "error_on_demand" - -=========================== -log level: log_messages; error type: no error; - - -=========================== -log level: log_messages; error type: user message; - -message -Test case error_on_demand doesn't include any assertions - -=========================== -log level: log_messages; error type: user warning; - -107: warning in "error_on_demand": warning -Test case error_on_demand doesn't include any assertions - -=========================== -log level: log_messages; error type: user non-fatal error; - -111: error in "error_on_demand": non-fatal error - -=========================== -log level: log_messages; error type: cpp exception; - -0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message -121: last checkpoint: error_on_demand() throw runtime_error - -=========================== -log level: log_messages; error type: system error; - -0: fatal error in "error_on_demand": integer divide by zero -126: last checkpoint: error_on_demand() divide by zero - -=========================== -log level: log_messages; error type: user fatal error; - -115: fatal error in "error_on_demand": fatal error - -=========================== -log level: log_messages; error type: system fatal error; - -0: fatal error in "error_on_demand": memory access violation -131: last checkpoint: write to an invalid address -Test is aborted - -=========================== -log level: log_warnings; error type: no error; - - -=========================== -log level: log_warnings; error type: user message; - - -=========================== -log level: log_warnings; error type: user warning; - -107: warning in "error_on_demand": warning - -=========================== -log level: log_warnings; error type: user non-fatal error; - -111: error in "error_on_demand": non-fatal error - -=========================== -log level: log_warnings; error type: cpp exception; - -0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message -121: last checkpoint: error_on_demand() throw runtime_error - -=========================== -log level: log_warnings; error type: system error; - -0: fatal error in "error_on_demand": integer divide by zero -126: last checkpoint: error_on_demand() divide by zero - -=========================== -log level: log_warnings; error type: user fatal error; - -115: fatal error in "error_on_demand": fatal error - -=========================== -log level: log_warnings; error type: system fatal error; - -0: fatal error in "error_on_demand": memory access violation -131: last checkpoint: write to an invalid address - -=========================== -log level: log_all_errors; error type: no error; - - -=========================== -log level: log_all_errors; error type: user message; - - -=========================== -log level: log_all_errors; error type: user warning; - - -=========================== -log level: log_all_errors; error type: user non-fatal error; - -111: error in "error_on_demand": non-fatal error - -=========================== -log level: log_all_errors; error type: cpp exception; - -0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message -121: last checkpoint: error_on_demand() throw runtime_error - -=========================== -log level: log_all_errors; error type: system error; - -0: fatal error in "error_on_demand": integer divide by zero -126: last checkpoint: error_on_demand() divide by zero - -=========================== -log level: log_all_errors; error type: user fatal error; - -115: fatal error in "error_on_demand": fatal error - -=========================== -log level: log_all_errors; error type: system fatal error; - -0: fatal error in "error_on_demand": memory access violation -131: last checkpoint: write to an invalid address - -=========================== -log level: log_cpp_exception_errors; error type: no error; - - -=========================== -log level: log_cpp_exception_errors; error type: user message; - - -=========================== -log level: log_cpp_exception_errors; error type: user warning; - - -=========================== -log level: log_cpp_exception_errors; error type: user non-fatal error; - - -=========================== -log level: log_cpp_exception_errors; error type: cpp exception; - -0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message -121: last checkpoint: error_on_demand() throw runtime_error - -=========================== -log level: log_cpp_exception_errors; error type: system error; - -0: fatal error in "error_on_demand": integer divide by zero -126: last checkpoint: error_on_demand() divide by zero - -=========================== -log level: log_cpp_exception_errors; error type: user fatal error; - -115: fatal error in "error_on_demand": fatal error - -=========================== -log level: log_cpp_exception_errors; error type: system fatal error; - -0: fatal error in "error_on_demand": memory access violation -131: last checkpoint: write to an invalid address - -=========================== -log level: log_system_errors; error type: no error; - - -=========================== -log level: log_system_errors; error type: user message; - - -=========================== -log level: log_system_errors; error type: user warning; - - -=========================== -log level: log_system_errors; error type: user non-fatal error; - - -=========================== -log level: log_system_errors; error type: cpp exception; - - -=========================== -log level: log_system_errors; error type: system error; - -0: fatal error in "error_on_demand": integer divide by zero -126: last checkpoint: error_on_demand() divide by zero - -=========================== -log level: log_system_errors; error type: user fatal error; - -115: fatal error in "error_on_demand": fatal error - -=========================== -log level: log_system_errors; error type: system fatal error; - -0: fatal error in "error_on_demand": memory access violation -131: last checkpoint: write to an invalid address - -=========================== -log level: log_fatal_errors; error type: no error; - - -=========================== -log level: log_fatal_errors; error type: user message; - - -=========================== -log level: log_fatal_errors; error type: user warning; - - -=========================== -log level: log_fatal_errors; error type: user non-fatal error; - - -=========================== -log level: log_fatal_errors; error type: cpp exception; - - -=========================== -log level: log_fatal_errors; error type: system error; - - -=========================== -log level: log_fatal_errors; error type: user fatal error; - -115: fatal error in "error_on_demand": fatal error - -=========================== -log level: log_fatal_errors; error type: system fatal error; - -0: fatal error in "error_on_demand": memory access violation -131: last checkpoint: write to an invalid address - -=========================== -log level: log_nothing; error type: no error; - - -=========================== -log level: log_nothing; error type: user message; - - -=========================== -log level: log_nothing; error type: user warning; - - -=========================== -log level: log_nothing; error type: user non-fatal error; - - -=========================== -log level: log_nothing; error type: cpp exception; - - -=========================== -log level: log_nothing; error type: system error; - - -=========================== -log level: log_nothing; error type: user fatal error; - - -=========================== -log level: log_nothing; error type: system fatal error; - + +=========================== +log level: log_successful_tests; error type: no error; + +Entering test case "error_on_demand" +99: info: check 'no error' passed +Leaving test case "error_on_demand" + +=========================== +log level: log_successful_tests; error type: user message; + +Entering test case "error_on_demand" +message +Test case error_on_demand doesn't include any assertions +Leaving test case "error_on_demand" + +=========================== +log level: log_successful_tests; error type: user warning; + +Entering test case "error_on_demand" +107: warning in "error_on_demand": warning +Test case error_on_demand doesn't include any assertions +Leaving test case "error_on_demand" + +=========================== +log level: log_successful_tests; error type: user non-fatal error; + +Entering test case "error_on_demand" +111: error in "error_on_demand": non-fatal error +Leaving test case "error_on_demand" + +=========================== +log level: log_successful_tests; error type: cpp exception; + +Entering test case "error_on_demand" +0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message +121: last checkpoint: error_on_demand() throw runtime_error +Leaving test case "error_on_demand" + +=========================== +log level: log_successful_tests; error type: system error; + +Entering test case "error_on_demand" +0: fatal error in "error_on_demand": integer divide by zero +126: last checkpoint: error_on_demand() divide by zero +Leaving test case "error_on_demand" + +=========================== +log level: log_successful_tests; error type: user fatal error; + +Entering test case "error_on_demand" +115: fatal error in "error_on_demand": fatal error +Leaving test case "error_on_demand" + +=========================== +log level: log_successful_tests; error type: system fatal error; + +Entering test case "error_on_demand" +0: fatal error in "error_on_demand": memory access violation +131: last checkpoint: write to an invalid address +Test is aborted +Leaving test case "error_on_demand" + +=========================== +log level: log_test_suites; error type: no error; + +Entering test case "error_on_demand" +Leaving test case "error_on_demand" + +=========================== +log level: log_test_suites; error type: user message; + +Entering test case "error_on_demand" +message +Test case error_on_demand doesn't include any assertions +Leaving test case "error_on_demand" + +=========================== +log level: log_test_suites; error type: user warning; + +Entering test case "error_on_demand" +107: warning in "error_on_demand": warning +Test case error_on_demand doesn't include any assertions +Leaving test case "error_on_demand" + +=========================== +log level: log_test_suites; error type: user non-fatal error; + +Entering test case "error_on_demand" +111: error in "error_on_demand": non-fatal error +Leaving test case "error_on_demand" + +=========================== +log level: log_test_suites; error type: cpp exception; + +Entering test case "error_on_demand" +0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message +121: last checkpoint: error_on_demand() throw runtime_error +Leaving test case "error_on_demand" + +=========================== +log level: log_test_suites; error type: system error; + +Entering test case "error_on_demand" +0: fatal error in "error_on_demand": integer divide by zero +126: last checkpoint: error_on_demand() divide by zero +Leaving test case "error_on_demand" + +=========================== +log level: log_test_suites; error type: user fatal error; + +Entering test case "error_on_demand" +115: fatal error in "error_on_demand": fatal error +Leaving test case "error_on_demand" + +=========================== +log level: log_test_suites; error type: system fatal error; + +Entering test case "error_on_demand" +0: fatal error in "error_on_demand": memory access violation +131: last checkpoint: write to an invalid address +Test is aborted +Leaving test case "error_on_demand" + +=========================== +log level: log_messages; error type: no error; + + +=========================== +log level: log_messages; error type: user message; + +message +Test case error_on_demand doesn't include any assertions + +=========================== +log level: log_messages; error type: user warning; + +107: warning in "error_on_demand": warning +Test case error_on_demand doesn't include any assertions + +=========================== +log level: log_messages; error type: user non-fatal error; + +111: error in "error_on_demand": non-fatal error + +=========================== +log level: log_messages; error type: cpp exception; + +0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message +121: last checkpoint: error_on_demand() throw runtime_error + +=========================== +log level: log_messages; error type: system error; + +0: fatal error in "error_on_demand": integer divide by zero +126: last checkpoint: error_on_demand() divide by zero + +=========================== +log level: log_messages; error type: user fatal error; + +115: fatal error in "error_on_demand": fatal error + +=========================== +log level: log_messages; error type: system fatal error; + +0: fatal error in "error_on_demand": memory access violation +131: last checkpoint: write to an invalid address +Test is aborted + +=========================== +log level: log_warnings; error type: no error; + + +=========================== +log level: log_warnings; error type: user message; + + +=========================== +log level: log_warnings; error type: user warning; + +107: warning in "error_on_demand": warning + +=========================== +log level: log_warnings; error type: user non-fatal error; + +111: error in "error_on_demand": non-fatal error + +=========================== +log level: log_warnings; error type: cpp exception; + +0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message +121: last checkpoint: error_on_demand() throw runtime_error + +=========================== +log level: log_warnings; error type: system error; + +0: fatal error in "error_on_demand": integer divide by zero +126: last checkpoint: error_on_demand() divide by zero + +=========================== +log level: log_warnings; error type: user fatal error; + +115: fatal error in "error_on_demand": fatal error + +=========================== +log level: log_warnings; error type: system fatal error; + +0: fatal error in "error_on_demand": memory access violation +131: last checkpoint: write to an invalid address + +=========================== +log level: log_all_errors; error type: no error; + + +=========================== +log level: log_all_errors; error type: user message; + + +=========================== +log level: log_all_errors; error type: user warning; + + +=========================== +log level: log_all_errors; error type: user non-fatal error; + +111: error in "error_on_demand": non-fatal error + +=========================== +log level: log_all_errors; error type: cpp exception; + +0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message +121: last checkpoint: error_on_demand() throw runtime_error + +=========================== +log level: log_all_errors; error type: system error; + +0: fatal error in "error_on_demand": integer divide by zero +126: last checkpoint: error_on_demand() divide by zero + +=========================== +log level: log_all_errors; error type: user fatal error; + +115: fatal error in "error_on_demand": fatal error + +=========================== +log level: log_all_errors; error type: system fatal error; + +0: fatal error in "error_on_demand": memory access violation +131: last checkpoint: write to an invalid address + +=========================== +log level: log_cpp_exception_errors; error type: no error; + + +=========================== +log level: log_cpp_exception_errors; error type: user message; + + +=========================== +log level: log_cpp_exception_errors; error type: user warning; + + +=========================== +log level: log_cpp_exception_errors; error type: user non-fatal error; + + +=========================== +log level: log_cpp_exception_errors; error type: cpp exception; + +0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message +121: last checkpoint: error_on_demand() throw runtime_error + +=========================== +log level: log_cpp_exception_errors; error type: system error; + +0: fatal error in "error_on_demand": integer divide by zero +126: last checkpoint: error_on_demand() divide by zero + +=========================== +log level: log_cpp_exception_errors; error type: user fatal error; + +115: fatal error in "error_on_demand": fatal error + +=========================== +log level: log_cpp_exception_errors; error type: system fatal error; + +0: fatal error in "error_on_demand": memory access violation +131: last checkpoint: write to an invalid address + +=========================== +log level: log_system_errors; error type: no error; + + +=========================== +log level: log_system_errors; error type: user message; + + +=========================== +log level: log_system_errors; error type: user warning; + + +=========================== +log level: log_system_errors; error type: user non-fatal error; + + +=========================== +log level: log_system_errors; error type: cpp exception; + + +=========================== +log level: log_system_errors; error type: system error; + +0: fatal error in "error_on_demand": integer divide by zero +126: last checkpoint: error_on_demand() divide by zero + +=========================== +log level: log_system_errors; error type: user fatal error; + +115: fatal error in "error_on_demand": fatal error + +=========================== +log level: log_system_errors; error type: system fatal error; + +0: fatal error in "error_on_demand": memory access violation +131: last checkpoint: write to an invalid address + +=========================== +log level: log_fatal_errors; error type: no error; + + +=========================== +log level: log_fatal_errors; error type: user message; + + +=========================== +log level: log_fatal_errors; error type: user warning; + + +=========================== +log level: log_fatal_errors; error type: user non-fatal error; + + +=========================== +log level: log_fatal_errors; error type: cpp exception; + + +=========================== +log level: log_fatal_errors; error type: system error; + + +=========================== +log level: log_fatal_errors; error type: user fatal error; + +115: fatal error in "error_on_demand": fatal error + +=========================== +log level: log_fatal_errors; error type: system fatal error; + +0: fatal error in "error_on_demand": memory access violation +131: last checkpoint: write to an invalid address + +=========================== +log level: log_nothing; error type: no error; + + +=========================== +log level: log_nothing; error type: user message; + + +=========================== +log level: log_nothing; error type: user warning; + + +=========================== +log level: log_nothing; error type: user non-fatal error; + + +=========================== +log level: log_nothing; error type: cpp exception; + + +=========================== +log level: log_nothing; error type: system error; + + +=========================== +log level: log_nothing; error type: user fatal error; + + +=========================== +log level: log_nothing; error type: system fatal error; + diff --git a/test/test_files/errors_handling_test.pattern2 b/test/test_files/errors_handling_test.pattern2 index 39a77c40..de786d17 100644 --- a/test/test_files/errors_handling_test.pattern2 +++ b/test/test_files/errors_handling_test.pattern2 @@ -1,279 +1,279 @@ - -=========================== -log level: log_successful_tests; error type: no error; - -Entering test case "error_on_demand" -99: info: check 'no error' passed -Leaving test case "error_on_demand" - -=========================== -log level: log_successful_tests; error type: user message; - -Entering test case "error_on_demand" -message -Test case error_on_demand doesn't include any assertions -Leaving test case "error_on_demand" - -=========================== -log level: log_successful_tests; error type: user warning; - -Entering test case "error_on_demand" -107: warning in "error_on_demand": warning -Test case error_on_demand doesn't include any assertions -Leaving test case "error_on_demand" - -=========================== -log level: log_successful_tests; error type: user non-fatal error; - -Entering test case "error_on_demand" -111: error in "error_on_demand": non-fatal error -Leaving test case "error_on_demand" - -=========================== -log level: log_successful_tests; error type: cpp exception; - -Entering test case "error_on_demand" -0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message -121: last checkpoint: error_on_demand() throw runtime_error -Leaving test case "error_on_demand" - -=========================== -log level: log_successful_tests; error type: system error; - -Entering test case "error_on_demand" -115: fatal error in "error_on_demand": fatal error -Leaving test case "error_on_demand" - -=========================== -log level: log_test_suites; error type: no error; - -Entering test case "error_on_demand" -Leaving test case "error_on_demand" - -=========================== -log level: log_test_suites; error type: user message; - -Entering test case "error_on_demand" -message -Test case error_on_demand doesn't include any assertions -Leaving test case "error_on_demand" - -=========================== -log level: log_test_suites; error type: user warning; - -Entering test case "error_on_demand" -107: warning in "error_on_demand": warning -Test case error_on_demand doesn't include any assertions -Leaving test case "error_on_demand" - -=========================== -log level: log_test_suites; error type: user non-fatal error; - -Entering test case "error_on_demand" -111: error in "error_on_demand": non-fatal error -Leaving test case "error_on_demand" - -=========================== -log level: log_test_suites; error type: cpp exception; - -Entering test case "error_on_demand" -0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message -121: last checkpoint: error_on_demand() throw runtime_error -Leaving test case "error_on_demand" - -=========================== -log level: log_test_suites; error type: system error; - -Entering test case "error_on_demand" -115: fatal error in "error_on_demand": fatal error -Leaving test case "error_on_demand" - -=========================== -log level: log_messages; error type: no error; - - -=========================== -log level: log_messages; error type: user message; - -message -Test case error_on_demand doesn't include any assertions - -=========================== -log level: log_messages; error type: user warning; - -107: warning in "error_on_demand": warning -Test case error_on_demand doesn't include any assertions - -=========================== -log level: log_messages; error type: user non-fatal error; - -111: error in "error_on_demand": non-fatal error - -=========================== -log level: log_messages; error type: cpp exception; - -0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message -121: last checkpoint: error_on_demand() throw runtime_error - -=========================== -log level: log_messages; error type: system error; - -115: fatal error in "error_on_demand": fatal error - -=========================== -log level: log_warnings; error type: no error; - - -=========================== -log level: log_warnings; error type: user message; - - -=========================== -log level: log_warnings; error type: user warning; - -107: warning in "error_on_demand": warning - -=========================== -log level: log_warnings; error type: user non-fatal error; - -111: error in "error_on_demand": non-fatal error - -=========================== -log level: log_warnings; error type: cpp exception; - -0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message -121: last checkpoint: error_on_demand() throw runtime_error - -=========================== -log level: log_warnings; error type: system error; - -115: fatal error in "error_on_demand": fatal error - -=========================== -log level: log_all_errors; error type: no error; - - -=========================== -log level: log_all_errors; error type: user message; - - -=========================== -log level: log_all_errors; error type: user warning; - - -=========================== -log level: log_all_errors; error type: user non-fatal error; - -111: error in "error_on_demand": non-fatal error - -=========================== -log level: log_all_errors; error type: cpp exception; - -0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message -121: last checkpoint: error_on_demand() throw runtime_error - -=========================== -log level: log_all_errors; error type: system error; - -115: fatal error in "error_on_demand": fatal error - -=========================== -log level: log_cpp_exception_errors; error type: no error; - - -=========================== -log level: log_cpp_exception_errors; error type: user message; - - -=========================== -log level: log_cpp_exception_errors; error type: user warning; - - -=========================== -log level: log_cpp_exception_errors; error type: user non-fatal error; - - -=========================== -log level: log_cpp_exception_errors; error type: cpp exception; - -0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message -121: last checkpoint: error_on_demand() throw runtime_error - -=========================== -log level: log_cpp_exception_errors; error type: system error; - -115: fatal error in "error_on_demand": fatal error - -=========================== -log level: log_system_errors; error type: no error; - - -=========================== -log level: log_system_errors; error type: user message; - - -=========================== -log level: log_system_errors; error type: user warning; - - -=========================== -log level: log_system_errors; error type: user non-fatal error; - - -=========================== -log level: log_system_errors; error type: cpp exception; - - -=========================== -log level: log_system_errors; error type: system error; - -115: fatal error in "error_on_demand": fatal error - -=========================== -log level: log_fatal_errors; error type: no error; - - -=========================== -log level: log_fatal_errors; error type: user message; - - -=========================== -log level: log_fatal_errors; error type: user warning; - - -=========================== -log level: log_fatal_errors; error type: user non-fatal error; - - -=========================== -log level: log_fatal_errors; error type: cpp exception; - - -=========================== -log level: log_fatal_errors; error type: system error; - -115: fatal error in "error_on_demand": fatal error - -=========================== -log level: log_nothing; error type: no error; - - -=========================== -log level: log_nothing; error type: user message; - - -=========================== -log level: log_nothing; error type: user warning; - - -=========================== -log level: log_nothing; error type: user non-fatal error; - - -=========================== -log level: log_nothing; error type: cpp exception; - - -=========================== -log level: log_nothing; error type: system error; - + +=========================== +log level: log_successful_tests; error type: no error; + +Entering test case "error_on_demand" +99: info: check 'no error' passed +Leaving test case "error_on_demand" + +=========================== +log level: log_successful_tests; error type: user message; + +Entering test case "error_on_demand" +message +Test case error_on_demand doesn't include any assertions +Leaving test case "error_on_demand" + +=========================== +log level: log_successful_tests; error type: user warning; + +Entering test case "error_on_demand" +107: warning in "error_on_demand": warning +Test case error_on_demand doesn't include any assertions +Leaving test case "error_on_demand" + +=========================== +log level: log_successful_tests; error type: user non-fatal error; + +Entering test case "error_on_demand" +111: error in "error_on_demand": non-fatal error +Leaving test case "error_on_demand" + +=========================== +log level: log_successful_tests; error type: cpp exception; + +Entering test case "error_on_demand" +0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message +121: last checkpoint: error_on_demand() throw runtime_error +Leaving test case "error_on_demand" + +=========================== +log level: log_successful_tests; error type: system error; + +Entering test case "error_on_demand" +115: fatal error in "error_on_demand": fatal error +Leaving test case "error_on_demand" + +=========================== +log level: log_test_suites; error type: no error; + +Entering test case "error_on_demand" +Leaving test case "error_on_demand" + +=========================== +log level: log_test_suites; error type: user message; + +Entering test case "error_on_demand" +message +Test case error_on_demand doesn't include any assertions +Leaving test case "error_on_demand" + +=========================== +log level: log_test_suites; error type: user warning; + +Entering test case "error_on_demand" +107: warning in "error_on_demand": warning +Test case error_on_demand doesn't include any assertions +Leaving test case "error_on_demand" + +=========================== +log level: log_test_suites; error type: user non-fatal error; + +Entering test case "error_on_demand" +111: error in "error_on_demand": non-fatal error +Leaving test case "error_on_demand" + +=========================== +log level: log_test_suites; error type: cpp exception; + +Entering test case "error_on_demand" +0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message +121: last checkpoint: error_on_demand() throw runtime_error +Leaving test case "error_on_demand" + +=========================== +log level: log_test_suites; error type: system error; + +Entering test case "error_on_demand" +115: fatal error in "error_on_demand": fatal error +Leaving test case "error_on_demand" + +=========================== +log level: log_messages; error type: no error; + + +=========================== +log level: log_messages; error type: user message; + +message +Test case error_on_demand doesn't include any assertions + +=========================== +log level: log_messages; error type: user warning; + +107: warning in "error_on_demand": warning +Test case error_on_demand doesn't include any assertions + +=========================== +log level: log_messages; error type: user non-fatal error; + +111: error in "error_on_demand": non-fatal error + +=========================== +log level: log_messages; error type: cpp exception; + +0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message +121: last checkpoint: error_on_demand() throw runtime_error + +=========================== +log level: log_messages; error type: system error; + +115: fatal error in "error_on_demand": fatal error + +=========================== +log level: log_warnings; error type: no error; + + +=========================== +log level: log_warnings; error type: user message; + + +=========================== +log level: log_warnings; error type: user warning; + +107: warning in "error_on_demand": warning + +=========================== +log level: log_warnings; error type: user non-fatal error; + +111: error in "error_on_demand": non-fatal error + +=========================== +log level: log_warnings; error type: cpp exception; + +0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message +121: last checkpoint: error_on_demand() throw runtime_error + +=========================== +log level: log_warnings; error type: system error; + +115: fatal error in "error_on_demand": fatal error + +=========================== +log level: log_all_errors; error type: no error; + + +=========================== +log level: log_all_errors; error type: user message; + + +=========================== +log level: log_all_errors; error type: user warning; + + +=========================== +log level: log_all_errors; error type: user non-fatal error; + +111: error in "error_on_demand": non-fatal error + +=========================== +log level: log_all_errors; error type: cpp exception; + +0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message +121: last checkpoint: error_on_demand() throw runtime_error + +=========================== +log level: log_all_errors; error type: system error; + +115: fatal error in "error_on_demand": fatal error + +=========================== +log level: log_cpp_exception_errors; error type: no error; + + +=========================== +log level: log_cpp_exception_errors; error type: user message; + + +=========================== +log level: log_cpp_exception_errors; error type: user warning; + + +=========================== +log level: log_cpp_exception_errors; error type: user non-fatal error; + + +=========================== +log level: log_cpp_exception_errors; error type: cpp exception; + +0: fatal error in "error_on_demand": std::runtime_error: test std::runtime error what() message +121: last checkpoint: error_on_demand() throw runtime_error + +=========================== +log level: log_cpp_exception_errors; error type: system error; + +115: fatal error in "error_on_demand": fatal error + +=========================== +log level: log_system_errors; error type: no error; + + +=========================== +log level: log_system_errors; error type: user message; + + +=========================== +log level: log_system_errors; error type: user warning; + + +=========================== +log level: log_system_errors; error type: user non-fatal error; + + +=========================== +log level: log_system_errors; error type: cpp exception; + + +=========================== +log level: log_system_errors; error type: system error; + +115: fatal error in "error_on_demand": fatal error + +=========================== +log level: log_fatal_errors; error type: no error; + + +=========================== +log level: log_fatal_errors; error type: user message; + + +=========================== +log level: log_fatal_errors; error type: user warning; + + +=========================== +log level: log_fatal_errors; error type: user non-fatal error; + + +=========================== +log level: log_fatal_errors; error type: cpp exception; + + +=========================== +log level: log_fatal_errors; error type: system error; + +115: fatal error in "error_on_demand": fatal error + +=========================== +log level: log_nothing; error type: no error; + + +=========================== +log level: log_nothing; error type: user message; + + +=========================== +log level: log_nothing; error type: user warning; + + +=========================== +log level: log_nothing; error type: user non-fatal error; + + +=========================== +log level: log_nothing; error type: cpp exception; + + +=========================== +log level: log_nothing; error type: system error; + diff --git a/test/test_files/ifstream_line_iterator.tst1 b/test/test_files/ifstream_line_iterator.tst1 index 89910754..eb555fae 100644 --- a/test/test_files/ifstream_line_iterator.tst1 +++ b/test/test_files/ifstream_line_iterator.tst1 @@ -1,4 +1,4 @@ -acv ffg - - +acv ffg + + 1 \ No newline at end of file diff --git a/test/test_files/ifstream_line_iterator.tst2 b/test/test_files/ifstream_line_iterator.tst2 index ce33489b..b979210c 100644 --- a/test/test_files/ifstream_line_iterator.tst2 +++ b/test/test_files/ifstream_line_iterator.tst2 @@ -1,4 +1,4 @@ -{ abc d } -{ d - dsfg -} +{ abc d } +{ d + dsfg +} diff --git a/test/test_files/par_alias1.cfg b/test/test_files/par_alias1.cfg old mode 100755 new mode 100644 index 47fb489b..26ac5b81 --- a/test/test_files/par_alias1.cfg +++ b/test/test_files/par_alias1.cfg @@ -1,9 +1,9 @@ - -par2 NS1::par1 -par3 NS2::NS3::par1 - -par5 NS2::NS3::par1 - -par4 NS2::NS4::par1 - - + +par2 NS1::par1 +par3 NS2::NS3::par1 + +par5 NS2::NS3::par1 + +par4 NS2::NS4::par1 + + diff --git a/test/test_files/par_alias2.cfg b/test/test_files/par_alias2.cfg old mode 100755 new mode 100644 index abd024b9..b619680f --- a/test/test_files/par_alias2.cfg +++ b/test/test_files/par_alias2.cfg @@ -1,4 +1,4 @@ -#not exitent parameter -par1 BLA::bla - - +#not exitent parameter +par1 BLA::bla + + diff --git a/test/test_files/par_alias3.cfg b/test/test_files/par_alias3.cfg old mode 100755 new mode 100644 index bb318192..13525fc7 --- a/test/test_files/par_alias3.cfg +++ b/test/test_files/par_alias3.cfg @@ -1,4 +1,4 @@ -# unexpected token -par1 NS1::par1 par2 - - +# unexpected token +par1 NS1::par1 par2 + + diff --git a/test/test_files/result_report_test.pattern b/test/test_files/result_report_test.pattern index db3778de..d5553fed 100644 --- a/test/test_files/result_report_test.pattern +++ b/test/test_files/result_report_test.pattern @@ -1,138 +1,138 @@ - -*** No errors detected -************************************************************************* - -Test suite "1 test cases inside" passed with: - 1 test case out of 1 passed - -************************************************************************* - -Test suite "1 test cases inside" passed with: - 1 test case out of 1 passed - - Test case "good_foo" passed - -************************************************************************* -************************************************************************* -************************************************************************* -************************************************************************* - -*** No errors detected -************************************************************************* - -Test suite "1 bad test case inside" passed with: - 1 assertion out of 1 failed - 1 failure expected - 1 test case out of 1 passed - -************************************************************************* - -Test suite "1 bad test case inside" passed with: - 1 assertion out of 1 failed - 1 failure expected - 1 test case out of 1 passed - - Test case "bad_foo" passed with: - 1 assertion out of 1 failed - 1 failure expected - -************************************************************************* -************************************************************************* -************************************************************************* -************************************************************************* - -*** No errors detected -************************************************************************* - -Test suite "2 test cases inside" passed with: - 1 assertion out of 1 failed - 1 failure expected - 2 test cases out of 2 passed - -************************************************************************* - -Test suite "2 test cases inside" passed with: - 1 assertion out of 1 failed - 1 failure expected - 2 test cases out of 2 passed - - Test case "good_foo" passed - - Test case "bad_foo" passed with: - 1 assertion out of 1 failed - 1 failure expected - -************************************************************************* -************************************************************************* -************************************************************************* -************************************************************************* - -*** 2 failures detected in test suite "3 test cases inside" -************************************************************************* - -Test suite "3 test cases inside" failed with: - 2 assertions out of 2 failed - 2 test cases out of 3 failed - 1 test case out of 3 skipped - 1 test case out of 3 aborted - -************************************************************************* - -Test suite "3 test cases inside" failed with: - 2 assertions out of 2 failed - 2 test cases out of 3 failed - 1 test case out of 3 skipped - 1 test case out of 3 aborted - - Test case "bad_foo" failed with: - 1 assertion out of 1 failed - - Test case "very_bad_foo" aborted with: - 1 assertion out of 1 failed - - Test case "bad_foo" skipped due to failed dependancy -************************************************************************* -************************************************************************* -************************************************************************* -************************************************************************* - -*** No errors detected -************************************************************************* - -Test suite "Fake Test Suite Hierarchy" passed with: - 1 assertion out of 1 failed - 1 failure expected - 3 test cases out of 6 passed - 3 test cases out of 6 skipped - -************************************************************************* - -Test suite "Fake Test Suite Hierarchy" passed with: - 1 assertion out of 1 failed - 1 failure expected - 3 test cases out of 6 passed - 3 test cases out of 6 skipped - - Test suite "0 test cases inside" passed - - Test suite "1 test cases inside" passed with: - 1 test case out of 1 passed - - Test case "good_foo" passed - - Test suite "2 test cases inside" passed with: - 1 assertion out of 1 failed - 1 failure expected - 2 test cases out of 2 passed - - Test case "good_foo" passed - - Test case "bad_foo" passed with: - 1 assertion out of 1 failed - 1 failure expected - - Test suite "3 test cases inside" skipped due to failed dependancy -************************************************************************* -************************************************************************* -************************************************************************* -************************************************************************* + +*** No errors detected +************************************************************************* + +Test suite "1 test cases inside" passed with: + 1 test case out of 1 passed + +************************************************************************* + +Test suite "1 test cases inside" passed with: + 1 test case out of 1 passed + + Test case "good_foo" passed + +************************************************************************* +************************************************************************* +************************************************************************* +************************************************************************* + +*** No errors detected +************************************************************************* + +Test suite "1 bad test case inside" passed with: + 1 assertion out of 1 failed + 1 failure expected + 1 test case out of 1 passed + +************************************************************************* + +Test suite "1 bad test case inside" passed with: + 1 assertion out of 1 failed + 1 failure expected + 1 test case out of 1 passed + + Test case "bad_foo" passed with: + 1 assertion out of 1 failed + 1 failure expected + +************************************************************************* +************************************************************************* +************************************************************************* +************************************************************************* + +*** No errors detected +************************************************************************* + +Test suite "2 test cases inside" passed with: + 1 assertion out of 1 failed + 1 failure expected + 2 test cases out of 2 passed + +************************************************************************* + +Test suite "2 test cases inside" passed with: + 1 assertion out of 1 failed + 1 failure expected + 2 test cases out of 2 passed + + Test case "good_foo" passed + + Test case "bad_foo" passed with: + 1 assertion out of 1 failed + 1 failure expected + +************************************************************************* +************************************************************************* +************************************************************************* +************************************************************************* + +*** 2 failures detected in test suite "3 test cases inside" +************************************************************************* + +Test suite "3 test cases inside" failed with: + 2 assertions out of 2 failed + 2 test cases out of 3 failed + 1 test case out of 3 skipped + 1 test case out of 3 aborted + +************************************************************************* + +Test suite "3 test cases inside" failed with: + 2 assertions out of 2 failed + 2 test cases out of 3 failed + 1 test case out of 3 skipped + 1 test case out of 3 aborted + + Test case "bad_foo" failed with: + 1 assertion out of 1 failed + + Test case "very_bad_foo" aborted with: + 1 assertion out of 1 failed + + Test case "bad_foo" skipped due to failed dependancy +************************************************************************* +************************************************************************* +************************************************************************* +************************************************************************* + +*** No errors detected +************************************************************************* + +Test suite "Fake Test Suite Hierarchy" passed with: + 1 assertion out of 1 failed + 1 failure expected + 3 test cases out of 6 passed + 3 test cases out of 6 skipped + +************************************************************************* + +Test suite "Fake Test Suite Hierarchy" passed with: + 1 assertion out of 1 failed + 1 failure expected + 3 test cases out of 6 passed + 3 test cases out of 6 skipped + + Test suite "0 test cases inside" passed + + Test suite "1 test cases inside" passed with: + 1 test case out of 1 passed + + Test case "good_foo" passed + + Test suite "2 test cases inside" passed with: + 1 assertion out of 1 failed + 1 failure expected + 2 test cases out of 2 passed + + Test case "good_foo" passed + + Test case "bad_foo" passed with: + 1 assertion out of 1 failed + 1 failure expected + + Test suite "3 test cases inside" skipped due to failed dependancy +************************************************************************* +************************************************************************* +************************************************************************* +************************************************************************* diff --git a/test/test_files/test_broken_line.cfg b/test/test_files/test_broken_line.cfg old mode 100755 new mode 100644 index 16ae1eaf..15ef0bda --- a/test/test_files/test_broken_line.cfg +++ b/test/test_files/test_broken_line.cfg @@ -1,33 +1,33 @@ -qwer\ -ty - -123 \\ -11 - -# ery \ - 23 - -xcv \ dfgsd -qwe - -1 \ - - 23 - -34 \ -34 - -a \ -b \ -c \ -d \ -e \ -f - -as \ -# test -sa - -as\ - -we +qwer\ +ty + +123 \\ +11 + +# ery \ + 23 + +xcv \ dfgsd +qwe + +1 \ + + 23 + +34 \ +34 + +a \ +b \ +c \ +d \ +e \ +f + +as \ +# test +sa + +as\ + +we diff --git a/test/test_files/test_comments_and_blanks.cfg b/test/test_files/test_comments_and_blanks.cfg old mode 100755 new mode 100644 index f4caa7cb..6d2c4824 --- a/test/test_files/test_comments_and_blanks.cfg +++ b/test/test_files/test_comments_and_blanks.cfg @@ -1,29 +1,29 @@ - - - - - # 000 -1 -2 # 2 -# 1111 -# 234 -#rtyet -#erty\ -4 -3 - - - - - - - - -##################### ######################### 4444 - - - - - - - + + + + + # 000 +1 +2 # 2 +# 1111 +# 234 +#rtyet +#erty\ +4 +3 + + + + + + + + +##################### ######################### 4444 + + + + + + + diff --git a/test/test_files/test_constructor.cfg b/test/test_files/test_constructor.cfg old mode 100755 new mode 100644 index ce33489b..b979210c --- a/test/test_files/test_constructor.cfg +++ b/test/test_files/test_constructor.cfg @@ -1,4 +1,4 @@ -{ abc d } -{ d - dsfg -} +{ abc d } +{ d + dsfg +} diff --git a/test/test_files/test_define.cfg b/test/test_files/test_define.cfg old mode 100755 new mode 100644 index 5bc14654..2c5c4f97 --- a/test/test_files/test_define.cfg +++ b/test/test_files/test_define.cfg @@ -1,13 +1,13 @@ -$define AAA 123 -$define BBB $AAA$$AAA$ - -a$BBB$ -1$AAA$2 - -$define V $TEST_\ -MACRO$=11 -a $V$ - -$define AAA abc - +$define AAA 123 +$define BBB $AAA$$AAA$ + +a$BBB$ +1$AAA$2 + +$define V $TEST_\ +MACRO$=11 +a $V$ + +$define AAA abc + 1$AAA$2 \ No newline at end of file diff --git a/test/test_files/test_fp_comparisons.pattern b/test/test_files/test_fp_comparisons.pattern index 2279139d..d66124ae 100644 --- a/test/test_files/test_fp_comparisons.pattern +++ b/test/test_files/test_fp_comparisons.pattern @@ -1,30 +1,30 @@ -152: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0} and fp2{1e-20} exceeds 1e-05% -153: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0} and fp2{1e-30} exceeds 1e-05% -154: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0} and fp2{-1e-10} exceeds 0.1% -155: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0.123456} and fp2{0.123457} exceeds 0.0001% -159: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0.123456} and fp2{-0.123457} exceeds 0.001% -163: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1.23456e-10} and fp2{1.23457e-11} exceeds 0.001% -164: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1.111e-10} and fp2{1.112e-10} exceeds 0.08999% -165: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1.112e-10} and fp2{1.111e-10} exceeds 0.08999% -170: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1} and fp2{1.0002} exceeds 0.011% -152: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0} and fp2{1e-20} exceeds 1e-05% -153: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0} and fp2{1e-30} exceeds 1e-05% -154: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0} and fp2{-1e-10} exceeds 0.1% -155: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0.123456} and fp2{0.123457} exceeds 0.0001% -159: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0.123456} and fp2{-0.123457} exceeds 0.001% -163: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1.23456e-10} and fp2{1.23457e-11} exceeds 0.001% -164: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1.111e-10} and fp2{1.112e-10} exceeds 0.08999% -165: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1.112e-10} and fp2{1.111e-10} exceeds 0.08999% -170: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1} and fp2{1.0002} exceeds 0.011% -152: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0} and fp2{1e-20} exceeds 1e-05% -153: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0} and fp2{1e-30} exceeds 1e-05% -154: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0} and fp2{-1e-10} exceeds 0.1% -155: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0.123456} and fp2{0.123457} exceeds 0.0001% -159: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0.123456} and fp2{-0.123457} exceeds 0.001% -163: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1.23456e-10} and fp2{1.23457e-11} exceeds 0.001% -164: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1.111e-10} and fp2{1.112e-10} exceeds 0.08999% -165: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1.112e-10} and fp2{1.111e-10} exceeds 0.08999% -170: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1} and fp2{1.0002} exceeds 0.011% -204: error in "test_CHECK_SMALL": absolute value of 1e-6{1e-06} exceeds 1e-07 -219: error in "test_close_at_tolerance": difference between fp1{1.00000001} and fp2{1.00000002} exceeds 1e-06% -226: error in "test_close_at_tolerance": check close_at_tolerance( epsilon )( fp1, fp2 ) failed for ( 1.23456e-10, 1.23457e-10 ) +152: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0} and fp2{1e-20} exceeds 1e-05% +153: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0} and fp2{1e-30} exceeds 1e-05% +154: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0} and fp2{-1e-10} exceeds 0.1% +155: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0.123456} and fp2{0.123457} exceeds 0.0001% +159: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0.123456} and fp2{-0.123457} exceeds 0.001% +163: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1.23456e-10} and fp2{1.23457e-11} exceeds 0.001% +164: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1.111e-10} and fp2{1.112e-10} exceeds 0.08999% +165: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1.112e-10} and fp2{1.111e-10} exceeds 0.08999% +170: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1} and fp2{1.0002} exceeds 0.011% +152: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0} and fp2{1e-20} exceeds 1e-05% +153: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0} and fp2{1e-30} exceeds 1e-05% +154: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0} and fp2{-1e-10} exceeds 0.1% +155: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0.123456} and fp2{0.123457} exceeds 0.0001% +159: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0.123456} and fp2{-0.123457} exceeds 0.001% +163: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1.23456e-10} and fp2{1.23457e-11} exceeds 0.001% +164: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1.111e-10} and fp2{1.112e-10} exceeds 0.08999% +165: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1.112e-10} and fp2{1.111e-10} exceeds 0.08999% +170: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1} and fp2{1.0002} exceeds 0.011% +152: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0} and fp2{1e-20} exceeds 1e-05% +153: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0} and fp2{1e-30} exceeds 1e-05% +154: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0} and fp2{-1e-10} exceeds 0.1% +155: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0.123456} and fp2{0.123457} exceeds 0.0001% +159: error in "test_BOOST_CHECK_CLOSE": difference between fp1{0.123456} and fp2{-0.123457} exceeds 0.001% +163: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1.23456e-10} and fp2{1.23457e-11} exceeds 0.001% +164: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1.111e-10} and fp2{1.112e-10} exceeds 0.08999% +165: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1.112e-10} and fp2{1.111e-10} exceeds 0.08999% +170: error in "test_BOOST_CHECK_CLOSE": difference between fp1{1} and fp2{1.0002} exceeds 0.011% +204: error in "test_CHECK_SMALL": absolute value of 1e-6{1e-06} exceeds 1e-07 +219: error in "test_close_at_tolerance": difference between fp1{1.00000001} and fp2{1.00000002} exceeds 1e-06% +226: error in "test_close_at_tolerance": check close_at_tolerance( epsilon )( fp1, fp2 ) failed for ( 1.23456e-10, 1.23457e-10 ) diff --git a/test/test_files/test_ifdef.cfg b/test/test_files/test_ifdef.cfg old mode 100755 new mode 100644 index 0e1f520f..fe91e19c --- a/test/test_files/test_ifdef.cfg +++ b/test/test_files/test_ifdef.cfg @@ -1,37 +1,37 @@ -$define a aa -$ifdef a -1 -$else -2 -$endif - -$ifdef A -1 -$else -2 -$endif - -$ifndef A -1 -$else -2 -$endif - -$ifdef a -$define V abc -$else -$define V cba -$endif - -1$V$ - -$ifdef a -$ifdef V -a -$else -b -$endif -$else -c -$endif - +$define a aa +$ifdef a +1 +$else +2 +$endif + +$ifdef A +1 +$else +2 +$endif + +$ifndef A +1 +$else +2 +$endif + +$ifdef a +$define V abc +$else +$define V cba +$endif + +1$V$ + +$ifdef a +$ifdef V +a +$else +b +$endif +$else +c +$endif + diff --git a/test/test_files/test_ifdef2.cfg b/test/test_files/test_ifdef2.cfg old mode 100755 new mode 100644 index 699aed53..47d1d64a --- a/test/test_files/test_ifdef2.cfg +++ b/test/test_files/test_ifdef2.cfg @@ -1,2 +1,2 @@ -$ifdef -$else +$ifdef +$else diff --git a/test/test_files/test_ifdef3.cfg b/test/test_files/test_ifdef3.cfg old mode 100755 new mode 100644 index f5e780f9..fb0c9ac8 --- a/test/test_files/test_ifdef3.cfg +++ b/test/test_files/test_ifdef3.cfg @@ -1,3 +1,3 @@ -$else -$endif - +$else +$endif + diff --git a/test/test_files/test_ifdef4.cfg b/test/test_files/test_ifdef4.cfg old mode 100755 new mode 100644 index 79fe513d..93244ff4 --- a/test/test_files/test_ifdef4.cfg +++ b/test/test_files/test_ifdef4.cfg @@ -1,2 +1,2 @@ -$endif - +$endif + diff --git a/test/test_files/test_include1.cfg b/test/test_files/test_include1.cfg old mode 100755 new mode 100644 index a3a86d9e..61c1dfc4 --- a/test/test_files/test_include1.cfg +++ b/test/test_files/test_include1.cfg @@ -1,4 +1,4 @@ -a -$include test_include1_include1.cfg - +a +$include test_include1_include1.cfg + b \ No newline at end of file diff --git a/test/test_files/test_include1_include1.cfg b/test/test_files/test_include1_include1.cfg old mode 100755 new mode 100644 index f2ad6c76..764d69f6 --- a/test/test_files/test_include1_include1.cfg +++ b/test/test_files/test_include1_include1.cfg @@ -1 +1 @@ -c +c diff --git a/test/test_files/test_include2.cfg b/test/test_files/test_include2.cfg old mode 100755 new mode 100644 index f0637498..4e611e9d --- a/test/test_files/test_include2.cfg +++ b/test/test_files/test_include2.cfg @@ -1,4 +1,4 @@ -1 -$include test_include1.cfg# again - +1 +$include test_include1.cfg# again + 2 \ No newline at end of file diff --git a/test/test_files/test_include3.cfg b/test/test_files/test_include3.cfg old mode 100755 new mode 100644 index 0ff24286..50e49788 --- a/test/test_files/test_include3.cfg +++ b/test/test_files/test_include3.cfg @@ -1,3 +1,3 @@ -$include \# broken -test_include1_include1.cfg -$include test_include1_include1.cfg# again +$include \# broken +test_include1_include1.cfg +$include test_include1_include1.cfg# again diff --git a/test/test_files/test_incomplete_broken_line.cfg b/test/test_files/test_incomplete_broken_line.cfg old mode 100755 new mode 100644 index 6bc83a6c..e967bc12 --- a/test/test_files/test_incomplete_broken_line.cfg +++ b/test/test_files/test_incomplete_broken_line.cfg @@ -1 +1 @@ -a\ +a\ diff --git a/test/test_files/test_macro_def1.cfg b/test/test_files/test_macro_def1.cfg old mode 100755 new mode 100644 index 5aa9e80b..c25431e6 --- a/test/test_files/test_macro_def1.cfg +++ b/test/test_files/test_macro_def1.cfg @@ -1,9 +1,9 @@ -$define AAA 123 -$define BBB $AAA$$AAA$ - -a$BBB$ -1$AAA$2 - -$define V $TEST_\ -MACRO$=11 +$define AAA 123 +$define BBB $AAA$$AAA$ + +a$BBB$ +1$AAA$2 + +$define V $TEST_\ +MACRO$=11 a $V$ \ No newline at end of file diff --git a/test/test_files/test_macro_subst4.cfg b/test/test_files/test_macro_subst4.cfg old mode 100755 new mode 100644 index d398e566..a6116405 --- a/test/test_files/test_macro_subst4.cfg +++ b/test/test_files/test_macro_subst4.cfg @@ -1,2 +1,2 @@ -$define AA bb +$define AA bb a$AA$ \ No newline at end of file diff --git a/test/test_files/test_multipart_value1.cfg b/test/test_files/test_multipart_value1.cfg old mode 100755 new mode 100644 index 75a89923..8b963ee4 --- a/test/test_files/test_multipart_value1.cfg +++ b/test/test_files/test_multipart_value1.cfg @@ -1 +1 @@ -a " +a " diff --git a/test/test_files/test_multipart_value10.cfg b/test/test_files/test_multipart_value10.cfg old mode 100755 new mode 100644 index d3d80ec6..c2186593 --- a/test/test_files/test_multipart_value10.cfg +++ b/test/test_files/test_multipart_value10.cfg @@ -1 +1 @@ -a abc"def +a abc"def diff --git a/test/test_files/test_multipart_value11.cfg b/test/test_files/test_multipart_value11.cfg old mode 100755 new mode 100644 index 8f65a6a0..c6e03f08 --- a/test/test_files/test_multipart_value11.cfg +++ b/test/test_files/test_multipart_value11.cfg @@ -1 +1 @@ -a "abc" 123 "def" +a "abc" 123 "def" diff --git a/test/test_files/test_multipart_value12.cfg b/test/test_files/test_multipart_value12.cfg old mode 100755 new mode 100644 index bf35c17c..e5682109 --- a/test/test_files/test_multipart_value12.cfg +++ b/test/test_files/test_multipart_value12.cfg @@ -1 +1 @@ -a abc " 123 " def +a abc " 123 " def diff --git a/test/test_files/test_multipart_value13.cfg b/test/test_files/test_multipart_value13.cfg old mode 100755 new mode 100644 index b8bb66de..ab1e786c --- a/test/test_files/test_multipart_value13.cfg +++ b/test/test_files/test_multipart_value13.cfg @@ -1 +1 @@ -a \"abc\" +a \"abc\" diff --git a/test/test_files/test_multipart_value2.cfg b/test/test_files/test_multipart_value2.cfg old mode 100755 new mode 100644 index 4456e2a4..1d950870 --- a/test/test_files/test_multipart_value2.cfg +++ b/test/test_files/test_multipart_value2.cfg @@ -1 +1 @@ -a "" +a "" diff --git a/test/test_files/test_multipart_value3.cfg b/test/test_files/test_multipart_value3.cfg old mode 100755 new mode 100644 index 5ff7eebe..04b0d8d1 --- a/test/test_files/test_multipart_value3.cfg +++ b/test/test_files/test_multipart_value3.cfg @@ -1 +1 @@ -a """ +a """ diff --git a/test/test_files/test_multipart_value4.cfg b/test/test_files/test_multipart_value4.cfg old mode 100755 new mode 100644 index a80d109e..f8c7c3d6 --- a/test/test_files/test_multipart_value4.cfg +++ b/test/test_files/test_multipart_value4.cfg @@ -1 +1 @@ -a "\"" +a "\"" diff --git a/test/test_files/test_multipart_value5.cfg b/test/test_files/test_multipart_value5.cfg old mode 100755 new mode 100644 index 1b8938a1..adcf74a5 --- a/test/test_files/test_multipart_value5.cfg +++ b/test/test_files/test_multipart_value5.cfg @@ -1 +1 @@ -a abc"" +a abc"" diff --git a/test/test_files/test_multipart_value6.cfg b/test/test_files/test_multipart_value6.cfg old mode 100755 new mode 100644 index be04b55e..f4a0fe62 --- a/test/test_files/test_multipart_value6.cfg +++ b/test/test_files/test_multipart_value6.cfg @@ -1 +1 @@ -a abc" +a abc" diff --git a/test/test_files/test_multipart_value7.cfg b/test/test_files/test_multipart_value7.cfg old mode 100755 new mode 100644 index 94f1faa5..488dfef1 --- a/test/test_files/test_multipart_value7.cfg +++ b/test/test_files/test_multipart_value7.cfg @@ -1 +1 @@ -a "abc +a "abc diff --git a/test/test_files/test_multipart_value8.cfg b/test/test_files/test_multipart_value8.cfg old mode 100755 new mode 100644 index dfca7751..672e5734 --- a/test/test_files/test_multipart_value8.cfg +++ b/test/test_files/test_multipart_value8.cfg @@ -1 +1 @@ -a "abc" "def" +a "abc" "def" diff --git a/test/test_files/test_multipart_value9.cfg b/test/test_files/test_multipart_value9.cfg old mode 100755 new mode 100644 index 3d43260d..81b7226c --- a/test/test_files/test_multipart_value9.cfg +++ b/test/test_files/test_multipart_value9.cfg @@ -1,3 +1,3 @@ -a "abc" \ - "def" \ - "123" +a "abc" \ + "def" \ + "123" diff --git a/test/test_files/test_tools_test.pattern b/test/test_files/test_tools_test.pattern index 752a31d6..64394541 100644 --- a/test/test_files/test_tools_test.pattern +++ b/test/test_files/test_tools_test.pattern @@ -1,71 +1,70 @@ -131: warning in "test_BOOST_WARN": condition sizeof(int) == sizeof(short) is not satisfied -134: info: check sizeof(unsigned char) == sizeof(char) passed -156: error in "test_BOOST_CHECK": check false failed -157: error in "test_BOOST_CHECK": check 1==2 failed -158: error in "test_BOOST_CHECK": check i==1 failed -161: info: check i==2 passed -168: error in "test_BOOST_REQUIRE": not aborted -170: fatal error in "test_BOOST_REQUIRE": critical check false failed -174: fatal error in "test_BOOST_REQUIRE": critical check j > 5 failed -177: info: check j < 5 passed -177: error in "test_BOOST_REQUIRE": not aborted -191: info: check 'object size 33 is too small' passed -208: error in "test_BOOST_CHECK_MESSAGE": Well, may be that what I believe in -210: error in "test_BOOST_CHECK_MESSAGE": Checking predicate failed. Some explanation -213: info: check 'Could it fail?' passed -218: error in "test_BOOST_CHECK_MESSAGE": Comparing 1 and 2: some explanation -225: fatal error in "test_BOOST_REQUIRE_MESSAGE": Here we should stop -228: info: check 'That's OK' passed -228: error in "test_BOOST_REQUIRE_MESSAGE": not aborted -235: error in "test_BOOST_ERROR": Fail to miss an error -242: fatal error in "test_BOOST_FAIL": No! No! Show must go on. -258: error in "test_BOOST_CHECK_THROW": exception my_exception is expected -261: warning in "test_BOOST_CHECK_THROW": exception my_exception is expected -264: fatal error in "test_BOOST_CHECK_THROW": exception my_exception is expected -267: info: check 'exception my_exception is caught' passed -274: error in "test_BOOST_CHECK_EXCEPTION": incorrect exception my_exception is caught -277: info: check 'incorrect exception my_exception is caught' passed -287: error in "test_BOOST_CHECK_NO_THROW": exception thrown by throw my_exception() -333: error in "test_BOOST_CHECK_EQUAL": check i == j failed [1 != 2] -339: error in "test_BOOST_CHECK_EQUAL": check str1 == str2 failed [test1 != test12] -342: error in "test_BOOST_CHECK_EQUAL": check i+1 == j failed [4 != 2] -345: info: check str1 == str3+1 passed -354: fatal error in "test_BOOST_CHECK_EQUAL": critical check str1 == str2 failed [test != null string] -360: warning in "test_BOOST_CHECK_EQUAL": condition b1 == b2 is not satisfied [B(1) != B(2)] -366: error in "test_BOOST_CHECK_EQUAL": check c1 == c3 failed [C(0,100) != C(1,102)]. Index mismatch -367: error in "test_BOOST_CHECK_EQUAL": check c1 == c2 failed [C(0,100) != C(0,101)]. Id mismatch -371: error in "test_BOOST_CHECK_EQUAL": check ch1 == ch2 failed [0xfffffffe != 0xfffffffd] -382: error in "test_BOOST_CHECK_LOGICAL_EXPR": check ++i != j failed [2 == 2] -384: error in "test_BOOST_CHECK_LOGICAL_EXPR": check i < j failed [2 >= 2] -385: error in "test_BOOST_CHECK_LOGICAL_EXPR": check i > j failed [2 <= 2] -392: error in "test_BOOST_CHECK_LOGICAL_EXPR": check i <= j failed [3 > 2] -393: error in "test_BOOST_CHECK_LOGICAL_EXPR": check j >= i failed [2 < 3] -398: error in "test_BOOST_CHECK_LOGICAL_EXPR": check str1 != str2 failed [test1 == test1] -428: error in "test_BOOST_CHECK_PREDICATE": check is_even( i ) failed for ( 17 ) -431: error in "test_BOOST_CHECK_PREDICATE": check not_equal_to()( i, 17 ) failed for ( 17, 17 ) -437: warning in "test_BOOST_CHECK_PREDICATE": condition moo( 12, i, j ) is not satisfied for ( 12, 17, 15 ) -445: error in "test_BOOST_CHECK_PREDICATE": check compare_lists( l1, l2 ) failed for ( , ). Different sizes [2!=0] -456: error in "test_BOOST_REQUIRE_PREDICATE": not aborted -458: fatal error in "test_BOOST_REQUIRE_PREDICATE": critical check less_equal()( arg2, arg1 ) failed for ( 2, 1 ) -479: error in "test_BOOST_CHECK_EQUAL_COLLECTIONS": check { testlist.begin(), testlist.end() } == { pattern, pattern+7 } failed. -Mismatch in a position 2: 4 != 3 -Mismatch in a position 5: 7 != 6 -480: error in "test_BOOST_CHECK_EQUAL_COLLECTIONS": check { testlist.begin(), testlist.end() } == { pattern, pattern+2 } failed. -Collections size mismatch: 7 != 2 -489: error in "test_BOOST_CHECK_BITWISE_EQUAL": check (char)0x06 =.= (char)0x16 failed. -Mismatch in a position 4 -492: warning in "test_BOOST_CHECK_BITWISE_EQUAL": condition (char)0x26 =.= (char)0x04 is not satisfied. -Mismatch in a position 1 -Mismatch in a position 5 -495: fatal error in "test_BOOST_CHECK_BITWISE_EQUAL": critical check (char)0x26 =.= (int)0x26 failed. -Operands bit sizes mismatch: 8 != 32 -still testing -1+1=2 -2+2=4 -struct A -0x14 - 20 -0: fatal error in "test_BOOST_TEST_CHECKPOINT": C string: some error -530: last checkpoint: Going to do a silly things -0: fatal error in "test_BOOST_TEST_PASSPOINT": unknown type -541: last checkpoint +131: warning in "test_BOOST_WARN": condition sizeof(int) == sizeof(short) is not satisfied +134: info: check sizeof(unsigned char) == sizeof(char) passed +156: error in "test_BOOST_CHECK": check false failed +157: error in "test_BOOST_CHECK": check 1==2 failed +158: error in "test_BOOST_CHECK": check i==1 failed +161: info: check i==2 passed +168: error in "test_BOOST_REQUIRE": not aborted +170: fatal error in "test_BOOST_REQUIRE": critical check false failed +174: fatal error in "test_BOOST_REQUIRE": critical check j > 5 failed +177: info: check j < 5 passed +177: error in "test_BOOST_REQUIRE": not aborted +191: info: check 'object size 33 is too small' passed +208: error in "test_BOOST_CHECK_MESSAGE": Well, may be that what I believe in +210: error in "test_BOOST_CHECK_MESSAGE": Checking predicate failed. Some explanation +213: info: check 'Could it fail?' passed +220: fatal error in "test_BOOST_REQUIRE_MESSAGE": Here we should stop +223: info: check 'That's OK' passed +223: error in "test_BOOST_REQUIRE_MESSAGE": not aborted +230: error in "test_BOOST_ERROR": Fail to miss an error +237: fatal error in "test_BOOST_FAIL": No! No! Show must go on. +253: error in "test_BOOST_CHECK_THROW": exception my_exception is expected +256: warning in "test_BOOST_CHECK_THROW": exception my_exception is expected +259: fatal error in "test_BOOST_CHECK_THROW": exception my_exception is expected +262: info: check 'exception my_exception is caught' passed +269: error in "test_BOOST_CHECK_EXCEPTION": incorrect exception my_exception is caught +272: info: check 'incorrect exception my_exception is caught' passed +282: error in "test_BOOST_CHECK_NO_THROW": exception thrown by throw my_exception() +328: error in "test_BOOST_CHECK_EQUAL": check i == j failed [1 != 2] +334: error in "test_BOOST_CHECK_EQUAL": check str1 == str2 failed [test1 != test12] +337: error in "test_BOOST_CHECK_EQUAL": check i+1 == j failed [4 != 2] +340: info: check str1 == str3+1 passed +349: fatal error in "test_BOOST_CHECK_EQUAL": critical check str1 == str2 failed [test != null string] +355: warning in "test_BOOST_CHECK_EQUAL": condition b1 == b2 is not satisfied [B(1) != B(2)] +361: error in "test_BOOST_CHECK_EQUAL": check c1 == c3 failed [C(0,100) != C(1,102)]. Index mismatch +362: error in "test_BOOST_CHECK_EQUAL": check c1 == c2 failed [C(0,100) != C(0,101)]. Id mismatch +366: error in "test_BOOST_CHECK_EQUAL": check ch1 == ch2 failed [0xfffffffe != 0xfffffffd] +377: error in "test_BOOST_CHECK_LOGICAL_EXPR": check ++i != j failed [2 == 2] +379: error in "test_BOOST_CHECK_LOGICAL_EXPR": check i < j failed [2 >= 2] +380: error in "test_BOOST_CHECK_LOGICAL_EXPR": check i > j failed [2 <= 2] +387: error in "test_BOOST_CHECK_LOGICAL_EXPR": check i <= j failed [3 > 2] +388: error in "test_BOOST_CHECK_LOGICAL_EXPR": check j >= i failed [2 < 3] +393: error in "test_BOOST_CHECK_LOGICAL_EXPR": check str1 != str2 failed [test1 == test1] +423: error in "test_BOOST_CHECK_PREDICATE": check is_even( i ) failed for ( 17 ) +426: error in "test_BOOST_CHECK_PREDICATE": check not_equal_to()( i, 17 ) failed for ( 17, 17 ) +432: warning in "test_BOOST_CHECK_PREDICATE": condition moo( 12, i, j ) is not satisfied for ( 12, 17, 15 ) +440: error in "test_BOOST_CHECK_PREDICATE": check compare_lists( l1, l2 ) failed for ( , ). Different sizes [2!=0] +451: error in "test_BOOST_REQUIRE_PREDICATE": not aborted +453: fatal error in "test_BOOST_REQUIRE_PREDICATE": critical check less_equal()( arg2, arg1 ) failed for ( 2, 1 ) +474: error in "test_BOOST_CHECK_EQUAL_COLLECTIONS": check { testlist.begin(), testlist.end() } == { pattern, pattern+7 } failed. +Mismatch in a position 2: 4 != 3 +Mismatch in a position 5: 7 != 6 +475: error in "test_BOOST_CHECK_EQUAL_COLLECTIONS": check { testlist.begin(), testlist.end() } == { pattern, pattern+2 } failed. +Collections size mismatch: 7 != 2 +484: error in "test_BOOST_CHECK_BITWISE_EQUAL": check (char)0x06 =.= (char)0x16 failed. +Mismatch in a position 4 +487: warning in "test_BOOST_CHECK_BITWISE_EQUAL": condition (char)0x26 =.= (char)0x04 is not satisfied. +Mismatch in a position 1 +Mismatch in a position 5 +490: fatal error in "test_BOOST_CHECK_BITWISE_EQUAL": critical check (char)0x26 =.= (int)0x26 failed. +Operands bit sizes mismatch: 8 != 32 +still testing +1+1=2 +2+2=4 +struct A +0x14 + 20 +0: fatal error in "test_BOOST_TEST_CHECKPOINT": C string: some error +525: last checkpoint: Going to do a silly things +0: fatal error in "test_BOOST_TEST_PASSPOINT": unknown type +536: last checkpoint diff --git a/test/test_files/test_undef.cfg b/test/test_files/test_undef.cfg old mode 100755 new mode 100644 index 64b71a0f..618db391 --- a/test/test_files/test_undef.cfg +++ b/test/test_files/test_undef.cfg @@ -1,9 +1,9 @@ -$undef AAA - -$define AAA 123 - -1$AAA$ - -$undef AAA - +$undef AAA + +$define AAA 123 + +1$AAA$ + +$undef AAA + 1$AAA$ \ No newline at end of file diff --git a/test/test_fp_comparisons.cpp b/test/test_fp_comparisons.cpp index fb95eee8..2be99750 100644 --- a/test/test_fp_comparisons.cpp +++ b/test/test_fp_comparisons.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2007. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/test/test_tools_test.cpp b/test/test_tools_test.cpp index 33589989..4cf6846b 100644 --- a/test/test_tools_test.cpp +++ b/test/test_tools_test.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2007. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -211,11 +211,6 @@ TEST_CASE( test_BOOST_CHECK_MESSAGE ) unit_test_log.set_threshold_level( log_successful_tests ); BOOST_CHECK_MESSAGE( 2+2 == 4, "Could it fail?" ); - - int i = 1; - int j = 2; - std::string msg = "some explanation"; - BOOST_CHECK_MESSAGE( i > j, "Comparing " << i << " and " << j << ": " << msg ); } //____________________________________________________________________________// @@ -514,7 +509,7 @@ TEST_CASE( test_BOOST_TEST_MESSAGE ) A a = A(); BOOST_TEST_MESSAGE( a ); -#if BOOST_TEST_USE_STD_LOCALE +#if !defined(BOOST_NO_STD_LOCALE) && ( !defined(BOOST_MSVC) || BOOST_WORKAROUND(BOOST_MSVC, >= 1310)) BOOST_TEST_MESSAGE( std::hex << std::showbase << 20 ); #else BOOST_TEST_MESSAGE( "0x14" ); diff --git a/test/test_tree_management_test.cpp b/test/test_tree_management_test.cpp index 701a65b2..82eb617e 100644 --- a/test/test_tree_management_test.cpp +++ b/test/test_tree_management_test.cpp @@ -22,7 +22,7 @@ using namespace boost::unit_test; BOOST_AUTO_TEST_SUITE( S1 ) -BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES( tc1, 1 ) +BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES( tc1, 1 ); BOOST_AUTO_TEST_CASE( tc1 ) { BOOST_ERROR(""); } BOOST_AUTO_TEST_CASE( tc2 ) {} @@ -43,7 +43,7 @@ BOOST_AUTO_TEST_CASE( tc2 ) {} BOOST_AUTO_TEST_SUITE( S21 ) -BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES( tc1, 1 ) +BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES( tc1, 1 ); BOOST_AUTO_TEST_CASE( tc1 ) { BOOST_ERROR( "" ); } @@ -152,7 +152,7 @@ BOOST_AUTO_TEST_CASE( automated_test_units_registration ) { test_suite& mts = framework::master_test_suite(); - BOOST_CHECK_EQUAL( mts.size(), 8U ); + BOOST_CHECK_EQUAL( mts.size(), 7U ); BOOST_CHECK_EQUAL( mts.p_expected_failures, 2U ); BOOST_CHECK_EQUAL( framework::get( mts.get( "automated_test_units_registration" ) ).p_expected_failures, 0U ); @@ -180,79 +180,4 @@ BOOST_AUTO_TEST_CASE( automated_test_units_registration ) //____________________________________________________________________________// -struct A { - A() : i(0){} - void test_methodA1() { i++; } - void test_methodA2() { i++; } - - int i; -}; - -struct B : public A { - void test_methodB() { i--; } -}; - -struct C { - C() : i( 0 ) {} - - void virtual test_method() = 0; - - int i; -}; - -struct D : public C { - void virtual test_method() { i++; } -}; - -struct E : public C { - void virtual test_method() { i+=2; } -}; - -BOOST_AUTO_TEST_CASE( user_class_test_case ) -{ - boost::shared_ptr instA( new A ); - test_case* tc1 = BOOST_CLASS_TEST_CASE( &A::test_methodA1, instA ); - test_case* tc2 = BOOST_CLASS_TEST_CASE( &A::test_methodA2, instA ); - - BOOST_CHECK_EQUAL( tc1->p_name, const_string( "A::test_methodA1" ) ); - BOOST_CHECK_EQUAL( tc2->p_name, const_string( "A::test_methodA2" ) ); - - BOOST_CHECK_EQUAL( instA->i, 0 ); - tc1->test_func()(); - BOOST_CHECK_EQUAL( instA->i, 1 ); - tc2->test_func()(); - BOOST_CHECK_EQUAL( instA->i, 2 ); - - boost::shared_ptr instB( new B ); - test_case* tc3 = BOOST_CLASS_TEST_CASE( &A::test_methodA1, instB ); - test_case* tc4 = BOOST_CLASS_TEST_CASE( &B::test_methodB, instB ); - - BOOST_CHECK_EQUAL( tc3->p_name, const_string( "A::test_methodA1" ) ); - BOOST_CHECK_EQUAL( tc4->p_name, const_string( "B::test_methodB" ) ); - - BOOST_CHECK_EQUAL( instB->i, 0 ); - tc3->test_func()(); - BOOST_CHECK_EQUAL( instB->i, 1 ); - tc4->test_func()(); - BOOST_CHECK_EQUAL( instB->i, 0 ); - - boost::shared_ptr instC1( new D ); - test_case* tc5 = BOOST_CLASS_TEST_CASE( &C::test_method, instC1 ); - - BOOST_CHECK_EQUAL( tc5->p_name, const_string( "C::test_method" ) ); - - tc5->test_func()(); - BOOST_CHECK_EQUAL( instC1->i, 1 ); - - boost::shared_ptr instC2( new E ); - test_case* tc6 = BOOST_CLASS_TEST_CASE( &C::test_method, instC2 ); - - BOOST_CHECK_EQUAL( tc6->p_name, const_string( "C::test_method" ) ); - - tc6->test_func()(); - BOOST_CHECK_EQUAL( instC2->i, 2 ); -} - -//____________________________________________________________________________// - // EOF diff --git a/test/token_iterator_test.cpp b/test/token_iterator_test.cpp index 1116e127..b7c9536e 100644 --- a/test/token_iterator_test.cpp +++ b/test/token_iterator_test.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2001-2008. +// (C) Copyright Gennadiy Rozental 2001-2007. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/tools/console_test_runner/src/console_test_runner.cpp b/tools/console_test_runner/src/console_test_runner.cpp index ebfb154f..c10d6aff 100644 --- a/tools/console_test_runner/src/console_test_runner.cpp +++ b/tools/console_test_runner/src/console_test_runner.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2007. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) diff --git a/tools/console_test_runner/test/test_runner_test.cpp b/tools/console_test_runner/test/test_runner_test.cpp index 64cb051a..b4a9061a 100644 --- a/tools/console_test_runner/test/test_runner_test.cpp +++ b/tools/console_test_runner/test/test_runner_test.cpp @@ -1,4 +1,4 @@ -// (C) Copyright Gennadiy Rozental 2005-2007. +// (C) Copyright Gennadiy Rozental 2005. // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt)