diff options
| author | Erick Tryzelaar <erick.tryzelaar@gmail.com> | 2013-03-26 17:42:01 -0700 |
|---|---|---|
| committer | Erick Tryzelaar <erick.tryzelaar@gmail.com> | 2013-03-27 07:04:14 -0700 |
| commit | 4e9a63ff917af32bd9ddfee65f5871a5586771e1 (patch) | |
| tree | e08cf0f8eb9b6e0fc8d4bb58828cd8d264be43a5 /src/libstd | |
| parent | 4d6dcefcbb8688b69dd80bc7382a2f593c3b08d8 (diff) | |
| download | rust-4e9a63ff917af32bd9ddfee65f5871a5586771e1.tar.gz rust-4e9a63ff917af32bd9ddfee65f5871a5586771e1.zip | |
std: add tests for decoding json enums
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 { |
