Skip to content

Commit 42706fa

Browse files
committed
chore(UnitTests): add test cases
- and add [ExcludeFromCodeCoverage]
1 parent 034ce0d commit 42706fa

13 files changed

Lines changed: 67 additions & 8 deletions

File tree

src/MaaFramework.Binding.Native/Buffers/MaaImageBuffer.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ namespace MaaFramework.Binding.Buffers;
1212
public class MaaImageBuffer : MaaDisposableHandle<MaaImageBufferHandle>, IMaaImageBuffer<MaaImageBufferHandle>, IMaaImageBufferStatic<MaaImageBufferHandle>
1313
{
1414
/// <inheritdoc/>
15+
[ExcludeFromCodeCoverage(Justification = "Debugger display.")]
1516
public override string ToString() => IsInvalid
1617
? $"Invalid {GetType().Name}"
1718
: $"{GetType().Name}: {Width}x{Height} {{ {nameof(Channels)} = {Channels}, {nameof(Type)} = {Type} }}";

src/MaaFramework.Binding.Native/Buffers/MaaRectBuffer.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using MaaFramework.Binding.Abstractions;
1+
using System.Diagnostics.CodeAnalysis;
2+
using MaaFramework.Binding.Abstractions;
23
using static MaaFramework.Binding.Interop.Native.MaaBuffer;
34

45
namespace MaaFramework.Binding.Buffers;
@@ -9,6 +10,7 @@ namespace MaaFramework.Binding.Buffers;
910
public class MaaRectBuffer : MaaDisposableHandle<MaaRectHandle>, IMaaRectBuffer<MaaRectHandle>, IMaaRectBufferStatic<MaaRectHandle>
1011
{
1112
/// <inheritdoc/>
13+
[ExcludeFromCodeCoverage(Justification = "Debugger display.")]
1214
public override string ToString() => IsInvalid
1315
? $"Invalid {GetType().Name}"
1416
: $"{GetType().Name} {{ {nameof(X)} = {X}, {nameof(Y)} = {Y}, {nameof(Width)} = {Width}, {nameof(Height)} = {Height} }}";

src/MaaFramework.Binding.Native/MaaController.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public class MaaController : MaaCommon, IMaaController<MaaControllerHandle>
1919
? $"Invalid {GetType().Name}"
2020
: $"{GetType().Name} {{ }}";
2121

22+
[ExcludeFromCodeCoverage(Justification = "Test for stateful mode.")]
2223
internal MaaController(MaaControllerHandle handle)
2324
{
2425
SetHandle(handle, needReleased: false);

src/MaaFramework.Binding.Native/MaaResource.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@ public class MaaResource : MaaCommon, IMaaResource<MaaResourceHandle>
1515
private readonly HashSet<string> _postedPaths = [];
1616

1717
/// <inheritdoc/>
18+
[ExcludeFromCodeCoverage(Justification = "Debugger display.")]
1819
public override string ToString() => IsInvalid
1920
? $"Invalid {GetType().Name}"
2021
: $"{GetType().Name} {{ Paths = [{string.Join(", ", _postedPaths)}], CustomActions = [{string.Join(", ", _actions.Names)}] , CustomRecognitions = [{string.Join(" & ", _recognitions.Names)}] }}";
2122

23+
[ExcludeFromCodeCoverage(Justification = "Test for stateful mode.")]
2224
internal MaaResource(MaaResourceHandle handle)
2325
{
2426
SetHandle(handle, needReleased: false);

src/MaaFramework.Binding.Native/MaaTasker.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public class MaaTasker : MaaCommon, IMaaTasker<MaaTaskerHandle>
3030

3131
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑添加 "required" 修饰符或声明为可为 null。
3232
[SetsRequiredMembers]
33+
[ExcludeFromCodeCoverage(Justification = "Test for stateful mode.")]
3334
internal MaaTasker(MaaTaskerHandle handle)
3435
{
3536
SetHandle(handle, needReleased: false);
@@ -252,6 +253,7 @@ public MaaTaskJob Stop()
252253
/// Wrapper of <see cref="MaaTaskerPostStop"/>.
253254
/// </remarks>
254255
[Obsolete("Use Stop() instead.")]
256+
[ExcludeFromCodeCoverage(Justification = "Use Stop() instead.")]
255257
public MaaTaskJob Abort() => Stop();
256258

257259
/// <inheritdoc/>

src/MaaFramework.Binding.UnitTests/Test_Buffers.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ public void Test_MaaImage_NoCache(MaaTypes type, MaaImage image)
8989
{
9090
Assert.IsNotNull(image);
9191
Assert.IsNotNull(image.Buffer);
92+
Assert.IsFalse(
93+
image.IsStateless);
9294

9395
Assert.AreEqual(
9496
"MaaImage: 1920x1080 { Channels = 3, Type = 16 }", image.ToString());
@@ -114,6 +116,8 @@ public void Test_MaaImage_Cache(MaaTypes type, MaaImage image)
114116
{
115117
Assert.IsNotNull(image);
116118
Assert.IsNotNull(image.Buffer);
119+
Assert.IsFalse(
120+
image.IsStateless);
117121

118122
Assert.IsTrue(
119123
image.TryCache());

src/MaaFramework.Binding.UnitTests/Test_Custom.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,15 @@ internal static class Custom
2222
}
2323
}
2424
""";
25+
public static string DirectCustomAction = $$"""
26+
{
27+
"{{nameof(DirectCustomAction)}}": {
28+
"action": "Custom",
29+
"custom_action": "{{nameof(EmptyAction)}}"
30+
}
31+
}
32+
""";
33+
2534
private static string RecognitionParam => $$"""{"{{nameof(RecognitionParam)}}":true}""";
2635
private static string ActionParam => $$"""{"{{nameof(ActionParam)}}":true}""";
2736
private static string Detail { get; set; } = string.Empty;
@@ -127,6 +136,16 @@ public bool Run(in IMaaContext context, in RunArgs args, in RunResults results)
127136
}
128137
}
129138

139+
internal sealed class EmptyAction : IMaaCustomAction
140+
{
141+
public string Name { get; set; } = nameof(EmptyAction);
142+
143+
public bool Run(in IMaaContext context, in RunArgs args, in RunResults results)
144+
{
145+
return true;
146+
}
147+
}
148+
130149
internal sealed class TestController(IMaaController c) : IMaaCustomController, IMaaDisposable
131150
{
132151
#region Test_IMaaDisposable

src/MaaFramework.Binding.UnitTests/Test_IMaaAgentClient.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public void Interface_LinkStart_LinkStop_AgentServerProcess_IsConnected_IsAlive_
9090
maaAgentClient.LinkStop());
9191
Assert.IsTrue( // double stop
9292
maaAgentClient.LinkStop());
93-
Task.Delay(100).Wait(); // wait for process exit
93+
Task.Delay(1000).Wait(); // wait for process exit
9494
Assert.IsTrue(
9595
maaAgentClient.AgentServerProcess.HasExited);
9696
Assert.IsFalse(

src/MaaFramework.Binding.UnitTests/Test_IMaaTasker.cs

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,6 @@ public void Interface_Register_Unregister_Clear(MaaTypes type, IMaaTasker maaTas
251251
=> maaTasker.Resource.Unregister(Custom.InvalidResource));
252252
}
253253

254-
255254
[TestMethod]
256255
[MaaData(MaaTypes.All, nameof(Data), "EmptyNode")]
257256
public void Interface_AppendTask_IsRunning(MaaTypes type, IMaaTasker maaTasker, string taskEntryName)
@@ -366,8 +365,10 @@ public void Interface_Stop_IsStopping(MaaTypes type, IMaaTasker maaTasker)
366365
Assert.IsNotNull(maaTasker);
367366
var job =
368367
maaTasker.Stop();
369-
Assert.IsTrue(
370-
maaTasker.IsStopping);
368+
var isStopping = maaTasker.IsStopping;
369+
if (!job.Status.IsDone())
370+
Assert.IsTrue(isStopping);
371+
371372
Interface_IMaaPost_Success(job);
372373
Task.Delay(100).Wait();
373374
Assert.IsFalse(
@@ -412,4 +413,21 @@ public void Interface_GetTaskDetail_InvalidData(MaaTypes type, IMaaTasker maaTas
412413
}
413414

414415
#endregion
416+
417+
[TestMethod]
418+
[MaaData(MaaTypes.All, nameof(Data))]
419+
public void Case_DirectCustomAction(MaaTypes type, IMaaTasker maaTasker)
420+
{
421+
_ = MaaUtility.Shared.Version;
422+
423+
Assert.IsTrue(
424+
maaTasker.Resource.Register(new Custom.EmptyAction()));
425+
var job = maaTasker
426+
.AppendTask(nameof(Custom.DirectCustomAction), Custom.DirectCustomAction)
427+
.WaitFor(MaaJobStatus.Succeeded);
428+
429+
Assert.IsNotNull(job.QueryTaskDetail());
430+
Assert.IsNotNull(job.QueryNodeDetail());
431+
Assert.IsNotNull(job.QueryRecognitionDetail());
432+
}
415433
}

src/MaaFramework.Binding/Custom/IMaaCustomAction.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,8 @@ public sealed record RunArgs(string NodeName, TaskDetail TaskDetail, string Acti
3333
/// <summary>
3434
/// The action run results.
3535
/// </summary>
36+
/// <remarks>
37+
/// (This a empty record.)
38+
/// </remarks>
3639
public sealed record RunResults;
3740
#pragma warning restore S2094 // Classes should not be empty

0 commit comments

Comments
 (0)