Skip to content

Commit 0a674e6

Browse files
committed
start testing automatic selector
1 parent 3f79964 commit 0a674e6

3 files changed

Lines changed: 92 additions & 5 deletions

File tree

src/ModVerify.CliApp/TargetSelectors/AutomaticSelector.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ internal class AutomaticSelector(IServiceProvider serviceProvider) : Verificatio
2020
{
2121
private readonly IFileSystem _fileSystem = serviceProvider.GetRequiredService<IFileSystem>();
2222

23-
internal override SelectionResult SelectTarget(
24-
VerificationTargetSettings settings)
23+
internal override SelectionResult SelectTarget(VerificationTargetSettings settings)
2524
{
2625
var targetPath = settings.TargetPath;
2726
if (targetPath is null)
@@ -76,7 +75,7 @@ internal override SelectionResult SelectTarget(
7675
// If the target is the game directory itself.
7776
if (targetFullPath.Equals(finderResult.Game.Directory.FullName, StringComparison.OrdinalIgnoreCase))
7877
{
79-
if (finderResult.Game.Type.ToEngineType() != requestedEngineType)
78+
if (!IsEngineTypeSupported(requestedEngineType, finderResult.Game))
8079
throw new ArgumentException($"The specified game type '{requestedEngineType}' does not match the actual type of the game '{targetPath}' to verify.");
8180
return finderResult.Game;
8281
}
@@ -144,4 +143,9 @@ private GameLocations GetDetachedModLocations(string modPath, GameFinderResult g
144143

145144
return null;
146145
}
146+
147+
private static bool IsEngineTypeSupported(GameEngineType? requestedEngineType, IPhysicalPlayableObject target)
148+
{
149+
return !requestedEngineType.HasValue || target.Game.Type.ToEngineType() == requestedEngineType;
150+
}
147151
}

test/ModVerify.CliApp.Test/CommonTestBase.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1-
using System;
2-
using System.IO.Abstractions;
1+
using AET.SteamAbstraction;
32
using AnakinRaW.CommonUtilities.Hashing;
43
using Microsoft.Extensions.DependencyInjection;
54
using PG.Commons;
5+
using PG.StarWarsGame.Infrastructure;
6+
using PG.StarWarsGame.Infrastructure.Clients.Steam;
7+
using System;
8+
using System.IO.Abstractions;
69
using Testably.Abstractions.Testing;
710

811
namespace ModVerify.CliApp.Test;
@@ -18,6 +21,9 @@ protected CommonTestBase()
1821
sc.AddSingleton<IHashingService>(sp => new HashingService(sp));
1922
sc.AddSingleton<IFileSystem>(FileSystem);
2023
PetroglyphCommons.ContributeServices(sc);
24+
PetroglyphGameInfrastructure.InitializeServices(sc);
25+
SteamAbstractionLayer.InitializeServices(sc);
26+
SteamPetroglyphStarWarsGameClients.InitializeServices(sc);
2127
// ReSharper disable once VirtualMemberCallInConstructor
2228
SetupServices(sc);
2329
ServiceProvider = sc.BuildServiceProvider();
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
namespace ModVerify.CliApp.Test.TargetSelectors;
2+
3+
public class AutomaticSelectorTest : CommonTestBase
4+
{
5+
//private readonly AutomaticSelector _selector;
6+
//private readonly IRegistry _registry = new InMemoryRegistry(InMemoryRegistryCreationFlags.WindowsLike);
7+
8+
//public AutomaticSelectorTest()
9+
//{
10+
// _selector = new AutomaticSelector(ServiceProvider);
11+
//}
12+
13+
//protected override void SetupServices(ServiceCollection serviceCollection)
14+
//{
15+
// base.SetupServices(serviceCollection);
16+
// serviceCollection.AddSingleton(_registry);
17+
//}
18+
19+
//[Fact]
20+
//public void Test_Select_GameNotInstalled()
21+
//{
22+
// var settings = new VerificationTargetSettings
23+
// {
24+
// TargetPath = "/test",
25+
// };
26+
27+
// Assert.Throws<GameNotFoundException>(() => _selector.SelectTarget(settings));
28+
//}
29+
30+
//[Theory]
31+
//[MemberData(nameof(GITestUtilities.RealGameIdentities), MemberType = typeof(GITestUtilities))]
32+
//public void Test_Select_Game(GameIdentity identity)
33+
//{
34+
// var (eaw, foc) = InstallGames(identity.Platform);
35+
// var game = identity.Type switch
36+
// {
37+
// GameType.Eaw => eaw,
38+
// GameType.Foc => foc,
39+
// _ => throw new ArgumentOutOfRangeException()
40+
// };
41+
42+
// var settings = new VerificationTargetSettings
43+
// {
44+
// TargetPath = game.Directory.FullName,
45+
// };
46+
47+
// var result = _selector.SelectTarget(settings);
48+
// Assert.Equal(identity.Type, result.Engine.FromEngineType());
49+
// Assert.Equal(game, result.Target);
50+
// Assert.Equal(game.Directory.FullName, result.Locations.GamePath);
51+
//}
52+
53+
//private (IGame eaw, IGame foc) InstallGames(GamePlatform platform)
54+
//{
55+
// var eaw = FileSystem.InstallGame(new GameIdentity(GameType.Eaw, platform), ServiceProvider);
56+
// var foc = FileSystem.InstallGame(new GameIdentity(GameType.Eaw, platform), ServiceProvider);
57+
58+
59+
60+
// if (platform == GamePlatform.SteamGold)
61+
// {
62+
// InstallSteam(eaw, foc);
63+
// }
64+
65+
// return (eaw, foc);
66+
//}
67+
68+
//private void InstallSteam(IGame eaw, IGame foc)
69+
//{
70+
// var registry = ServiceProvider.GetRequiredService<ISteamRegistryFactory>().CreateRegistry();
71+
// FileSystem.InstallSteam(registry);
72+
73+
// // Register Game to Steam
74+
// var lib = FileSystem.InstallDefaultLibrary(ServiceProvider);
75+
// lib.InstallGame(32470, "Star Wars Empire at War", [32472], SteamAppState.StateFullyInstalled);
76+
//}
77+
}

0 commit comments

Comments
 (0)