Improve test coverage of YAML parsing code

This commit is contained in:
Oliver Hamlet
2025-03-25 22:02:34 +00:00
parent 415242b299
commit 967ce652c1
4 changed files with 62 additions and 0 deletions
+11
View File
@@ -153,6 +153,17 @@ mod tests {
assert!(Group::try_from(&yaml).is_err());
}
#[test]
fn should_error_if_after_is_not_an_array_of_strings() {
let yaml = parse("{name: group1, after: other_group}");
assert!(Group::try_from(&yaml).is_err());
let yaml = parse("{name: group1, after: [0, 1]}");
assert!(Group::try_from(&yaml).is_err());
}
#[test]
fn should_set_all_given_fields() {
let yaml = parse("{name: group1, description: text, after: [ other_group ]}");
+14
View File
@@ -140,6 +140,20 @@ mod tests {
assert!(Location::try_from(&yaml).is_err());
}
#[test]
fn should_error_if_link_is_not_a_string() {
let yaml = parse("{link: [https://www.example.com], name: example}");
assert!(Location::try_from(&yaml).is_err());
}
#[test]
fn should_error_if_name_is_not_a_string() {
let yaml = parse("{link: https://www.example.com, name: [example]}");
assert!(Location::try_from(&yaml).is_err());
}
#[test]
fn should_error_if_name_is_missing() {
let yaml = parse("{link: https://www.example.com}");
+30
View File
@@ -248,6 +248,36 @@ mod tests {
assert!(PluginCleaningData::try_from(&yaml).is_err());
}
#[test]
fn should_error_if_a_count_is_not_a_number() {
let yaml = parse("{crc: 0x12345678, util: cleaner, itm: true}");
assert!(PluginCleaningData::try_from(&yaml).is_err());
let yaml = parse("{crc: 0x12345678, util: cleaner, udr: true}");
assert!(PluginCleaningData::try_from(&yaml).is_err());
let yaml = parse("{crc: 0x12345678, util: cleaner, nav: true}");
assert!(PluginCleaningData::try_from(&yaml).is_err());
}
#[test]
fn should_error_if_a_count_does_not_fit_in_a_u32() {
let yaml = parse("{crc: 0x12345678, util: cleaner, itm: -1}");
assert!(PluginCleaningData::try_from(&yaml).is_err());
let yaml = parse("{crc: 0x12345678, util: cleaner, udr: -2}");
assert!(PluginCleaningData::try_from(&yaml).is_err());
let yaml = parse("{crc: 0x12345678, util: cleaner, nav: -3}");
assert!(PluginCleaningData::try_from(&yaml).is_err());
}
#[test]
fn should_set_all_given_fields() {
let yaml =
+7
View File
@@ -938,6 +938,13 @@ mod tests {
assert!(PluginMetadata::try_from(&yaml).is_err());
}
#[test]
fn should_error_if_a_field_that_should_be_an_array_is_not() {
let yaml = parse("{name: 'Blank.esp', after: Blank.esm}");
assert!(PluginMetadata::try_from(&yaml).is_err());
}
}
mod emit_yaml {