unic_ucd_bidi/
bidi_control.rs

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