@@ -141,6 +141,52 @@ fn test_words() {
141141 }
142142}
143143
144+
145+ #[ test]
146+ fn test_sentences ( ) {
147+ use testdata:: TEST_SENTENCE ;
148+
149+ for & ( s, w) in TEST_SENTENCE . iter ( ) {
150+ macro_rules! assert_ {
151+ ( $test: expr, $exp: expr, $name: expr) => {
152+ // collect into vector for better diagnostics in failure case
153+ let testing = $test. collect:: <Vec <_>>( ) ;
154+ let expected = $exp. collect:: <Vec <_>>( ) ;
155+ assert_eq!( testing, expected, "{} test for testcase ({:?}, {:?}) failed." , $name, s, w)
156+ }
157+ }
158+ // test forward iterator
159+ assert_ ! ( s. split_sentence_bounds( ) ,
160+ w. iter( ) . cloned( ) ,
161+ "Forward sentence boundaries" ) ;
162+
163+ /*
164+ // test reverse iterator
165+ assert_!(s.split_sentence_bounds().rev(),
166+ w.iter().rev().cloned(),
167+ "Reverse sentence boundaries");
168+
169+ // generate offsets from sentence string lengths
170+ let mut indices = vec![0];
171+ for i in w.iter().cloned().map(|s| s.len()).scan(0, |t, n| { *t += n; Some(*t) }) {
172+ indices.push(i);
173+ }
174+ indices.pop();
175+ let indices = indices;
176+
177+ // test forward indices iterator
178+ assert_!(s.split_sentence_bound_indices().map(|(l,_)| l),
179+ indices.iter().cloned(),
180+ "Forward sentence indices");
181+
182+ // test backward indices iterator
183+ assert_!(s.split_sentence_bound_indices().rev().map(|(l,_)| l),
184+ indices.iter().rev().cloned(),
185+ "Reverse sentence indices");
186+ */
187+ }
188+ }
189+
144190quickcheck ! {
145191 fn quickcheck_forward_reverse_graphemes_extended( s: String ) -> bool {
146192 let a = s. graphemes( true ) . collect:: <Vec <_>>( ) ;
@@ -173,4 +219,17 @@ quickcheck! {
173219 let a = s. split_word_bounds( ) . collect:: <String >( ) ;
174220 a == s
175221 }
222+ /*
223+ fn quickcheck_forward_reverse_sentences(s: String) -> bool {
224+ let a = s.split_sentence_bounds().collect::<Vec<_>>();
225+ let mut b = s.split_sentence_bounds().rev().collect::<Vec<_>>();
226+ b.reverse();
227+ a == b
228+ }
229+
230+ fn quickcheck_join_sentences(s: String) -> bool {
231+ let a = s.split_sentence_bounds().collect::<String>();
232+ a == s
233+ }
234+ */
176235}
0 commit comments