Skip to content

Commit d6b42c2

Browse files
author
root
committed
str: Add better tests for string slice's Chars iterator
Test using for ch s.chars() { black_box(ch) } to have a test that should force the iterator to run its full decoding computations.
1 parent 06c7ee9 commit d6b42c2

File tree

1 file changed

+23
-6
lines changed

1 file changed

+23
-6
lines changed

src/libcollections/str.rs

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2240,16 +2240,26 @@ mod tests {
22402240
#[cfg(test)]
22412241
mod bench {
22422242
use test::Bencher;
2243+
use test::black_box;
22432244
use super::*;
2245+
use std::option::{None, Some};
22442246
use std::iter::{Iterator, DoubleEndedIterator};
22452247
use std::collections::Collection;
22462248

22472249
#[bench]
22482250
fn char_iterator(b: &mut Bencher) {
22492251
let s = "ศไทย中华Việt Nam; Mary had a little lamb, Little lamb";
2250-
let len = s.char_len();
22512252

2252-
b.iter(|| assert_eq!(s.chars().count(), len));
2253+
b.iter(|| s.chars().count());
2254+
}
2255+
2256+
#[bench]
2257+
fn char_iterator_for(b: &mut Bencher) {
2258+
let s = "ศไทย中华Việt Nam; Mary had a little lamb, Little lamb";
2259+
2260+
b.iter(|| {
2261+
for ch in s.chars() { black_box(ch) }
2262+
});
22532263
}
22542264

22552265
#[bench]
@@ -2260,17 +2270,24 @@ mod bench {
22602270
Mary had a little lamb, Little lamb
22612271
Mary had a little lamb, Little lamb
22622272
Mary had a little lamb, Little lamb";
2263-
let len = s.char_len();
22642273

2265-
b.iter(|| assert_eq!(s.chars().count(), len));
2274+
b.iter(|| s.chars().count());
22662275
}
22672276

22682277
#[bench]
22692278
fn char_iterator_rev(b: &mut Bencher) {
22702279
let s = "ศไทย中华Việt Nam; Mary had a little lamb, Little lamb";
2271-
let len = s.char_len();
22722280

2273-
b.iter(|| assert_eq!(s.chars().rev().count(), len));
2281+
b.iter(|| s.chars().rev().count());
2282+
}
2283+
2284+
#[bench]
2285+
fn char_iterator_rev_for(b: &mut Bencher) {
2286+
let s = "ศไทย中华Việt Nam; Mary had a little lamb, Little lamb";
2287+
2288+
b.iter(|| {
2289+
for ch in s.chars().rev() { black_box(ch) }
2290+
});
22742291
}
22752292

22762293
#[bench]

0 commit comments

Comments
 (0)