diff --git a/src/libstd/json.rs b/src/libstd/json.rs index dc9f629d7e23..968c6d9e58bb 100644 --- a/src/libstd/json.rs +++ b/src/libstd/json.rs @@ -851,7 +851,6 @@ impl<'self> serialize::Decoder for Decoder<'self> { fn read_enum(&self, name: &str, f: &fn() -> T) -> T { debug!("read_enum(%s)", name); - if name != ~"option" { fail!(~"only supports the option enum") } f() } @@ -1720,6 +1719,20 @@ mod tests { assert_eq!(value, Some(~"jodhpurs")); } + #[test] + fn test_read_enum_no_args() { + let decoder = Decoder(from_str(~"\"Dog\"").unwrap()); + let value: Animal = Decodable::decode(&decoder); + assert_eq!(value, Dog); + } + + #[test] + fn test_read_enum_multiple_args() { + let decoder = Decoder(from_str(~"[\"Frog\",\"Henry\",349]").unwrap()); + let value: Animal = Decodable::decode(&decoder); + assert_eq!(value, Frog(~"Henry", 349)); + } + #[test] fn test_multiline_errors() { assert_eq!(from_str(~"{\n \"foo\":\n \"bar\""),