| 1 | struct Foo { |
| 2 | i int |
| 3 | } |
| 4 | |
| 5 | fn (a Foo) < (b Foo) bool { |
| 6 | return a.i < b.i |
| 7 | } |
| 8 | |
| 9 | fn (a Foo) == (b Foo) bool { |
| 10 | return a.i == b.i |
| 11 | } |
| 12 | |
| 13 | fn test_operator_overloading_cmp() { |
| 14 | a := Foo{ |
| 15 | i: 38 |
| 16 | } |
| 17 | b := Foo{ |
| 18 | i: 38 |
| 19 | } |
| 20 | mut arr := [a, b] |
| 21 | |
| 22 | assert (a > b) == false |
| 23 | assert (a < b) == false |
| 24 | //// /// // |
| 25 | assert a >= b |
| 26 | assert a <= b |
| 27 | //// /// // |
| 28 | assert b >= a |
| 29 | assert b <= a |
| 30 | //// /// // |
| 31 | arr.sort(a > b) |
| 32 | assert arr[0].i == 38 |
| 33 | arr.sort(a < b) |
| 34 | assert arr[0].i == 38 |
| 35 | } |
| 36 |