[wip] unit tests
- strip unneeded mod `test_util::mock_ids::tests` - coverage for `sharry::uri`
This commit is contained in:
parent
037e59df4f
commit
1ac4db28ed
2 changed files with 86 additions and 61 deletions
|
|
@ -28,7 +28,7 @@ impl AsRef<[u8]> for Uri {
|
|||
|
||||
fn captured(caps: &Captures, name: &str) -> String {
|
||||
caps.name(name)
|
||||
.unwrap_or_else(|| panic!("{name} not captured"))
|
||||
.unwrap_or_else(|| panic!("{name:?} not captured"))
|
||||
.as_str()
|
||||
.to_string()
|
||||
}
|
||||
|
|
@ -103,6 +103,36 @@ mod tests {
|
|||
test_util::check_trait,
|
||||
};
|
||||
|
||||
#[test]
|
||||
fn check_captured_works() {
|
||||
let cases = [
|
||||
// simple http host
|
||||
("http://example.com", "http", "example.com"),
|
||||
// https host with port
|
||||
("https://my-host:8080", "https", "my-host:8080"),
|
||||
// trailing slash
|
||||
("scheme://host/", "scheme", "host"),
|
||||
// with path
|
||||
("scheme://host/path/to/whatever", "scheme", "host"),
|
||||
// custom scheme
|
||||
("custom+scheme://host", "custom+scheme", "host"),
|
||||
];
|
||||
|
||||
for (good, scheme, host) in cases {
|
||||
let caps = SHARRY_URI_RE.captures(good).unwrap();
|
||||
|
||||
assert_eq!(captured(&caps, "scheme"), scheme);
|
||||
assert_eq!(captured(&caps, "host"), host);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic = "\"foo\" not captured"]
|
||||
fn make_captured_panic() {
|
||||
let caps = SHARRY_URI_RE.captures("http://example.com").unwrap();
|
||||
captured(&caps, "foo");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn basic_traits_working() {
|
||||
let cases = [
|
||||
|
|
|
|||
|
|
@ -109,73 +109,68 @@ impl From<bool> for FileID {
|
|||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
#[test]
|
||||
fn true_makes_valids() {
|
||||
let uri = Uri::from(true);
|
||||
let alias_id = AliasID::from(true);
|
||||
let share_id = ShareID::from(true);
|
||||
let file_id = FileID::from(true);
|
||||
|
||||
assert!((&uri, &alias_id).check().is_ok());
|
||||
assert!(share_id.check().is_ok());
|
||||
assert!((&share_id, &file_id).check().is_ok());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn default_is_valid() {
|
||||
let uri = Uri::default();
|
||||
let alias_id = AliasID::from(true); // no `impl Default`
|
||||
let share_id = ShareID::default();
|
||||
let file_id = FileID::default();
|
||||
|
||||
assert!((&uri, &alias_id).check().is_ok());
|
||||
assert!(share_id.check().is_ok());
|
||||
assert!((&share_id, &file_id).check().is_ok());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn false_makes_invalids() {
|
||||
use crate::Parameter;
|
||||
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn true_makes_valids() {
|
||||
let uri = Uri::from(true);
|
||||
let alias_id = AliasID::from(true);
|
||||
let share_id = ShareID::from(true);
|
||||
let file_id = FileID::from(true);
|
||||
|
||||
assert!((&uri, &alias_id).check().is_ok());
|
||||
assert!(share_id.check().is_ok());
|
||||
assert!((&share_id, &file_id).check().is_ok());
|
||||
fn test_check(value: impl CheckID, callback: impl FnOnce(&Parameter) -> bool) {
|
||||
let check = value.check().unwrap_err();
|
||||
let p = check.get_invalid_param().unwrap();
|
||||
assert!(callback(p));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn default_is_valid() {
|
||||
let uri = Uri::default();
|
||||
let alias_id = AliasID::from(true); // no `impl Default`
|
||||
let share_id = ShareID::default();
|
||||
let file_id = FileID::default();
|
||||
// valid ids
|
||||
let uri = Uri::from(true);
|
||||
let alias_id = AliasID::from(true);
|
||||
let share_id = ShareID::from(true);
|
||||
let file_id = FileID::from(true);
|
||||
|
||||
assert!((&uri, &alias_id).check().is_ok());
|
||||
assert!(share_id.check().is_ok());
|
||||
assert!((&share_id, &file_id).check().is_ok());
|
||||
}
|
||||
// invalid ids
|
||||
let uri_i = Uri::from(false);
|
||||
let alias_id_i = AliasID::from(false);
|
||||
let share_id_i = ShareID::from(false);
|
||||
let file_id_i = FileID::from(false);
|
||||
|
||||
#[test]
|
||||
fn false_makes_invalids() {
|
||||
fn test_check(value: impl CheckID, callback: impl FnOnce(&Parameter) -> bool) {
|
||||
let check = value.check().unwrap_err();
|
||||
let p = check.get_invalid_param().unwrap();
|
||||
assert!(callback(p));
|
||||
}
|
||||
// param checks
|
||||
let is_uri_i = |p: &Parameter| matches!(p, Parameter::Uri(_));
|
||||
let is_alias_id_i = |p: &Parameter| matches!(p, Parameter::AliasID(_));
|
||||
let is_share_id_i = |p: &Parameter| matches!(p, Parameter::ShareID(_));
|
||||
let is_file_id_i = |p: &Parameter| matches!(p, Parameter::FileID(_));
|
||||
|
||||
// valid ids
|
||||
let uri = Uri::from(true);
|
||||
let alias_id = AliasID::from(true);
|
||||
let share_id = ShareID::from(true);
|
||||
let file_id = FileID::from(true);
|
||||
// uri + alias
|
||||
test_check((&uri_i, &alias_id_i), is_uri_i);
|
||||
test_check((&uri_i, &alias_id), is_uri_i);
|
||||
test_check((&uri, &alias_id_i), is_alias_id_i);
|
||||
|
||||
// invalid ids
|
||||
let uri_i = Uri::from(false);
|
||||
let alias_id_i = AliasID::from(false);
|
||||
let share_id_i = ShareID::from(false);
|
||||
let file_id_i = FileID::from(false);
|
||||
// share
|
||||
test_check(&share_id_i, is_share_id_i);
|
||||
|
||||
// param checks
|
||||
let is_uri_i = |p: &Parameter| matches!(p, Parameter::Uri(_));
|
||||
let is_alias_id_i = |p: &Parameter| matches!(p, Parameter::AliasID(_));
|
||||
let is_share_id_i = |p: &Parameter| matches!(p, Parameter::ShareID(_));
|
||||
let is_file_id_i = |p: &Parameter| matches!(p, Parameter::FileID(_));
|
||||
|
||||
// uri + alias
|
||||
test_check((&uri_i, &alias_id_i), is_uri_i);
|
||||
test_check((&uri_i, &alias_id), is_uri_i);
|
||||
test_check((&uri, &alias_id_i), is_alias_id_i);
|
||||
|
||||
// share
|
||||
test_check(&share_id_i, is_share_id_i);
|
||||
|
||||
// share + file
|
||||
test_check((&share_id_i, &file_id_i), is_share_id_i);
|
||||
test_check((&share_id_i, &file_id), is_share_id_i);
|
||||
test_check((&share_id, &file_id_i), is_file_id_i);
|
||||
}
|
||||
// share + file
|
||||
test_check((&share_id_i, &file_id_i), is_share_id_i);
|
||||
test_check((&share_id_i, &file_id), is_share_id_i);
|
||||
test_check((&share_id, &file_id_i), is_file_id_i);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue