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); }
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); } }
public void BeforeEach() { Environment.SetEnvironmentVariable("is-testing", "true"); IHommMod mod = new TestMod(); ModLoader.RegisterMod(mod); ModLoader.EnableMods(); }
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); }
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); }
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); } }
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)); } }