コード例 #1
0
ファイル: TestScenePlayerLoader.cs プロジェクト: ovidex/osu
        public void TestModReinstantiation()
        {
            TestMod gameMod    = null;
            TestMod playerMod1 = null;
            TestMod playerMod2 = null;

            AddStep("load player", () => { ResetPlayer(true, () => SelectedMods.Value = new[] { gameMod = new TestMod() }); });

            AddUntilStep("wait for loader to become current", () => loader.IsCurrentScreen());
            AddStep("mouse in centre", () => InputManager.MoveMouseTo(loader.ScreenSpaceDrawQuad.Centre));
            AddUntilStep("wait for player to be current", () => player.IsCurrentScreen());
            AddStep("retrieve mods", () => playerMod1 = (TestMod)player.Mods.Value.Single());
            AddAssert("game mods not applied", () => gameMod.Applied == false);
            AddAssert("player mods applied", () => playerMod1.Applied);

            AddStep("restart player", () =>
            {
                var lastPlayer = player;
                player         = null;
                lastPlayer.Restart();
            });

            AddUntilStep("wait for player to be current", () => player.IsCurrentScreen());
            AddStep("retrieve mods", () => playerMod2 = (TestMod)player.Mods.Value.Single());
            AddAssert("game mods not applied", () => gameMod.Applied == false);
            AddAssert("player has different mods", () => playerMod1 != playerMod2);
            AddAssert("player mods applied", () => playerMod2.Applied);
        }
コード例 #2
0
        public void OutOfOrderAllocationReturnsSameIdentifiersShared()
        {
            var  fileSystem = new MockFileSystem();
            uint formID1, formID2;
            {
                var mod = new TestMod(TestConstants.PluginModKey);
                using var allocator = CreateNamedAllocator(fileSystem, mod, Patcher1);
                var formKey1 = allocator.GetNextFormKey(TestConstants.Edid1);
                formID1 = formKey1.ID;

                allocator.GetNextFormKey();

                var formKey2 = allocator.GetNextFormKey(TestConstants.Edid2);
                formID2 = formKey2.ID;

                allocator.Commit();
            }

            {
                var mod = new TestMod(TestConstants.PluginModKey);
                using var allocator = CreateNamedAllocator(fileSystem, mod, Patcher1);

                var formKey2 = allocator.GetNextFormKey(TestConstants.Edid2);
                Assert.Equal(formID2, formKey2.ID);

                allocator.GetNextFormKey();

                var formKey1 = allocator.GetNextFormKey(TestConstants.Edid1);
                Assert.Equal(formID1, formKey1.ID);
            }
        }
コード例 #3
0
        public void BeforeEach()
        {
            Environment.SetEnvironmentVariable("is-testing", "true");

            IHommMod mod = new TestMod();

            ModLoader.RegisterMod(mod);
            ModLoader.EnableMods();
        }
コード例 #4
0
ファイル: TestScenePlayerLoader.cs プロジェクト: ovidex/osu
        public void TestModDisplayChanges()
        {
            var testMod = new TestMod();

            AddStep("load player", () => ResetPlayer(true));

            AddUntilStep("wait for loader to become current", () => loader.IsCurrentScreen());
            AddStep("set test mod in loader", () => loader.Mods.Value = new[] { testMod });
            AddAssert("test mod is displayed", () => (TestMod)loader.DisplayedMods.Single() == testMod);
        }
コード例 #5
0
        public void TestModReinstantiation()
        {
            TestPlayer player     = null;
            TestMod    gameMod    = null;
            TestMod    playerMod1 = null;
            TestMod    playerMod2 = null;

            AddStep("load player", () =>
            {
                Mods.Value = new[] { gameMod = new TestMod() };
                InputManager.MoveMouseTo(loader.ScreenSpaceDrawQuad.Centre);
                stack.Push(new PlayerLoader(() => player = new TestPlayer()));
            });

            AddUntilStep("wait for player to become current", () =>
            {
                if (player.IsCurrentScreen())
                {
                    playerMod1 = (TestMod)player.Mods.Value.Single();
                    return(true);
                }

                return(false);
            });

            AddAssert("game mods not applied", () => gameMod.Applied == false);
            AddAssert("player mods applied", () => playerMod1.Applied);

            AddStep("restart player", () =>
            {
                player = null;
                player.Restart();
            });

            AddUntilStep("wait for player to become current", () =>
            {
                if (player.IsCurrentScreen())
                {
                    playerMod2 = (TestMod)player.Mods.Value.Single();
                    return(true);
                }

                return(false);
            });

            AddAssert("game mods not applied", () => gameMod.Applied == false);
            AddAssert("player has different mods", () => playerMod1 != playerMod2);
            AddAssert("player mods applied", () => playerMod2.Applied);
        }
コード例 #6
0
        public void ParallelAllocationShared()
        {
            var input   = Enumerable.Range(1, 100).Select(i => (i, i.ToString())).ToList();
            var output1 = new ConcurrentDictionary <int, uint>();
            var mod     = new TestMod(TestConstants.PluginModKey);

            var fileSystem = new MockFileSystem();
            {
                using var allocator = CreateNamedAllocator(fileSystem, mod, Patcher1);

                void apply((int i, string s) x)
                {
                    // "Randomly" allocate some non-unique FormIDs.
                    if (x.i % 3 == 0)
                    {
                        allocator.GetNextFormKey();
                    }
                    else
                    {
                        var key = allocator.GetNextFormKey(x.s);
                        output1.TryAdd(x.i, key.ID);
                    }
                }

                input.AsParallel().ForAll(apply);

                allocator.Commit();
            }

            {
                using var allocator = CreateNamedAllocator(fileSystem, mod, Patcher1);

                void check((int i, string s) x)
                {
                    if (x.i % 3 != 0)
                    {
                        var key = allocator.GetNextFormKey(x.s);
                        if (!output1.TryGetValue(x.i, out var expectedID))
                        {
                            throw new Exception("?");
                        }
                        Assert.Equal(expectedID, key.ID);
                    }
                }

                input.AsParallel().ForAll(check);
            }
        }
コード例 #7
0
        public void DuplicateAllocationBetweenTwoPatchersThrows()
        {
            var fileSystem = new MockFileSystem();
            var mod        = new TestMod(TestConstants.PluginModKey);
            {
                using var allocator = CreateNamedAllocator(fileSystem, mod, Patcher1);

                allocator.GetNextFormKey(TestConstants.Edid1);

                allocator.Commit();
            }

            {
                using var allocator = CreateNamedAllocator(fileSystem, mod, Patcher2);

                var e = Assert.Throws <ConstraintException>(() => allocator.GetNextFormKey(TestConstants.Edid1));
            }
        }