// Copyright 2012-2015 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. #[cfg(feature = "bench")] use std::iter; #[cfg(feature = "bench")] use test::Bencher; #[cfg(feature = "bench")] use std::prelude::v1::*; use super::UnicodeXID; #[cfg(feature = "bench")] #[bench] fn cargo_is_xid_start(b: &mut Bencher) { let string = iter::repeat('a').take(4096).collect::(); b.bytes = string.len() as u64; b.iter(|| { string.chars().all(UnicodeXID::is_xid_start) }); } #[cfg(feature = "bench")] #[bench] fn stdlib_is_xid_start(b: &mut Bencher) { let string = iter::repeat('a').take(4096).collect::(); b.bytes = string.len() as u64; b.iter(|| { string.chars().all(char::is_xid_start) }); } #[cfg(feature = "bench")] #[bench] fn cargo_xid_continue(b: &mut Bencher) { let string = iter::repeat('a').take(4096).collect::(); b.bytes = string.len() as u64; b.iter(|| { string.chars().all(UnicodeXID::is_xid_continue) }); } #[cfg(feature = "bench")] #[bench] fn stdlib_xid_continue(b: &mut Bencher) { let string = iter::repeat('a').take(4096).collect::(); b.bytes = string.len() as u64; b.iter(|| { string.chars().all(char::is_xid_continue) }); } #[test] fn test_is_xid_start() { let chars = [ 'A', 'Z', 'a', 'z', '\u{1000d}', '\u{10026}', ]; for ch in &chars { assert!(UnicodeXID::is_xid_start(*ch), "{}", ch); } } #[test] fn test_is_not_xid_start() { let chars = [ '\x00', '\x01', '0', '9', ' ', '[', '<', '{', '(', '\u{02c2}', '\u{ffff}', ]; for ch in &chars { assert!(!UnicodeXID::is_xid_start(*ch), "{}", ch); } } #[test] fn test_is_xid_continue() { let chars = [ '0', '9', 'A', 'Z', 'a', 'z', '_', '\u{1000d}', '\u{10026}', ]; for ch in &chars { assert!(UnicodeXID::is_xid_continue(*ch), "{}", ch); } } #[test] fn test_is_not_xid_continue() { let chars = [ '\x00', '\x01', ' ', '[', '<', '{', '(', '\u{02c2}', '\u{ffff}', ]; for &ch in &chars { assert!(!UnicodeXID::is_xid_continue(ch), "{}", ch); } }