added tests for parsing ModdedInstance
This commit is contained in:
180
tests/data/instance_complex.toml
Normal file
180
tests/data/instance_complex.toml
Normal file
@@ -0,0 +1,180 @@
|
||||
game = "sse"
|
||||
load_order = [
|
||||
"Skyrim.esm",
|
||||
"Update.esm",
|
||||
"Dawnguard.esm",
|
||||
"HearthFires.esm",
|
||||
"Dragonborn.esm",
|
||||
"ccBGSSSE001-Fish.esm",
|
||||
"ccQDRSSE001-SurvivalMode.esl",
|
||||
"ccBGSSSE037-Curios.esl",
|
||||
"ccBGSSSE025-AdvDSGS.esm",
|
||||
"_ResourcePack.esl",
|
||||
"SkyUI_SE.esp",
|
||||
]
|
||||
game_file_overrides = [[
|
||||
"skse64_loader.exe",
|
||||
"SkyrimSELauncher.exe",
|
||||
]]
|
||||
|
||||
[[mods]]
|
||||
id = "skyui"
|
||||
files = [
|
||||
[
|
||||
"SkyUI_SE.esp",
|
||||
"Data/SkyUI_SE.esp",
|
||||
],
|
||||
[
|
||||
"SkyUI_SE.bsa",
|
||||
"Data/SkyUI_SE.bsa",
|
||||
],
|
||||
]
|
||||
priority = 0
|
||||
|
||||
[[mods]]
|
||||
id = "skse"
|
||||
files = [
|
||||
[
|
||||
"Data/Scripts/actorbase.pex",
|
||||
"Data/Scripts/actorbase.pex",
|
||||
],
|
||||
[
|
||||
"Data/Scripts/weather.pex",
|
||||
"Data/Scripts/weather.pex",
|
||||
],
|
||||
[
|
||||
"skse64_loader.exe",
|
||||
"skse64_loader.exe",
|
||||
],
|
||||
[
|
||||
"Data/Scripts/headpart.pex",
|
||||
"Data/Scripts/headpart.pex",
|
||||
],
|
||||
[
|
||||
"Data/Scripts/soulgem.pex",
|
||||
"Data/Scripts/soulgem.pex",
|
||||
],
|
||||
[
|
||||
"Data/Scripts/modevent.pex",
|
||||
"Data/Scripts/modevent.pex",
|
||||
],
|
||||
[
|
||||
"Data/Scripts/actorvalueinfo.pex",
|
||||
"Data/Scripts/actorvalueinfo.pex",
|
||||
],
|
||||
[
|
||||
"Data/Scripts/book.pex",
|
||||
"Data/Scripts/book.pex",
|
||||
],
|
||||
[
|
||||
"Data/Scripts/potion.pex",
|
||||
"Data/Scripts/potion.pex",
|
||||
],
|
||||
[
|
||||
"Data/Scripts/spell.pex",
|
||||
"Data/Scripts/spell.pex",
|
||||
],
|
||||
[
|
||||
"Data/Scripts/perk.pex",
|
||||
"Data/Scripts/perk.pex",
|
||||
],
|
||||
[
|
||||
"Data/Scripts/objectreference.pex",
|
||||
"Data/Scripts/objectreference.pex",
|
||||
],
|
||||
]
|
||||
priority = 0
|
||||
|
||||
[[mods]]
|
||||
id = "deadly_spells"
|
||||
files = [
|
||||
[
|
||||
"000 Core Files/textures/impactdecals/decalsnowhole01_n.dds",
|
||||
"Data/textures/impactdecals/decalsnowhole01_n.dds",
|
||||
],
|
||||
[
|
||||
"40 Two Fire Esp/textures/impactdecals/decalflamespread01_g.dds",
|
||||
"Data/textures/impactdecals/decalflamespread01_g.dds",
|
||||
],
|
||||
[
|
||||
"000 Core Files/textures/impactdecals/decalsparkburn01_g.dds",
|
||||
"Data/textures/impactdecals/decalsparkburn01_g.dds",
|
||||
],
|
||||
[
|
||||
"40 Two Fire Esp/textures/impactdecals/decalflamespread01.dds",
|
||||
"Data/textures/impactdecals/decalflamespread01.dds",
|
||||
],
|
||||
[
|
||||
"000 Core Files/textures/impactdecals/decalfrostimpact01_n.dds",
|
||||
"Data/textures/impactdecals/decalfrostimpact01_n.dds",
|
||||
],
|
||||
[
|
||||
"000 Core Files/textures/impactdecals/decalspitimpact01_n.dds",
|
||||
"Data/textures/impactdecals/decalspitimpact01_n.dds",
|
||||
],
|
||||
[
|
||||
"40 Two Fire Esp/DeadlySpellImpacts - Two Fire.esp",
|
||||
"Data/DeadlySpellImpacts - Two Fire.esp",
|
||||
],
|
||||
[
|
||||
"000 Core Files/textures/impactdecals/decalsnowmelt01.dds",
|
||||
"Data/textures/impactdecals/decalsnowmelt01.dds",
|
||||
],
|
||||
[
|
||||
"000 Core Files/textures/impactdecals/decalspitimpact01.dds",
|
||||
"Data/textures/impactdecals/decalspitimpact01.dds",
|
||||
],
|
||||
[
|
||||
"000 Core Files/textures/impactdecals/decalsnowhole01.dds",
|
||||
"Data/textures/impactdecals/decalsnowhole01.dds",
|
||||
],
|
||||
[
|
||||
"000 Core Files/textures/impactdecals/decalsparkburn01.dds",
|
||||
"Data/textures/impactdecals/decalsparkburn01.dds",
|
||||
],
|
||||
[
|
||||
"10 Fire Cracks/textures/impactdecals/decalflameburn01_g.dds",
|
||||
"Data/textures/impactdecals/decalflameburn01_g.dds",
|
||||
],
|
||||
[
|
||||
"000 Core Files/textures/impactdecals/decalsnowmelt01_n.dds",
|
||||
"Data/textures/impactdecals/decalsnowmelt01_n.dds",
|
||||
],
|
||||
[
|
||||
"000 Core Files/textures/impactdecals/decalfrostimpact01.dds",
|
||||
"Data/textures/impactdecals/decalfrostimpact01.dds",
|
||||
],
|
||||
[
|
||||
"10 Fire Cracks/textures/impactdecals/decalflameburn01_n.dds",
|
||||
"Data/textures/impactdecals/decalflameburn01_n.dds",
|
||||
],
|
||||
[
|
||||
"000 Core Files/textures/impactdecals/decalsnowmelt01_g.dds",
|
||||
"Data/textures/impactdecals/decalsnowmelt01_g.dds",
|
||||
],
|
||||
[
|
||||
"000 Core Files/textures/impactdecals/decalsparkburn01_n.dds",
|
||||
"Data/textures/impactdecals/decalsparkburn01_n.dds",
|
||||
],
|
||||
[
|
||||
"000 Core Files/textures/impactdecals/decalsnowhole01_g.dds",
|
||||
"Data/textures/impactdecals/decalsnowhole01_g.dds",
|
||||
],
|
||||
[
|
||||
"40 Two Fire Esp/Manual Installation of the Two Fire Option.txt",
|
||||
"Data/Manual Installation of the Two Fire Option.txt",
|
||||
],
|
||||
[
|
||||
"10 Fire Cracks/textures/impactdecals/decalflameburn01.dds",
|
||||
"Data/textures/impactdecals/decalflameburn01.dds",
|
||||
],
|
||||
[
|
||||
"40 Two Fire Esp/textures/impactdecals/decalflamespread01_n.dds",
|
||||
"Data/textures/impactdecals/decalflamespread01_n.dds",
|
||||
],
|
||||
[
|
||||
"000 Core Files/DeadlySpellImpacts.esp",
|
||||
"Data/DeadlySpellImpacts.esp",
|
||||
],
|
||||
]
|
||||
priority = 1
|
||||
2
tests/data/instance_minimal.toml
Normal file
2
tests/data/instance_minimal.toml
Normal file
@@ -0,0 +1,2 @@
|
||||
game = "sse"
|
||||
|
||||
@@ -8,9 +8,16 @@ path = "/home/user/games/sse"
|
||||
[instances.example1]
|
||||
path = "example1.toml"
|
||||
|
||||
|
||||
[instances.example2]
|
||||
path = "/home/user/example2.toml"
|
||||
|
||||
[instances.instance_minimal]
|
||||
path = "instance_minimal.toml"
|
||||
|
||||
[instances.instance_complex]
|
||||
path = "instance_complex.toml"
|
||||
|
||||
[mods.mod1]
|
||||
path = "/home/user/mods/mod1"
|
||||
|
||||
@@ -18,4 +25,4 @@ path = "/home/user/mods/mod1"
|
||||
path = "mod2"
|
||||
|
||||
[mods.mod3]
|
||||
path = "mods3"
|
||||
path = "mod3"
|
||||
|
||||
53
tests/modded_instance_test.rs
Normal file
53
tests/modded_instance_test.rs
Normal file
@@ -0,0 +1,53 @@
|
||||
use std::path::PathBuf;
|
||||
|
||||
use fomod_manager::types::{Link, RootConfig};
|
||||
|
||||
fn get_parent() -> PathBuf {
|
||||
PathBuf::from(file!()).parent().unwrap().to_owned()
|
||||
}
|
||||
|
||||
fn load_root() -> RootConfig {
|
||||
RootConfig::load_from_file(get_parent().join("data/root_config_complex.toml")).unwrap()
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_minimal() {
|
||||
let root = load_root();
|
||||
|
||||
let inst = root.load_instance_by_id("instance_minimal");
|
||||
|
||||
assert!(inst.is_ok(), "Failed to load instance");
|
||||
|
||||
let unwraped = inst.expect("Asserted before");
|
||||
|
||||
assert_eq!(unwraped.game_id(), "sse");
|
||||
|
||||
assert!(unwraped.mods().is_empty());
|
||||
assert!(unwraped.game_file_overrides().is_empty());
|
||||
assert!(unwraped.load_order().is_empty());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_complex() {
|
||||
let root = load_root();
|
||||
|
||||
let inst = root.load_instance_by_id("instance_complex");
|
||||
|
||||
assert!(inst.is_ok(), "Failed to load instance");
|
||||
|
||||
let unwraped = inst.expect("Asserted before");
|
||||
|
||||
assert_eq!(unwraped.game_id(), "sse");
|
||||
assert_eq!(unwraped.load_order().len(), 11);
|
||||
assert_eq!(
|
||||
unwraped.game_file_overrides().first().unwrap(),
|
||||
&Link::new("skse64_loader.exe", "SkyrimSELauncher.exe")
|
||||
);
|
||||
|
||||
assert_eq!(unwraped.mods().len(), 3);
|
||||
let test_mod = unwraped.mods().iter().find(|e| e.mod_id() == "skyui");
|
||||
assert!(test_mod.is_some());
|
||||
|
||||
assert_eq!(test_mod.unwrap().priority(), 0);
|
||||
assert_eq!(test_mod.unwrap().files().len(), 2);
|
||||
}
|
||||
@@ -46,6 +46,11 @@ fn parse_complex() {
|
||||
assert!(
|
||||
config
|
||||
.mod_by_id("mod1")
|
||||
.is_some_and(|e| e.path().ends_with("mods/mod1"))
|
||||
.is_some_and(|e| e.path() == "/home/user/mods/mod1")
|
||||
);
|
||||
assert!(
|
||||
config
|
||||
.mod_by_id("mod2")
|
||||
.is_some_and(|e| e.path().ends_with("mod2"))
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user