about summary refs log tree commit diff
diff options
context:
space:
mode:
authorErick Tryzelaar <erick.tryzelaar@gmail.com>2013-03-27 00:13:01 -0700
committerErick Tryzelaar <erick.tryzelaar@gmail.com>2013-03-27 07:04:11 -0700
commitb10b8c3ee41447299504127c341bc363d180356c (patch)
tree8b72db30a91c3610b90bc130358709f58ef8a7e6
parentc9188c83015e25978b9c6c4864040dd958bc54b1 (diff)
downloadrust-b10b8c3ee41447299504127c341bc363d180356c.tar.gz
rust-b10b8c3ee41447299504127c341bc363d180356c.zip
std: Add tests for json decoding options
-rw-r--r--src/libstd/json.rs18
-rw-r--r--src/libsyntax/parse/mod.rs37
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(