diff options
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/json.rs | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/libstd/json.rs b/src/libstd/json.rs index dc9f629d7e2..968c6d9e58b 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<T>(&self, name: &str, f: &fn() -> T) -> T { debug!("read_enum(%s)", name); - if name != ~"option" { fail!(~"only supports the option enum") } f() } @@ -1721,6 +1720,20 @@ mod tests { } #[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\""), Err(Error { |
