Skip to content

Commit 4e9a63f

Browse files
committed
std: add tests for decoding json enums
1 parent 4d6dcef commit 4e9a63f

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/libstd/json.rs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -851,7 +851,6 @@ impl<'self> serialize::Decoder for Decoder<'self> {
851851
852852
fn read_enum<T>(&self, name: &str, f: &fn() -> T) -> T {
853853
debug!("read_enum(%s)", name);
854-
if name != ~"option" { fail!(~"only supports the option enum") }
855854
f()
856855
}
857856
@@ -1720,6 +1719,20 @@ mod tests {
17201719
assert_eq!(value, Some(~"jodhpurs"));
17211720
}
17221721
1722+
#[test]
1723+
fn test_read_enum_no_args() {
1724+
let decoder = Decoder(from_str(~"\"Dog\"").unwrap());
1725+
let value: Animal = Decodable::decode(&decoder);
1726+
assert_eq!(value, Dog);
1727+
}
1728+
1729+
#[test]
1730+
fn test_read_enum_multiple_args() {
1731+
let decoder = Decoder(from_str(~"[\"Frog\",\"Henry\",349]").unwrap());
1732+
let value: Animal = Decodable::decode(&decoder);
1733+
assert_eq!(value, Frog(~"Henry", 349));
1734+
}
1735+
17231736
#[test]
17241737
fn test_multiline_errors() {
17251738
assert_eq!(from_str(~"{\n \"foo\":\n \"bar\""),

0 commit comments

Comments
 (0)