public void TestVersionRequirements() { //test version on missing mod var list1 = new List <LocalMod> { Make("A", refs: new[] { "[email protected]" }) }; ModLoader.EnsureTargetVersionsMet(list1); //test passed version check var list2 = new List <LocalMod> { Make("A", refs: new[] { "[email protected]" }), Make("B", version: "1.2") }; ModLoader.EnsureTargetVersionsMet(list2); //test failed version check var list3 = new List <LocalMod> { Make("A", refs: new[] { "[email protected]" }), Make("B") }; AssertModException( () => ModLoader.EnsureTargetVersionsMet(list3), new[] { "A" }, "A requires version 1.2+ of B but version 1.0.0.0 is installed"); //test one pass, two fail version check var list4 = new List <LocalMod> { Make("A"), Make("B", refs: new[] { "[email protected]" }), Make("C", refs: new[] { "[email protected]" }), Make("D", refs: new[] { "[email protected]" }) }; AssertModException( () => ModLoader.EnsureTargetVersionsMet(list4), new[] { "C", "D" }, "C requires version 1.1+ of A but version 1.0.0.0 is installed\r\n" + "D requires version 1.0.0.1+ of A but version 1.0.0.0 is installed"); //test weak version check (missing) var list5 = new List <LocalMod> { Make("A", weakRefs: new[] { "[email protected]" }) }; ModLoader.EnsureDependenciesExist(list5, false); ModLoader.EnsureTargetVersionsMet(list5); //test weak version check (too low) var list6 = new List <LocalMod> { Make("A", weakRefs: new[] { "[email protected]" }), Make("B") }; AssertModException( () => ModLoader.EnsureTargetVersionsMet(list6), new[] { "A" }, "A requires version 1.1+ of B but version 1.0.0.0 is installed"); }