|
1 | 1 | pub mod constants;
|
2 | 2 | pub mod ds;
|
3 | 3 | mod process;
|
4 |
| - |
| 4 | +use constants::Message; |
5 | 5 | use ds::mismatch::Mismatch;
|
6 |
| -pub fn compare_jsons(a: &str, b: &str) -> Result<Mismatch, serde_json::Error> { |
7 |
| - let value1 = serde_json::from_str(a)?; |
8 |
| - let value2 = serde_json::from_str(b)?; |
| 6 | + |
| 7 | +pub fn compare_jsons(a: &str, b: &str) -> Result<Mismatch, Message> { |
| 8 | + let value1 = match serde_json::from_str(a) { |
| 9 | + Ok(val1) => val1, |
| 10 | + Err(_) => return Err(Message::JSON1), |
| 11 | + }; |
| 12 | + let value2 = match serde_json::from_str(b) { |
| 13 | + Ok(val2) => val2, |
| 14 | + Err(_) => return Err(Message::JSON2), |
| 15 | + }; |
9 | 16 | Ok(process::match_json(&value1, &value2))
|
10 | 17 | }
|
11 | 18 |
|
@@ -139,4 +146,28 @@ mod tests {
|
139 | 146 | Mismatch::new(KeyNode::Nil, KeyNode::Nil, KeyNode::Nil)
|
140 | 147 | );
|
141 | 148 | }
|
| 149 | + |
| 150 | + #[test] |
| 151 | + fn parse_err_source_one() { |
| 152 | + let invalid_json1 = r#"{invalid: json}"#; |
| 153 | + let valid_json2 = r#"{"a":"b"}"#; |
| 154 | + match compare_jsons(invalid_json1, valid_json2) { |
| 155 | + Ok(_) => panic!("This shouldn't be an Ok"), |
| 156 | + Err(err) => { |
| 157 | + assert_eq!(Message::JSON1, err); |
| 158 | + }, |
| 159 | + }; |
| 160 | + } |
| 161 | + |
| 162 | + #[test] |
| 163 | + fn parse_err_source_two() { |
| 164 | + let valid_json1 = r#"{"a":"b"}"#; |
| 165 | + let invalid_json2 = r#"{invalid: json}"#; |
| 166 | + match compare_jsons(valid_json1, invalid_json2) { |
| 167 | + Ok(_) => panic!("This shouldn't be an Ok"), |
| 168 | + Err(err) => { |
| 169 | + assert_eq!(Message::JSON2, err); |
| 170 | + }, |
| 171 | + }; |
| 172 | + } |
142 | 173 | }
|
0 commit comments