@@ -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 > {
@@ -2729,37 +2729,39 @@ mod tests {
27292729 ) ;
27302730 }
27312731
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+
27322748 #[ test]
27332749 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\" " ) ;
27472751 }
27482752
27492753 #[ test]
27502754 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+ }
27572757
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\" " ) ;
27632765 }
27642766
27652767 #[ test]
0 commit comments