xref: /aosp_15_r20/platform_testing/libraries/rdroidtest/tests/main.rs (revision dd0948b35e70be4c0246aabd6c72554a5eb8b22a)
1*dd0948b3SAndroid Build Coastguard Worker //! Test use of `rdroidtest` attribute macro.
2*dd0948b3SAndroid Build Coastguard Worker 
3*dd0948b3SAndroid Build Coastguard Worker use rdroidtest::{ignore_if, rdroidtest};
4*dd0948b3SAndroid Build Coastguard Worker 
5*dd0948b3SAndroid Build Coastguard Worker mod raw;
6*dd0948b3SAndroid Build Coastguard Worker 
7*dd0948b3SAndroid Build Coastguard Worker #[rdroidtest]
one_plus_one()8*dd0948b3SAndroid Build Coastguard Worker fn one_plus_one() {
9*dd0948b3SAndroid Build Coastguard Worker     let result = 1 + 1;
10*dd0948b3SAndroid Build Coastguard Worker     assert_eq!(result, 2);
11*dd0948b3SAndroid Build Coastguard Worker }
12*dd0948b3SAndroid Build Coastguard Worker 
13*dd0948b3SAndroid Build Coastguard Worker #[rdroidtest]
14*dd0948b3SAndroid Build Coastguard Worker #[ignore_if(feeling_happy())]
grumble()15*dd0948b3SAndroid Build Coastguard Worker fn grumble() {
16*dd0948b3SAndroid Build Coastguard Worker     let result = 1 + 1;
17*dd0948b3SAndroid Build Coastguard Worker     assert_eq!(result, 2);
18*dd0948b3SAndroid Build Coastguard Worker }
19*dd0948b3SAndroid Build Coastguard Worker 
20*dd0948b3SAndroid Build Coastguard Worker #[rdroidtest]
21*dd0948b3SAndroid Build Coastguard Worker #[ignore_if(!feeling_happy())]
clap_hands()22*dd0948b3SAndroid Build Coastguard Worker fn clap_hands() {
23*dd0948b3SAndroid Build Coastguard Worker     let result = 1 + 1;
24*dd0948b3SAndroid Build Coastguard Worker     assert_eq!(result, 3);
25*dd0948b3SAndroid Build Coastguard Worker }
26*dd0948b3SAndroid Build Coastguard Worker 
feeling_happy() -> bool27*dd0948b3SAndroid Build Coastguard Worker fn feeling_happy() -> bool {
28*dd0948b3SAndroid Build Coastguard Worker     false
29*dd0948b3SAndroid Build Coastguard Worker }
30*dd0948b3SAndroid Build Coastguard Worker 
31*dd0948b3SAndroid Build Coastguard Worker #[rdroidtest(my_instances())]
is_less_than_five(param: u32)32*dd0948b3SAndroid Build Coastguard Worker fn is_less_than_five(param: u32) {
33*dd0948b3SAndroid Build Coastguard Worker     assert!(param < 5);
34*dd0948b3SAndroid Build Coastguard Worker }
35*dd0948b3SAndroid Build Coastguard Worker 
36*dd0948b3SAndroid Build Coastguard Worker #[rdroidtest(my_instances())]
37*dd0948b3SAndroid Build Coastguard Worker #[ignore_if(feeling_odd)]
is_even(param: u32)38*dd0948b3SAndroid Build Coastguard Worker fn is_even(param: u32) {
39*dd0948b3SAndroid Build Coastguard Worker     assert_eq!(param % 2, 0);
40*dd0948b3SAndroid Build Coastguard Worker }
41*dd0948b3SAndroid Build Coastguard Worker 
42*dd0948b3SAndroid Build Coastguard Worker #[rdroidtest(my_instances())]
43*dd0948b3SAndroid Build Coastguard Worker #[ignore_if(|p| !feeling_odd(p))]
is_odd(param: u32)44*dd0948b3SAndroid Build Coastguard Worker fn is_odd(param: u32) {
45*dd0948b3SAndroid Build Coastguard Worker     assert_eq!(param % 2, 1);
46*dd0948b3SAndroid Build Coastguard Worker }
47*dd0948b3SAndroid Build Coastguard Worker 
feeling_odd(param: &u32) -> bool48*dd0948b3SAndroid Build Coastguard Worker fn feeling_odd(param: &u32) -> bool {
49*dd0948b3SAndroid Build Coastguard Worker     *param % 2 == 1
50*dd0948b3SAndroid Build Coastguard Worker }
51*dd0948b3SAndroid Build Coastguard Worker 
my_instances() -> Vec<(String, u32)>52*dd0948b3SAndroid Build Coastguard Worker fn my_instances() -> Vec<(String, u32)> {
53*dd0948b3SAndroid Build Coastguard Worker     vec![("one".to_string(), 1), ("two".to_string(), 2), ("three".to_string(), 3)]
54*dd0948b3SAndroid Build Coastguard Worker }
55*dd0948b3SAndroid Build Coastguard Worker 
56*dd0948b3SAndroid Build Coastguard Worker #[rdroidtest(wrapped_instances())]
57*dd0948b3SAndroid Build Coastguard Worker #[ignore_if(|p| !feeling_odder(p))]
is_odder(param: Param)58*dd0948b3SAndroid Build Coastguard Worker fn is_odder(param: Param) {
59*dd0948b3SAndroid Build Coastguard Worker     assert_eq!(param.0 % 2, 1);
60*dd0948b3SAndroid Build Coastguard Worker }
61*dd0948b3SAndroid Build Coastguard Worker 
feeling_odder(param: &Param) -> bool62*dd0948b3SAndroid Build Coastguard Worker fn feeling_odder(param: &Param) -> bool {
63*dd0948b3SAndroid Build Coastguard Worker     param.0 % 2 == 1
64*dd0948b3SAndroid Build Coastguard Worker }
65*dd0948b3SAndroid Build Coastguard Worker 
66*dd0948b3SAndroid Build Coastguard Worker struct Param(u32);
67*dd0948b3SAndroid Build Coastguard Worker 
wrapped_instances() -> Vec<(String, Param)>68*dd0948b3SAndroid Build Coastguard Worker fn wrapped_instances() -> Vec<(String, Param)> {
69*dd0948b3SAndroid Build Coastguard Worker     vec![
70*dd0948b3SAndroid Build Coastguard Worker         ("one".to_string(), Param(1)),
71*dd0948b3SAndroid Build Coastguard Worker         ("two".to_string(), Param(2)),
72*dd0948b3SAndroid Build Coastguard Worker         ("three".to_string(), Param(3)),
73*dd0948b3SAndroid Build Coastguard Worker     ]
74*dd0948b3SAndroid Build Coastguard Worker }
75*dd0948b3SAndroid Build Coastguard Worker 
76*dd0948b3SAndroid Build Coastguard Worker #[rdroidtest(more_instances())]
77*dd0948b3SAndroid Build Coastguard Worker #[ignore_if(|p| p != "one")]
is_the_one(param: String)78*dd0948b3SAndroid Build Coastguard Worker fn is_the_one(param: String) {
79*dd0948b3SAndroid Build Coastguard Worker     assert_eq!(param, "one");
80*dd0948b3SAndroid Build Coastguard Worker }
81*dd0948b3SAndroid Build Coastguard Worker 
more_instances() -> Vec<(String, String)>82*dd0948b3SAndroid Build Coastguard Worker fn more_instances() -> Vec<(String, String)> {
83*dd0948b3SAndroid Build Coastguard Worker     vec![("one".to_string(), "one".to_string()), ("two".to_string(), "two".to_string())]
84*dd0948b3SAndroid Build Coastguard Worker }
85*dd0948b3SAndroid Build Coastguard Worker 
86*dd0948b3SAndroid Build Coastguard Worker #[rdroidtest]
87*dd0948b3SAndroid Build Coastguard Worker #[ignore]
ignore_me()88*dd0948b3SAndroid Build Coastguard Worker fn ignore_me() {
89*dd0948b3SAndroid Build Coastguard Worker     panic!("shouldn't run!");
90*dd0948b3SAndroid Build Coastguard Worker }
91*dd0948b3SAndroid Build Coastguard Worker 
92*dd0948b3SAndroid Build Coastguard Worker #[rdroidtest]
93*dd0948b3SAndroid Build Coastguard Worker #[ignore_if(false)]
94*dd0948b3SAndroid Build Coastguard Worker #[ignore]
ignore_me_too()95*dd0948b3SAndroid Build Coastguard Worker fn ignore_me_too() {
96*dd0948b3SAndroid Build Coastguard Worker     panic!("shouldn't run either -- attribute trumps ignore_if!");
97*dd0948b3SAndroid Build Coastguard Worker }
98*dd0948b3SAndroid Build Coastguard Worker 
99*dd0948b3SAndroid Build Coastguard Worker #[rdroidtest]
100*dd0948b3SAndroid Build Coastguard Worker #[ignore]
101*dd0948b3SAndroid Build Coastguard Worker #[ignore_if(false)]
ignore_me_as_well()102*dd0948b3SAndroid Build Coastguard Worker fn ignore_me_as_well() {
103*dd0948b3SAndroid Build Coastguard Worker     panic!("shouldn't run either -- attribute trumps ignore_if, regardless of order!");
104*dd0948b3SAndroid Build Coastguard Worker }
105*dd0948b3SAndroid Build Coastguard Worker 
106*dd0948b3SAndroid Build Coastguard Worker #[rdroidtest(my_instances())]
107*dd0948b3SAndroid Build Coastguard Worker #[ignore]
ignore_all(param: u32)108*dd0948b3SAndroid Build Coastguard Worker fn ignore_all(param: u32) {
109*dd0948b3SAndroid Build Coastguard Worker     panic!("parameterized test ({param}) shouldn't run");
110*dd0948b3SAndroid Build Coastguard Worker }
111*dd0948b3SAndroid Build Coastguard Worker 
112*dd0948b3SAndroid Build Coastguard Worker rdroidtest::test_main!();
113