From cc7d561107c3476f2d44463504ea4f162c953caa Mon Sep 17 00:00:00 2001 From: Oliver Lee Date: Tue, 26 Dec 2023 23:25:17 -0800 Subject: [PATCH] add usage examples to readme (#22) Change-Id: I0b6ebbababc0cdc391d5a4c30cad92fca45cfd15 --- README.md | Bin 925 -> 7815 bytes scripts/README.md.tmpl | 93 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) diff --git a/README.md b/README.md index 19f65841b38da3fea5135018febc1b5977aa2460..16a0c406e89fdabd9af31182e430e6c0e963418b 100644 GIT binary patch literal 7815 zcmd5>ZExea5$*v_O4^c-b3%Ibqu82JK%uD-Ju(x2jqMfEz!2HvZNKMB(9r} z1^PStOZp5+z1WuRcrU#+9~@g8l0(ijGtZ1JnEbR>LMq3(VQ~^)@+eAtuEKb6_v>K7 z-oJS>`1%dY<4`dYWAlu!#6yyO>N(EE1xxNlb{~odn!XC-aK)pVuz2LFG!l;Ed7hu9 zuKnG&lGBt+*~5Ty5ypO$2ZFV%I(_@Uw@lNPtw7RJiiIE>{Ida@WA z$&~w|IE(8>p%NL7a+sVrB^b!)26cFpc4Y{N34@+@XXtPKg# zdB>jKIZyf=j`Oe-G0XC}%O1igVrfR|=p!bvOd`>I%qUqndKb^^>GgWOyZ1l-@bUKB zpMUx*`|0N6$BBd6*Vil=U5yA>d!T=J?AABN2x`e;2_8oB;MLOTnOBQrFrF>^F7uZ> zdwn-~iM#%M(gbtZsb+y!`z8>d+gDw!T4%=+&%1wp7uEgi4fXYZck}&+2@I`KTB5SJ zI`>ab`-)v(vjMLEYTGXVV8$@o3L>!P`I|*XOt2(l%P#XQ?mUAQu9R4%aHa$(zE3_0 zV^Kd!WS$AhxN`htm4=bHRN+eW*!OeBXA#7bE|4knNJ+EOOfWwJO2T;vpm^I*@>r5N zwP$ov4?9XFc)*f5^9XPx#XLP`+}U0QV0D2%HVb2(tr;oAvrq!w&L|LyfHxk=e6_;p zc+@YxIgaz^-5GEX5rl{+I9m|PG~#QrWWEwH4wA(B0&#NezY`?P=F{5dXX5$458omJ z)q=}HGy;Bsc+(&qHA_d$(lMkdXo=6q0v5bw&;@3Vt3W&!$HZen;#ZY;q>hP4ihQxQ z`r@egLhY`8RGCOCQ(yh4_+m@Eh|i;bfl&Zb;~2gV2u3VPkrh;uorLj+-3iR+F@wkD z6qMn+gvvyUI=V06UX;Yh_aTS$bZ9Z(mr%jVQ4o-jq z7#emM~vX+Gq5tr7oueX5e2RUO9{Txna|f*&E~zWH6h91V8~TW^S(!R&7=xkH|1fr zA)tYb?Z~XRWPrbcmDwh9(C@L!*3j?ndeWxVU$I1X*ha6%@STlD?6EfwGwhD9Eu4h@ zuWOHfiCbp>rw;wEm?0&w9SXQ_^@@k=-0Kb@+~y|x>kywF3>*+dFqC1(Dev2|%!7CR zCHwr*X_polfhTrhLN(ri!amXVhsHV%S*w9O4K14@Zz$2OWD3AkwqgfFP zC2A9;Ve<*T_7JLN2!Dg5_BkuoWAAwi>JG3v-lM03k+=5PYz^Wx7nz7rB52BPcof!S z0go3ECiI;BtZ^WSp9&U#p|DR$fLD=UtIRyg1RhceX-QlU(b7f`{CE~ABAuo-u}o`; z&UQ^+y z^Br1AyEf8?d;< z4!MtuCK$ruq+f41Bm~(co~m^!DDjvUit8ds=>gZB=dn*Bgv4fm%k^rOL`B-F9cW`9 z+oHSz2sh6*kh1PkDYj<>sk>B!-|hL}I~17q8Y=VNOCy+c)S6@f%G8Ws!c=fU6{f0k=N!~O`CD!uG)TKP*5LI$aw56#A%Si z0+O^J(T{c^?z;5NR4g=SuOhmotbq^qhCZRMJ#AIkIH=8ms(T*g`>@hae-p0m(T+cd zdp;X9huJ4}*vKSWd084l+s>#{62L}V96*5Sj#hhuxyVst6X!hQs?ao zrH9!ycalBSSsg0%%2rdjF z@!EUpmiXb<~yI`;9kYQc6R4SEjzb|4kQQ39rA+Poy`gqi* S92Fp}eeQoS?`Us<3g + +Binary comparison predicates display arguments on failure. + +```cpp:example/binary_comparisons.cpp +``` + + + +#### logical operators +
+ +Logical operators can be used to compose predicates - including user defined predicates. + +```cpp:example/logical_operations.cpp +``` + +
+ +#### additional output on failure +
+ +Additional output can be displayed on test failure. + +```cpp:example/additional_output.cpp +``` +```console:example/additional_output.log +``` + +NOTE: The message closure is not invoked within the test closure. Capturing +`x` and `y` by reference will result in dangling. +
+ +#### user defined predicates +
+ +Defining a predicate with `pred` captures and displays arguments on failure. + +```cpp:example/user_defined_predicates.cpp +``` +```console:example/user_defined_predicates.log +``` + +The description of user defined predicates can be customized + +```cpp:example/described_predicates.cpp +``` +```console:example/described_predicates.log +``` + +C++20 enables a terser syntax. + +```cpp:example/described_predicates_20.cpp +``` +```console:example/described_predicates_20.log +``` + +
+ +#### parameterized tests +
+ +Tests can be parameterized by type + +```cpp:example/type_parameterized.cpp +``` + +or by value + +```cpp:example/value_parameterized.cpp +``` + +If parameters are defined as a static constant, `param_ref` may enable +compile-time tests. + +```cpp:example/param_ref_parameterized.cpp +``` + +If parameters are defined as a literal-type[^2], C++20 allows use of `param`: + +```cpp:example/param_parameterized.cpp +``` + +
+ [^1]: The default printer uses `std::cout` and `skytest::aborts` calls `fork`. +[^2]: https://en.cppreference.com/w/cpp/named_req/LiteralType \ No newline at end of file