]> git.proxmox.com Git - rustc.git/blame - vendor/unic-emoji-char/src/emoji_component.rs
New upstream version 1.73.0+dfsg1
[rustc.git] / vendor / unic-emoji-char / src / emoji_component.rs
CommitLineData
3c0e092e
XL
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 `Emoji_Component` Character Property.
12
13char_property! {
14 /// Represents values of the Unicode character property
15 /// [`Emoji_Component`](https://www.unicode.org/reports/tr51/#Emoji_Properties).
16 ///
17 /// The value is `true` for characters that normally do not appear on emoji keyboards as
18 /// separate choices, such as Keycap base characters, Regional_Indicators, …, `false` otherwise.
19 pub struct EmojiComponent(bool) {
20 abbr => "Emoji_Component";
21 long => "Emoji_Component";
22 human => "Emoji Component";
23
24 data_table_path => "../tables/emoji_component.rsv";
25 }
26
27 /// The value is `true` for characters that normally do not appear on emoji keyboards as
28 /// separate choices, such as Keycap base characters, Regional_Indicators, …, `false` otherwise.
29 pub fn is_emoji_component(char) -> bool;
30}
31
32#[cfg(test)]
33mod tests {
34 #[test]
35 fn test_values() {
36 use super::is_emoji_component;
37
38 // ASCII
39 assert_eq!(is_emoji_component('\u{0000}'), false);
40 assert_eq!(is_emoji_component('\u{0021}'), false);
41
42 assert_eq!(is_emoji_component('\u{0027}'), false);
43 assert_eq!(is_emoji_component('\u{0028}'), false);
44 assert_eq!(is_emoji_component('\u{0029}'), false);
45 assert_eq!(is_emoji_component('\u{002a}'), true);
46
47 assert_eq!(is_emoji_component('\u{003b}'), false);
48 assert_eq!(is_emoji_component('\u{003c}'), false);
49 assert_eq!(is_emoji_component('\u{003d}'), false);
50
51 assert_eq!(is_emoji_component('\u{007a}'), false);
52 assert_eq!(is_emoji_component('\u{007b}'), false);
53 assert_eq!(is_emoji_component('\u{007c}'), false);
54 assert_eq!(is_emoji_component('\u{007d}'), false);
55 assert_eq!(is_emoji_component('\u{007e}'), false);
56
57 // Other BMP
58 assert_eq!(is_emoji_component('\u{061b}'), false);
59 assert_eq!(is_emoji_component('\u{061c}'), false);
60 assert_eq!(is_emoji_component('\u{061d}'), false);
61
62 assert_eq!(is_emoji_component('\u{200d}'), false);
63 assert_eq!(is_emoji_component('\u{200e}'), false);
64 assert_eq!(is_emoji_component('\u{200f}'), false);
65 assert_eq!(is_emoji_component('\u{2010}'), false);
66
67 assert_eq!(is_emoji_component('\u{2029}'), false);
68 assert_eq!(is_emoji_component('\u{202a}'), false);
69 assert_eq!(is_emoji_component('\u{202e}'), false);
70 assert_eq!(is_emoji_component('\u{202f}'), false);
71
72 // Other Planes
73 assert_eq!(is_emoji_component('\u{10000}'), false);
74 assert_eq!(is_emoji_component('\u{10001}'), false);
75
76 assert_eq!(is_emoji_component('\u{1f1e5}'), false);
77 assert_eq!(is_emoji_component('\u{1f1e6}'), true);
78 assert_eq!(is_emoji_component('\u{1f1ff}'), true);
79 assert_eq!(is_emoji_component('\u{1f200}'), false);
80
81 assert_eq!(is_emoji_component('\u{20000}'), false);
82 assert_eq!(is_emoji_component('\u{30000}'), false);
83 assert_eq!(is_emoji_component('\u{40000}'), false);
84 assert_eq!(is_emoji_component('\u{50000}'), false);
85 assert_eq!(is_emoji_component('\u{60000}'), false);
86 assert_eq!(is_emoji_component('\u{70000}'), false);
87 assert_eq!(is_emoji_component('\u{80000}'), false);
88 assert_eq!(is_emoji_component('\u{90000}'), false);
89 assert_eq!(is_emoji_component('\u{a0000}'), false);
90 assert_eq!(is_emoji_component('\u{b0000}'), false);
91 assert_eq!(is_emoji_component('\u{c0000}'), false);
92 assert_eq!(is_emoji_component('\u{d0000}'), false);
93 assert_eq!(is_emoji_component('\u{e0000}'), false);
94
95 assert_eq!(is_emoji_component('\u{efffe}'), false);
96 assert_eq!(is_emoji_component('\u{effff}'), false);
97
98 // Priavte-Use Area
99 assert_eq!(is_emoji_component('\u{f0000}'), false);
100 assert_eq!(is_emoji_component('\u{f0001}'), false);
101 assert_eq!(is_emoji_component('\u{ffffe}'), false);
102 assert_eq!(is_emoji_component('\u{fffff}'), false);
103 assert_eq!(is_emoji_component('\u{100000}'), false);
104 assert_eq!(is_emoji_component('\u{100001}'), false);
105 assert_eq!(is_emoji_component('\u{10fffe}'), false);
106 assert_eq!(is_emoji_component('\u{10ffff}'), false);
107 }
108}