Add web modules (crypto, wiki, define, urban, tinyurl, down) + shared http/json
All checks were successful
ci / check (push) Successful in 48s
All checks were successful
ci / check (push) Successful in 48s
This commit is contained in:
parent
7846f91afe
commit
c3139b4e4d
14 changed files with 794 additions and 130 deletions
38
tests/json.rs
Normal file
38
tests/json.rs
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
use rustbot::json::Json;
|
||||
|
||||
#[test]
|
||||
fn parses_object_and_navigates() {
|
||||
let j = Json::parse(r#"{"a":"x","b":{"c":42}}"#).unwrap();
|
||||
assert_eq!(j.get("a").and_then(Json::as_str), Some("x"));
|
||||
assert_eq!(
|
||||
j.get("b").and_then(|v| v.get("c")).and_then(Json::as_f64),
|
||||
Some(42.0)
|
||||
);
|
||||
assert!(j.get("missing").is_none());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parses_nested_arrays() {
|
||||
let j = Json::parse(r#"["q",["t1","t2"],[""],["u1"]]"#).unwrap();
|
||||
assert_eq!(j.idx(0).and_then(Json::as_str), Some("q"));
|
||||
assert_eq!(
|
||||
j.idx(1).and_then(|v| v.idx(1)).and_then(Json::as_str),
|
||||
Some("t2")
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parses_scalars_and_escapes() {
|
||||
assert_eq!(Json::parse("true"), Some(Json::Bool(true)));
|
||||
assert_eq!(Json::parse("null"), Some(Json::Null));
|
||||
assert_eq!(Json::parse("-3.5e2").and_then(|j| j.as_f64()), Some(-350.0));
|
||||
let s = Json::parse(r#""a\"bé""#).unwrap();
|
||||
assert_eq!(s.as_str(), Some("a\"bé"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn rejects_garbage() {
|
||||
assert!(Json::parse("{oops").is_none());
|
||||
assert!(Json::parse("").is_none());
|
||||
assert!(Json::parse("[1,2").is_none());
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue