@@ -2205,6 +2205,10 @@ impl ToJson for ~str {
22052205 fn to_json ( & self ) -> Json { String ( ( * self ) . clone ( ) ) }
22062206}
22072207
2208+ impl ToJson for StrBuf {
2209+ fn to_json ( & self ) -> Json { String ( ( * self ) . as_slice ( ) . into_owned ( ) ) }
2210+ }
2211+
22082212impl < A : ToJson , B : ToJson > ToJson for ( A , B ) {
22092213 fn to_json ( & self ) -> Json {
22102214 match * self {
@@ -2643,41 +2647,25 @@ mod tests {
26432647
26442648 #[ test]
26452649 fn test_decode_str( ) {
2646- let mut decoder = Decoder :: new( from_str( "\" \" " ) . unwrap( ) ) ;
2647- let v: ~str = Decodable :: decode( & mut decoder) . unwrap( ) ;
2648- assert_eq!( v, "" . to_owned( ) ) ;
2649-
2650- let mut decoder = Decoder :: new( from_str( "\" foo\" " ) . unwrap( ) ) ;
2651- let v: ~str = Decodable :: decode( & mut decoder) . unwrap( ) ;
2652- assert_eq!( v, "foo" . to_owned( ) ) ;
2653-
2654- let mut decoder = Decoder :: new( from_str( "\" \\ \" \" " ) . unwrap( ) ) ;
2655- let v: ~str = Decodable :: decode( & mut decoder) . unwrap( ) ;
2656- assert_eq!( v, "\" " . to_owned( ) ) ;
2657-
2658- let mut decoder = Decoder :: new( from_str( "\" \\ b\" " ) . unwrap( ) ) ;
2659- let v: ~str = Decodable :: decode( & mut decoder) . unwrap( ) ;
2660- assert_eq!( v, "\x08 " . to_owned( ) ) ;
2661-
2662- let mut decoder = Decoder :: new( from_str( "\" \\ n\" " ) . unwrap( ) ) ;
2663- let v: ~str = Decodable :: decode( & mut decoder) . unwrap( ) ;
2664- assert_eq!( v, "\n " . to_owned( ) ) ;
2665-
2666- let mut decoder = Decoder :: new( from_str( "\" \\ r\" " ) . unwrap( ) ) ;
2667- let v: ~str = Decodable :: decode( & mut decoder) . unwrap( ) ;
2668- assert_eq!( v, "\r " . to_owned( ) ) ;
2669-
2670- let mut decoder = Decoder :: new( from_str( "\" \\ t\" " ) . unwrap( ) ) ;
2671- let v: ~str = Decodable :: decode( & mut decoder) . unwrap( ) ;
2672- assert_eq!( v, "\t " . to_owned( ) ) ;
2673-
2674- let mut decoder = Decoder :: new( from_str( "\" \\ u12ab\" " ) . unwrap( ) ) ;
2675- let v: ~str = Decodable :: decode( & mut decoder) . unwrap( ) ;
2676- assert_eq!( v, "\u12ab " . to_owned( ) ) ;
2677-
2678- let mut decoder = Decoder :: new( from_str( "\" \\ uAB12\" " ) . unwrap( ) ) ;
2679- let v: ~str = Decodable :: decode( & mut decoder) . unwrap( ) ;
2680- assert_eq!( v, "\uAB12 " . to_owned( ) ) ;
2650+ let s = [ ( "\" \" " , "" ) ,
2651+ ( "\" foo\" " , "foo" ) ,
2652+ ( "\" \\ \" \" " , "\" " ) ,
2653+ ( "\" \\ b\" " , "\x08 " ) ,
2654+ ( "\" \\ n\" " , "\n " ) ,
2655+ ( "\" \\ r\" " , "\r " ) ,
2656+ ( "\" \\ t\" " , "\t " ) ,
2657+ ( "\" \\ u12ab\" " , "\u12ab " ) ,
2658+ ( "\" \\ uAB12\" " , "\uAB12 " ) ] ;
2659+
2660+ for & ( i, o) in s. iter( ) {
2661+ let mut decoder = Decoder :: new( from_str( i) . unwrap( ) ) ;
2662+ let v: StrBuf = Decodable :: decode( & mut decoder) . unwrap( ) ;
2663+ assert_eq!( v. as_slice( ) , o) ;
2664+
2665+ let mut decoder = Decoder :: new( from_str( i) . unwrap( ) ) ;
2666+ let v: ~str = Decodable :: decode( & mut decoder) . unwrap( ) ;
2667+ assert_eq!( v, o. to_owned( ) ) ;
2668+ }
26812669 }
26822670
26832671 #[ test]
0 commit comments