unic_ucd_case/
changes_when_casemapped.rs

1// Copyright 2017 The UNIC Project Developers.
2//
3// See the COPYRIGHT file at the top-level directory of this distribution.
4//
5// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8// option. This file may not be copied, modified, or distributed
9// except according to those terms.
10
11//! Unicode `Changes_When_Casemapped` Character Property.
12
13char_property! {
14    /// Represents values of the Unicode character property
15    /// [`Changes_When_Casemapped`](https://www.unicode.org/reports/tr44/#CWCM).
16    ///
17    /// The value is `true` for characters that change when casemapped, `false` otherwise.
18    pub struct ChangesWhenCasemapped(bool) {
19        abbr => "CWCM";
20        long => "Changes_When_Casemapped";
21        human => "Changes When Casemapped";
22
23        data_table_path => "../tables/changes_when_casemapped.rsv";
24    }
25
26    /// Return `true` for characters that change when casemapped, `false` otherwise.
27    pub fn changes_when_casemapped(char) -> bool;
28}
29
30#[cfg(test)]
31mod tests {
32    #[test]
33    fn test_values() {
34        use super::changes_when_casemapped;
35
36        // ASCII
37        assert_eq!(changes_when_casemapped('\u{0020}'), false);
38        assert_eq!(changes_when_casemapped('\u{0021}'), false);
39        assert_eq!(changes_when_casemapped('\u{0022}'), false);
40
41        assert_eq!(changes_when_casemapped('\u{0030}'), false);
42        assert_eq!(changes_when_casemapped('\u{0031}'), false);
43        assert_eq!(changes_when_casemapped('\u{0032}'), false);
44
45        assert_eq!(changes_when_casemapped('\u{0040}'), false);
46        assert_eq!(changes_when_casemapped('\u{0041}'), true);
47        assert_eq!(changes_when_casemapped('\u{0042}'), true);
48
49        assert_eq!(changes_when_casemapped('\u{0060}'), false);
50        assert_eq!(changes_when_casemapped('\u{0061}'), true);
51        assert_eq!(changes_when_casemapped('\u{0062}'), true);
52
53        assert_eq!(changes_when_casemapped('\u{007e}'), false);
54        assert_eq!(changes_when_casemapped('\u{007f}'), false);
55
56        // Other BMP
57        assert_eq!(changes_when_casemapped('\u{061b}'), false);
58        assert_eq!(changes_when_casemapped('\u{061c}'), false);
59        assert_eq!(changes_when_casemapped('\u{061d}'), false);
60
61        assert_eq!(changes_when_casemapped('\u{200d}'), false);
62        assert_eq!(changes_when_casemapped('\u{200e}'), false);
63        assert_eq!(changes_when_casemapped('\u{200f}'), false);
64        assert_eq!(changes_when_casemapped('\u{2010}'), false);
65
66        assert_eq!(changes_when_casemapped('\u{2029}'), false);
67        assert_eq!(changes_when_casemapped('\u{202a}'), false);
68        assert_eq!(changes_when_casemapped('\u{202e}'), false);
69        assert_eq!(changes_when_casemapped('\u{202f}'), false);
70
71        // Other Planes
72        assert_eq!(changes_when_casemapped('\u{10000}'), false);
73        assert_eq!(changes_when_casemapped('\u{10001}'), false);
74
75        assert_eq!(changes_when_casemapped('\u{20000}'), false);
76        assert_eq!(changes_when_casemapped('\u{30000}'), false);
77        assert_eq!(changes_when_casemapped('\u{40000}'), false);
78        assert_eq!(changes_when_casemapped('\u{50000}'), false);
79        assert_eq!(changes_when_casemapped('\u{60000}'), false);
80        assert_eq!(changes_when_casemapped('\u{70000}'), false);
81        assert_eq!(changes_when_casemapped('\u{80000}'), false);
82        assert_eq!(changes_when_casemapped('\u{90000}'), false);
83        assert_eq!(changes_when_casemapped('\u{a0000}'), false);
84        assert_eq!(changes_when_casemapped('\u{b0000}'), false);
85        assert_eq!(changes_when_casemapped('\u{c0000}'), false);
86        assert_eq!(changes_when_casemapped('\u{d0000}'), false);
87        assert_eq!(changes_when_casemapped('\u{e0000}'), false);
88
89        assert_eq!(changes_when_casemapped('\u{efffe}'), false);
90        assert_eq!(changes_when_casemapped('\u{effff}'), false);
91
92        // Priavte-Use Area
93        assert_eq!(changes_when_casemapped('\u{f0000}'), false);
94        assert_eq!(changes_when_casemapped('\u{f0001}'), false);
95        assert_eq!(changes_when_casemapped('\u{ffffe}'), false);
96        assert_eq!(changes_when_casemapped('\u{fffff}'), false);
97        assert_eq!(changes_when_casemapped('\u{100000}'), false);
98        assert_eq!(changes_when_casemapped('\u{100001}'), false);
99        assert_eq!(changes_when_casemapped('\u{10fffe}'), false);
100        assert_eq!(changes_when_casemapped('\u{10ffff}'), false);
101    }
102}