提交 b10b8c3e 编写于 作者: E Erick Tryzelaar

std: Add tests for json decoding options

上级 c9188c83
...@@ -1236,6 +1236,8 @@ mod tests { ...@@ -1236,6 +1236,8 @@ mod tests {
use core::prelude::*; use core::prelude::*;
use core::hashmap::linear::LinearMap; use core::hashmap::linear::LinearMap;
use std::serialize::Decodable;
fn mk_object(items: &[(~str, Json)]) -> Json { fn mk_object(items: &[(~str, Json)]) -> Json {
let mut d = ~LinearMap::new(); let mut d = ~LinearMap::new();
...@@ -1389,6 +1391,8 @@ fn test_write_object_pretty() { ...@@ -1389,6 +1391,8 @@ fn test_write_object_pretty() {
} }
#[auto_encode] #[auto_encode]
#[auto_decode]
#[deriving(Eq)]
enum Animal { enum Animal {
Dog, Dog,
Frog(~str, int) Frog(~str, int)
...@@ -1706,6 +1710,20 @@ fn test_read_object() { ...@@ -1706,6 +1710,20 @@ fn test_read_object() {
])); ]));
} }
#[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] #[test]
fn test_multiline_errors() { fn test_multiline_errors() {
assert_eq!(from_str(~"{\n \"foo\":\n \"bar\""), assert_eq!(from_str(~"{\n \"foo\":\n \"bar\""),
......
...@@ -326,19 +326,30 @@ mod test { ...@@ -326,19 +326,30 @@ mod test {
@~"fn foo (x : int) { x; }", @~"fn foo (x : int) { x; }",
~[], ~[],
new_parse_sess(None)); new_parse_sess(None));
assert_eq!(to_json_str(@tts), assert_eq!(
~"[[\"tt_tok\",[null,[\"IDENT\",[\"fn\",false]]]],\ to_json_str(@tts),
[\"tt_tok\",[null,[\"IDENT\",[\"foo\",false]]]],\ ~"[\
[\"tt_delim\",[[[\"tt_tok\",[null,[\"LPAREN\",[]]]],\ [\"tt_tok\",[null,[\"IDENT\",[\"fn\",false]]]],\
[\"tt_tok\",[null,[\"IDENT\",[\"x\",false]]]],\ [\"tt_tok\",[null,[\"IDENT\",[\"foo\",false]]]],\
[\"tt_tok\",[null,[\"COLON\",[]]]],\ [\"tt_delim\",[\
[\"tt_tok\",[null,[\"IDENT\",[\"int\",false]]]],\ [\
[\"tt_tok\",[null,[\"RPAREN\",[]]]]]]],\ [\"tt_tok\",[null,[\"LPAREN\",[]]]],\
[\"tt_delim\",[[[\"tt_tok\",[null,[\"LBRACE\",[]]]],\ [\"tt_tok\",[null,[\"IDENT\",[\"x\",false]]]],\
[\"tt_tok\",[null,[\"IDENT\",[\"x\",false]]]],\ [\"tt_tok\",[null,[\"COLON\",[]]]],\
[\"tt_tok\",[null,[\"SEMI\",[]]]],\ [\"tt_tok\",[null,[\"IDENT\",[\"int\",false]]]],\
[\"tt_tok\",[null,[\"RBRACE\",[]]]]]]]]" [\"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) let ast1 = new_parser_from_tts(new_parse_sess(None),~[],tts)
.parse_item(~[]); .parse_item(~[]);
let ast2 = parse_item_from_source_str( let ast2 = parse_item_from_source_str(
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册