about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librbml/lib.rs10
-rw-r--r--src/libserialize/json.rs17
2 files changed, 16 insertions, 11 deletions
diff --git a/src/librbml/lib.rs b/src/librbml/lib.rs
index 9bb5777ec9a..1dfc0d970a9 100644
--- a/src/librbml/lib.rs
+++ b/src/librbml/lib.rs
@@ -562,10 +562,12 @@ pub mod reader {
                          f: |&mut Decoder<'doc>| -> DecodeResult<T>) -> DecodeResult<T> {
             debug!("read_tuple()");
             self.read_seq(|d, len| {
-                assert!(len == tuple_len,
-                        "expected tuple of length `{}`, found tuple \
-                         of length `{}`", tuple_len, len);
-                f(d)
+                if len == tuple_len {
+                    f(d)
+                } else {
+                    Err(Expected(format!("Expected tuple of length `{}`, \
+                                          found tuple of length `{}`", tuple_len, len)))
+                }
             })
         }
 
diff --git a/src/libserialize/json.rs b/src/libserialize/json.rs
index e5847ce58db..06f934c075d 100644
--- a/src/libserialize/json.rs
+++ b/src/libserialize/json.rs
@@ -2153,13 +2153,17 @@ impl ::Decoder<DecoderError> for Decoder {
         Ok(value)
     }
 
-    fn read_tuple<T>(&mut self, tuple_len: uint, f: |&mut Decoder| -> DecodeResult<T>) -> DecodeResult<T> {
+    fn read_tuple<T>(&mut self,
+                     tuple_len: uint,
+                     f: |&mut Decoder| -> DecodeResult<T>)
+                     -> DecodeResult<T> {
         debug!("read_tuple()");
         self.read_seq(|d, len| {
-            assert!(len == tuple_len,
-                    "expected tuple of length `{}`, found tuple \
-                         of length `{}`", tuple_len, len);
-            f(d)
+            if len == tuple_len {
+                f(d)
+            } else {
+                Err(ExpectedError(format!("Tuple{}", tuple_len), format!("Tuple{}", len)))
+            }
         })
     }
 
@@ -2893,9 +2897,8 @@ mod tests {
     }
 
     #[test]
-    #[should_fail]
     fn test_decode_tuple_malformed_length() {
-        let _ = super::decode::<(uint, uint)>("[1, 2, 3]");
+        assert!(super::decode::<(uint, uint)>("[1, 2, 3]").is_err());
     }
 
     #[test]