From b575474cb16710cbfe2b1c4d13ee58d136ea737c Mon Sep 17 00:00:00 2001 From: FishmanTheMurloc Date: Sat, 8 Mar 2025 17:11:23 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E9=92=93=E9=B1=BC=E6=A1=86?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E4=BB=A5=E5=8F=8A=E8=B6=85=E6=97=B6=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E7=9A=84=E4=B8=A4=E4=B8=AA=E5=8D=95=E5=85=83=E6=B5=8B?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BehavioursTests.GetFishBoxArea.cs | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.GetFishBoxArea.cs diff --git a/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.GetFishBoxArea.cs b/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.GetFishBoxArea.cs new file mode 100644 index 00000000..6be0ae4f --- /dev/null +++ b/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.GetFishBoxArea.cs @@ -0,0 +1,72 @@ +using BehaviourTree; +using BetterGenshinImpact.GameTask.AutoFishing; +using BetterGenshinImpact.GameTask.Model.Area.Converter; +using BetterGenshinImpact.GameTask.Model.Area; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Drawing; +using BetterGenshinImpact.Core.Recognition.ONNX.YOLO; +using Microsoft.Extensions.Time.Testing; + +namespace BetterGenshinImpact.UnitTest.GameTaskTests.AutoFishingTests +{ + public partial class BehavioursTests + { + [Theory] + [InlineData(@"20250306111752769_GetFishBoxArea_Succeeded.png")] + /// + /// 测试获取钓鱼拉扯框,结果为成功 + /// + public void GetFishBoxArea_ShouldSuccess(string screenshot1080p) + { + // + Bitmap bitmap = new Bitmap(@$"..\..\..\Assets\AutoFishing\{screenshot1080p}"); + var imageRegion = new GameCaptureRegion(bitmap, 0, 0, drawContent: new FakeDrawContent()); + + var blackboard = new Blackboard(null, sleep: i => { }); + + // + GetFishBoxArea sut = new GetFishBoxArea("-", blackboard, new FakeLogger(), false); + BehaviourStatus actual = sut.Tick(imageRegion); + + // + Assert.Equal(BehaviourStatus.Succeeded, actual); + } + + [Theory] + [InlineData(@"20250306111752769_GetFishBoxArea_Succeeded.png")] + [InlineData(@"202503012143011486@900p.png")] + /// + /// 测试获取钓鱼拉扯框,超时后,结果为失败 + /// + public void GetFishBoxArea_ShouldFail(string screenshot1080p) + { + // + Bitmap bitmap = new Bitmap(@$"..\..\..\Assets\AutoFishing\{screenshot1080p}"); + var imageRegion = new GameCaptureRegion(bitmap, 0, 0, drawContent: new FakeDrawContent()); + + var blackboard = new Blackboard(null, sleep: i => { }); + + FakeTimeProvider fakeTimeProvider = new FakeTimeProvider(); + + // + GetFishBoxArea sut = new GetFishBoxArea("-", blackboard, new FakeLogger(), false, fakeTimeProvider); + BehaviourStatus actual = sut.Tick(imageRegion); + + // + Assert.NotEqual(BehaviourStatus.Failed, actual); + + // + fakeTimeProvider.Advance(TimeSpan.FromSeconds(6)); + + // + actual = sut.Tick(imageRegion); + + // + Assert.Equal(BehaviourStatus.Failed, actual); + } + } +}