diff options
| author | Erick Tryzelaar <erick.tryzelaar@gmail.com> | 2013-03-27 00:13:01 -0700 |
|---|---|---|
| committer | Erick Tryzelaar <erick.tryzelaar@gmail.com> | 2013-03-27 07:04:11 -0700 |
| commit | b10b8c3ee41447299504127c341bc363d180356c (patch) | |
| tree | 8b72db30a91c3610b90bc130358709f58ef8a7e6 | |
| parent | c9188c83015e25978b9c6c4864040dd958bc54b1 (diff) | |
| download | rust-b10b8c3ee41447299504127c341bc363d180356c.tar.gz rust-b10b8c3ee41447299504127c341bc363d180356c.zip | |
std: Add tests for json decoding options
| -rw-r--r-- | src/libstd/json.rs | 18 | ||||
| -rw-r--r-- | src/libsyntax/parse/mod.rs | 37 |
2 files changed, 42 insertions, 13 deletions
diff --git a/src/libstd/json.rs b/src/libstd/json.rs index bbca4805d48..3868b689a3f 100644 --- a/src/libstd/json.rs +++ b/src/libstd/json.rs @@ -1236,6 +1236,8 @@ mod tests { use core::prelude::*; use core::hashmap::linear::LinearMap; + use std::serialize::Decodable; + fn mk_object(items: &[(~str, Json)]) -> Json { let mut d = ~LinearMap::new(); @@ -1389,6 +1391,8 @@ mod tests { } #[auto_encode] + #[auto_decode] + #[deriving(Eq)] enum Animal { Dog, Frog(~str, int) @@ -1707,6 +1711,20 @@ mod tests { } #[test] + fn test_read_none() { + let decoder = Decoder(from_str(~"null").unwrap()); + let value: Option<~str> = Decodable::decode(&decoder); + assert_eq!(value, None); + } + + #[test] + fn test_read_some() { + let decoder = Decoder(from_str(~"\"jodhpurs\"").unwrap()); + let value: Option<~str> = Decodable::decode(&decoder); + assert_eq!(value, Some(~"jodhpurs")); + } + + #[test] fn test_multiline_errors() { assert_eq!(from_str(~"{\n \"foo\":\n \"bar\""), Err(Error { diff --git a/src/libsyntax/parse/mod.rs b/src/libsyntax/parse/mod.rs index a0c73668a05..7f6b511f9f0 100644 --- a/src/libsyntax/parse/mod.rs +++ b/src/libsyntax/parse/mod.rs @@ -326,19 +326,30 @@ mod test { @~"fn foo (x : int) { x; }", ~[], new_parse_sess(None)); - assert_eq!(to_json_str(@tts), - ~"[[\"tt_tok\",[null,[\"IDENT\",[\"fn\",false]]]],\ - [\"tt_tok\",[null,[\"IDENT\",[\"foo\",false]]]],\ - [\"tt_delim\",[[[\"tt_tok\",[null,[\"LPAREN\",[]]]],\ - [\"tt_tok\",[null,[\"IDENT\",[\"x\",false]]]],\ - [\"tt_tok\",[null,[\"COLON\",[]]]],\ - [\"tt_tok\",[null,[\"IDENT\",[\"int\",false]]]],\ - [\"tt_tok\",[null,[\"RPAREN\",[]]]]]]],\ - [\"tt_delim\",[[[\"tt_tok\",[null,[\"LBRACE\",[]]]],\ - [\"tt_tok\",[null,[\"IDENT\",[\"x\",false]]]],\ - [\"tt_tok\",[null,[\"SEMI\",[]]]],\ - [\"tt_tok\",[null,[\"RBRACE\",[]]]]]]]]" - ); + assert_eq!( + to_json_str(@tts), + ~"[\ + [\"tt_tok\",[null,[\"IDENT\",[\"fn\",false]]]],\ + [\"tt_tok\",[null,[\"IDENT\",[\"foo\",false]]]],\ + [\"tt_delim\",[\ + [\ + [\"tt_tok\",[null,[\"LPAREN\",[]]]],\ + [\"tt_tok\",[null,[\"IDENT\",[\"x\",false]]]],\ + [\"tt_tok\",[null,[\"COLON\",[]]]],\ + [\"tt_tok\",[null,[\"IDENT\",[\"int\",false]]]],\ + [\"tt_tok\",[null,[\"RPAREN\",[]]]]\ + ]\ + ]],\ + [\"tt_delim\",[\ + [\ + [\"tt_tok\",[null,[\"LBRACE\",[]]]],\ + [\"tt_tok\",[null,[\"IDENT\",[\"x\",false]]]],\ + [\"tt_tok\",[null,[\"SEMI\",[]]]],\ + [\"tt_tok\",[null,[\"RBRACE\",[]]]]\ + ]\ + ]]\ + ]" + ); let ast1 = new_parser_from_tts(new_parse_sess(None),~[],tts) .parse_item(~[]); let ast2 = parse_item_from_source_str( |
