@@ -367,8 +367,8 @@ fn escape_str(writer: &mut io::Writer, v: &str) -> Result<(), io::IoError> {
367
367
368
368
fn escape_char ( writer : & mut io:: Writer , v : char ) -> Result < ( ) , io:: IoError > {
369
369
let mut buf = [ 0 , .. 4 ] ;
370
- v. encode_utf8 ( & mut buf) ;
371
- escape_bytes ( writer, & mut buf )
370
+ let len = v. encode_utf8 ( & mut buf) . unwrap ( ) ;
371
+ escape_bytes ( writer, buf [ mut ..len ] )
372
372
}
373
373
374
374
fn spaces ( wr : & mut io:: Writer , mut n : uint ) -> Result < ( ) , io:: IoError > {
@@ -2729,37 +2729,39 @@ mod tests {
2729
2729
) ;
2730
2730
}
2731
2731
2732
+ macro_rules! check_encoder_for_simple(
2733
+ ( $value: expr, $expected: expr) => ( {
2734
+ let s = with_str_writer( |writer| {
2735
+ let mut encoder = Encoder :: new( writer) ;
2736
+ $value. encode( & mut encoder) . unwrap( ) ;
2737
+ } ) ;
2738
+ assert_eq!( s, $expected) ;
2739
+
2740
+ let s = with_str_writer( |writer| {
2741
+ let mut encoder = PrettyEncoder :: new( writer) ;
2742
+ $value. encode( & mut encoder) . unwrap( ) ;
2743
+ } ) ;
2744
+ assert_eq!( s, $expected) ;
2745
+ } )
2746
+ )
2747
+
2732
2748
#[ test]
2733
2749
fn test_write_some ( ) {
2734
- let value = Some ( "jodhpurs" . into_string ( ) ) ;
2735
- let s = with_str_writer ( |writer| {
2736
- let mut encoder = Encoder :: new ( writer) ;
2737
- value. encode ( & mut encoder) . unwrap ( ) ;
2738
- } ) ;
2739
- assert_eq ! ( s, "\" jodhpurs\" " ) ;
2740
-
2741
- let value = Some ( "jodhpurs" . into_string ( ) ) ;
2742
- let s = with_str_writer ( |writer| {
2743
- let mut encoder = PrettyEncoder :: new ( writer) ;
2744
- value. encode ( & mut encoder) . unwrap ( ) ;
2745
- } ) ;
2746
- assert_eq ! ( s, "\" jodhpurs\" " ) ;
2750
+ check_encoder_for_simple ! ( Some ( "jodhpurs" . to_string( ) ) , "\" jodhpurs\" " ) ;
2747
2751
}
2748
2752
2749
2753
#[ test]
2750
2754
fn test_write_none ( ) {
2751
- let value: Option < string:: String > = None ;
2752
- let s = with_str_writer ( |writer| {
2753
- let mut encoder = Encoder :: new ( writer) ;
2754
- value. encode ( & mut encoder) . unwrap ( ) ;
2755
- } ) ;
2756
- assert_eq ! ( s, "null" ) ;
2755
+ check_encoder_for_simple ! ( None :: <string:: String >, "null" ) ;
2756
+ }
2757
2757
2758
- let s = with_str_writer ( |writer| {
2759
- let mut encoder = Encoder :: new ( writer) ;
2760
- value. encode ( & mut encoder) . unwrap ( ) ;
2761
- } ) ;
2762
- assert_eq ! ( s, "null" ) ;
2758
+ #[ test]
2759
+ fn test_write_char ( ) {
2760
+ check_encoder_for_simple ! ( 'a' , "\" a\" " ) ;
2761
+ check_encoder_for_simple ! ( '\t' , "\" \\ t\" " ) ;
2762
+ check_encoder_for_simple ! ( '\u00a0' , "\" \u00a0 \" " ) ;
2763
+ check_encoder_for_simple ! ( '\uabcd' , "\" \uabcd \" " ) ;
2764
+ check_encoder_for_simple ! ( ' \U 0010 ffff' , "\" \U 0010ffff\" " ) ;
2763
2765
}
2764
2766
2765
2767
#[ test]
0 commit comments