@@ -2205,6 +2205,10 @@ impl ToJson for ~str {
2205
2205
fn to_json ( & self ) -> Json { String ( ( * self ) . clone ( ) ) }
2206
2206
}
2207
2207
2208
+ impl ToJson for StrBuf {
2209
+ fn to_json ( & self ) -> Json { String ( ( * self ) . as_slice ( ) . into_owned ( ) ) }
2210
+ }
2211
+
2208
2212
impl < A : ToJson , B : ToJson > ToJson for ( A , B ) {
2209
2213
fn to_json ( & self ) -> Json {
2210
2214
match * self {
@@ -2643,41 +2647,25 @@ mod tests {
2643
2647
2644
2648
#[ test]
2645
2649
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
+ }
2681
2669
}
2682
2670
2683
2671
#[ test]
0 commit comments