]> git.lizzy.rs Git - rust.git/blob - src/tools/miri/tests/pass/binops.rs
Rollup merge of #105784 - yanns:update_stdarch, r=Amanieu
[rust.git] / src / tools / miri / tests / pass / binops.rs
1 // Binop corner cases
2
3 fn test_nil() {
4     assert_eq!((), ());
5     assert!((!(() != ())));
6     assert!((!(() < ())));
7     assert!((() <= ()));
8     assert!((!(() > ())));
9     assert!((() >= ()));
10 }
11
12 fn test_bool() {
13     assert!((!(true < false)));
14     assert!((!(true <= false)));
15     assert!((true > false));
16     assert!((true >= false));
17
18     assert!((false < true));
19     assert!((false <= true));
20     assert!((!(false > true)));
21     assert!((!(false >= true)));
22
23     // Bools support bitwise binops
24     assert_eq!(false & false, false);
25     assert_eq!(true & false, false);
26     assert_eq!(true & true, true);
27     assert_eq!(false | false, false);
28     assert_eq!(true | false, true);
29     assert_eq!(true | true, true);
30     assert_eq!(false ^ false, false);
31     assert_eq!(true ^ false, true);
32     assert_eq!(true ^ true, false);
33 }
34
35 fn test_ptr() {
36     unsafe {
37         let p1: *const u8 = ::std::mem::transmute(0_usize);
38         let p2: *const u8 = ::std::mem::transmute(0_usize);
39         let p3: *const u8 = ::std::mem::transmute(1_usize);
40
41         assert_eq!(p1, p2);
42         assert!(p1 != p3);
43         assert!(p1 < p3);
44         assert!(p1 <= p3);
45         assert!(p3 > p1);
46         assert!(p3 >= p3);
47         assert!(p1 <= p2);
48         assert!(p1 >= p2);
49     }
50 }
51
52 #[derive(PartialEq, Debug)]
53 struct P {
54     x: isize,
55     y: isize,
56 }
57
58 fn p(x: isize, y: isize) -> P {
59     P { x: x, y: y }
60 }
61
62 fn test_class() {
63     let q = p(1, 2);
64     let mut r = p(1, 2);
65
66     assert_eq!(q, r);
67     r.y = 17;
68     assert!((r.y != q.y));
69     assert_eq!(r.y, 17);
70     assert!((q != r));
71 }
72
73 pub fn main() {
74     test_nil();
75     test_bool();
76     test_ptr();
77     test_class();
78 }