mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
Improve test coverage of YAML parsing code
This commit is contained in:
@@ -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 ]}");
|
||||
|
||||
@@ -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}");
|
||||
|
||||
@@ -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 =
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user