about summary refs log tree commit diff
path: root/src/libcoretest
diff options
context:
space:
mode:
authorSimon Sapin <simon.sapin@exyr.org>2016-08-17 18:01:41 +0200
committerSimon Sapin <simon.sapin@exyr.org>2016-08-29 17:34:02 +0200
commitf040208d533e1d6d9ee0e0408ee74e26e14d1284 (patch)
tree5592063ace04a7f2016e6398094b66b7e4ad521b /src/libcoretest
parent41d0a89e3ad99a9fdf700ea7d15750fe1cbfab14 (diff)
Implement TryFrom<u32> for char
For symmetry with From<char> for u32.
Diffstat (limited to 'src/libcoretest')
-rw-r--r--src/libcoretest/char.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/libcoretest/char.rs b/src/libcoretest/char.rs
index 92a2b23d242..199437a431e 100644
--- a/src/libcoretest/char.rs
+++ b/src/libcoretest/char.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 use std::char;
+use std::convert::TryFrom;
 
 #[test]
 fn test_convert() {
@@ -16,6 +17,15 @@ fn test_convert() {
     assert_eq!(char::from(b'\0'), '\0');
     assert_eq!(char::from(b'a'), 'a');
     assert_eq!(char::from(b'\xFF'), '\u{FF}');
+    assert_eq!(char::try_from(0_u32), Ok('\0'));
+    assert_eq!(char::try_from(0x61_u32), Ok('a'));
+    assert_eq!(char::try_from(0xD7FF_u32), Ok('\u{D7FF}'));
+    assert!(char::try_from(0xD800_u32).is_err());
+    assert!(char::try_from(0xDFFF_u32).is_err());
+    assert_eq!(char::try_from(0xE000_u32), Ok('\u{E000}'));
+    assert_eq!(char::try_from(0x10FFFF_u32), Ok('\u{10FFFF}'));
+    assert!(char::try_from(0x110000_u32).is_err());
+    assert!(char::try_from(0xFFFF_FFFF_u32).is_err());
 }
 
 #[test]