unic_ucd_case/
uppercase.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 `Uppercase` Character Property.
12
13char_property! {
14    /// Represents values of the Unicode character property
15    /// [`Uppercase`](https://www.unicode.org/reports/tr44/#Uppercase).
16    ///
17    /// The value is `true` for uppercase characters, `false` otherwise.
18    pub struct Uppercase(bool) {
19        abbr => "Upper";
20        long => "Uppercase";
21        human => "Uppercase";
22
23        data_table_path => "../tables/uppercase.rsv";
24    }
25
26    /// Return `true` for uppercase character, `false` otherwise.
27    pub fn is_uppercase(char) -> bool;
28}
29
30#[cfg(test)]
31mod tests {
32    #[test]
33    fn test_values() {
34        use super::is_uppercase;
35
36        // ASCII
37        assert_eq!(is_uppercase('\u{0000}'), false);
38
39        assert_eq!(is_uppercase('\u{0020}'), false);
40        assert_eq!(is_uppercase('\u{0021}'), false);
41        assert_eq!(is_uppercase('\u{0022}'), false);
42
43        assert_eq!(is_uppercase('\u{0030}'), false);
44        assert_eq!(is_uppercase('\u{0031}'), false);
45        assert_eq!(is_uppercase('\u{0032}'), false);
46
47        assert_eq!(is_uppercase('\u{0040}'), false);
48        assert_eq!(is_uppercase('\u{0041}'), true);
49        assert_eq!(is_uppercase('\u{0042}'), true);
50
51        assert_eq!(is_uppercase('\u{0060}'), false);
52        assert_eq!(is_uppercase('\u{0061}'), false);
53        assert_eq!(is_uppercase('\u{0062}'), false);
54
55        assert_eq!(is_uppercase('\u{007e}'), false);
56        assert_eq!(is_uppercase('\u{007f}'), false);
57
58        // Other Planes
59        assert_eq!(is_uppercase('\u{10000}'), false);
60        assert_eq!(is_uppercase('\u{10001}'), false);
61
62        assert_eq!(is_uppercase('\u{20000}'), false);
63        assert_eq!(is_uppercase('\u{30000}'), false);
64        assert_eq!(is_uppercase('\u{40000}'), false);
65        assert_eq!(is_uppercase('\u{50000}'), false);
66        assert_eq!(is_uppercase('\u{60000}'), false);
67        assert_eq!(is_uppercase('\u{70000}'), false);
68        assert_eq!(is_uppercase('\u{80000}'), false);
69        assert_eq!(is_uppercase('\u{90000}'), false);
70        assert_eq!(is_uppercase('\u{a0000}'), false);
71        assert_eq!(is_uppercase('\u{b0000}'), false);
72        assert_eq!(is_uppercase('\u{c0000}'), false);
73        assert_eq!(is_uppercase('\u{d0000}'), false);
74        assert_eq!(is_uppercase('\u{e0000}'), false);
75
76        assert_eq!(is_uppercase('\u{efffe}'), false);
77        assert_eq!(is_uppercase('\u{effff}'), false);
78
79        // Priavte-Use Area
80        assert_eq!(is_uppercase('\u{f0000}'), false);
81        assert_eq!(is_uppercase('\u{f0001}'), false);
82        assert_eq!(is_uppercase('\u{ffffe}'), false);
83        assert_eq!(is_uppercase('\u{fffff}'), false);
84        assert_eq!(is_uppercase('\u{100000}'), false);
85        assert_eq!(is_uppercase('\u{100001}'), false);
86        assert_eq!(is_uppercase('\u{10fffe}'), false);
87        assert_eq!(is_uppercase('\u{10ffff}'), false);
88    }
89}