@@ -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 > {
@@ -2694,37 +2694,39 @@ mod tests {
2694
2694
) ;
2695
2695
}
2696
2696
2697
+ macro_rules! check_encoder_for_simple(
2698
+ ( $value: expr, $expected: expr) => ( {
2699
+ let s = with_str_writer( |writer| {
2700
+ let mut encoder = Encoder :: new( writer) ;
2701
+ $value. encode( & mut encoder) . unwrap( ) ;
2702
+ } ) ;
2703
+ assert_eq!( s, $expected) ;
2704
+
2705
+ let s = with_str_writer( |writer| {
2706
+ let mut encoder = PrettyEncoder :: new( writer) ;
2707
+ $value. encode( & mut encoder) . unwrap( ) ;
2708
+ } ) ;
2709
+ assert_eq!( s, $expected) ;
2710
+ } )
2711
+ )
2712
+
2697
2713
#[ test]
2698
2714
fn test_write_some ( ) {
2699
- let value = Some ( "jodhpurs" . into_string ( ) ) ;
2700
- let s = with_str_writer ( |writer| {
2701
- let mut encoder = Encoder :: new ( writer) ;
2702
- value. encode ( & mut encoder) . unwrap ( ) ;
2703
- } ) ;
2704
- assert_eq ! ( s, "\" jodhpurs\" " ) ;
2705
-
2706
- let value = Some ( "jodhpurs" . into_string ( ) ) ;
2707
- let s = with_str_writer ( |writer| {
2708
- let mut encoder = PrettyEncoder :: new ( writer) ;
2709
- value. encode ( & mut encoder) . unwrap ( ) ;
2710
- } ) ;
2711
- assert_eq ! ( s, "\" jodhpurs\" " ) ;
2715
+ check_encoder_for_simple ! ( Some ( "jodhpurs" . to_string( ) ) , "\" jodhpurs\" " ) ;
2712
2716
}
2713
2717
2714
2718
#[ test]
2715
2719
fn test_write_none ( ) {
2716
- let value: Option < string:: String > = None ;
2717
- let s = with_str_writer ( |writer| {
2718
- let mut encoder = Encoder :: new ( writer) ;
2719
- value. encode ( & mut encoder) . unwrap ( ) ;
2720
- } ) ;
2721
- assert_eq ! ( s, "null" ) ;
2720
+ check_encoder_for_simple ! ( None :: <string:: String >, "null" ) ;
2721
+ }
2722
2722
2723
- let s = with_str_writer ( |writer| {
2724
- let mut encoder = Encoder :: new ( writer) ;
2725
- value. encode ( & mut encoder) . unwrap ( ) ;
2726
- } ) ;
2727
- assert_eq ! ( s, "null" ) ;
2723
+ #[ test]
2724
+ fn test_write_char ( ) {
2725
+ check_encoder_for_simple ! ( 'a' , "\" a\" " ) ;
2726
+ check_encoder_for_simple ! ( '\t' , "\" \\ t\" " ) ;
2727
+ check_encoder_for_simple ! ( '\u00a0' , "\" \u00a0 \" " ) ;
2728
+ check_encoder_for_simple ! ( '\uabcd' , "\" \uabcd \" " ) ;
2729
+ check_encoder_for_simple ! ( ' \U 0010 ffff' , "\" \U 0010ffff\" " ) ;
2728
2730
}
2729
2731
2730
2732
#[ test]
0 commit comments