@@ -367,8 +367,8 @@ fn escape_str(writer: &mut io::Writer, v: &str) -> Result<(), io::IoError> {
367367
368368fn escape_char ( writer : & mut io:: Writer , v : char ) -> Result < ( ) , io:: IoError > {
369369 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 ] )
372372}
373373
374374fn spaces ( wr : & mut io:: Writer , mut n : uint ) -> Result < ( ) , io:: IoError > {
@@ -2694,37 +2694,39 @@ mod tests {
26942694 ) ;
26952695 }
26962696
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+
26972713 #[ test]
26982714 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\" " ) ;
27122716 }
27132717
27142718 #[ test]
27152719 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+ }
27222722
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\" " ) ;
27282730 }
27292731
27302732 #[ test]
0 commit comments