Files
FishmanTheMurloc aead279c78 单元测试HelloWorld (#1219)
* AutoFishing为单元测试重构;一个简单的单元测试GetFishpondTest

* 将鼠标操作的注入挪到DesktopRegion中;提供LoadAssetImage的一个不依赖配置的重载;ChooseBait的代码中将Bv的方法替换成不依赖配置的写法;完成ChooseBait的单元测试

* 使用TimeProvider改写ChooseBait以适用单元测试;添加假的绘图上下文类;添加抛竿行为的单元测试

* 选择鱼饵行为比对上次选择的鱼饵,如果相同则直接抛竿(之前的版本曾有此逻辑),但测下来有时会选错饵导致无限抛竿,调整了相关步骤的等待间隔,希望能简单地压制此bug

* 获取鱼群时过滤“获得”界面的鱼图标:1、在Fishpond构造函数中实现。2、配有此类情况的单元测试。3、并由此降低鱼钓上后的等待时间;
修复绘制鱼群时索引不正确导致遗漏的bug;获取鱼群时绘制鱼群供分析
2025-03-05 00:30:11 +08:00

108 lines
3.8 KiB
C#

using Fischless.WindowsInput;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Vanara.PInvoke;
namespace BetterGenshinImpact.UnitTest.GameTaskTests.AutoFishingTests
{
internal class FakeInputSimulator : IInputSimulator
{
public IKeyboardSimulator Keyboard => new FakeKeyboardSimulator();
public IMouseSimulator Mouse => new FakeMouseSimulator();
public IInputDeviceStateAdaptor InputDeviceState => throw new NotImplementedException();
}
internal class FakeKeyboardSimulator : IKeyboardSimulator
{
public IMouseSimulator Mouse => throw new NotImplementedException();
public IKeyboardSimulator KeyDown(User32.VK keyCode) => this;
public IKeyboardSimulator KeyDown(bool? isExtendedKey, User32.VK keyCode) => this;
public IKeyboardSimulator KeyPress(User32.VK keyCode) => this;
public IKeyboardSimulator KeyPress(bool? isExtendedKey, User32.VK keyCode) => this;
public IKeyboardSimulator KeyPress(params User32.VK[] keyCodes) => this;
public IKeyboardSimulator KeyPress(bool? isExtendedKey, params User32.VK[] keyCodes) => this;
public IKeyboardSimulator KeyUp(User32.VK keyCode) => this;
public IKeyboardSimulator KeyUp(bool? isExtendedKey, User32.VK keyCode) => this;
public IKeyboardSimulator ModifiedKeyStroke(IEnumerable<User32.VK> modifierKeyCodes, IEnumerable<User32.VK> keyCodes) => this;
public IKeyboardSimulator ModifiedKeyStroke(IEnumerable<User32.VK> modifierKeyCodes, User32.VK keyCode) => this;
public IKeyboardSimulator ModifiedKeyStroke(User32.VK modifierKey, IEnumerable<User32.VK> keyCodes) => this;
public IKeyboardSimulator ModifiedKeyStroke(User32.VK modifierKeyCode, User32.VK keyCode) => this;
public IKeyboardSimulator Sleep(int millsecondsTimeout) => this;
public IKeyboardSimulator Sleep(TimeSpan timeout) => this;
public IKeyboardSimulator TextEntry(string text) => this;
public IKeyboardSimulator TextEntry(char character) => this;
}
internal class FakeMouseSimulator : IMouseSimulator
{
public IKeyboardSimulator Keyboard => throw new NotImplementedException();
public IMouseSimulator HorizontalScroll(int scrollAmountInClicks) => this;
public IMouseSimulator LeftButtonClick() => this;
public IMouseSimulator LeftButtonDoubleClick() => this;
public IMouseSimulator LeftButtonDown() => this;
public IMouseSimulator LeftButtonUp() => this;
public IMouseSimulator MiddleButtonClick() => this;
public IMouseSimulator MiddleButtonDoubleClick() => this;
public IMouseSimulator MiddleButtonDown() => this;
public IMouseSimulator MiddleButtonUp() => this;
public IMouseSimulator MoveMouseBy(int pixelDeltaX, int pixelDeltaY) => this;
public IMouseSimulator MoveMouseTo(double absoluteX, double absoluteY) => this;
public IMouseSimulator MoveMouseToPositionOnVirtualDesktop(double absoluteX, double absoluteY) => this;
public IMouseSimulator RightButtonClick() => this;
public IMouseSimulator RightButtonDoubleClick() => this;
public IMouseSimulator RightButtonDown() => this;
public IMouseSimulator RightButtonUp() => this;
public IMouseSimulator Sleep(int millsecondsTimeout) => this;
public IMouseSimulator Sleep(TimeSpan timeout) => this;
public IMouseSimulator VerticalScroll(int scrollAmountInClicks) => this;
public IMouseSimulator XButtonClick(int buttonId) => this;
public IMouseSimulator XButtonDoubleClick(int buttonId) => this;
public IMouseSimulator XButtonDown(int buttonId) => this;
public IMouseSimulator XButtonUp(int buttonId) => this;
}
}