Пример #1
0
        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");
        }