Skip to content

Commit b82b61e

Browse files
authored
Merge pull request #793 from Xian55/bench/coretests
CoreTests: CLI-based test suite selection with benchmarking
2 parents 97a5228 + f7fe8a5 commit b82b61e

6 files changed

Lines changed: 301 additions & 62 deletions

File tree

CoreTests/CLAUDE.md

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
# CoreTests
2+
3+
## Build
4+
5+
```powershell
6+
.\build.ps1
7+
```
8+
9+
## Run
10+
11+
The project uses `<OutputType>WinExe</OutputType>` which detaches stdout from the terminal.
12+
`run.ps1` handles `--no-build`, `-c Release`, and `| Out-Host` automatically.
13+
14+
```powershell
15+
.\run.ps1 [global flags] <suite> [suite args]
16+
```
17+
18+
## Global flags
19+
20+
| Flag | Description |
21+
|------|-------------|
22+
| `--log-times` | Enable overall timing statistics |
23+
| `--no-gpu` | Disable GPU acceleration |
24+
| `--no-log-update` | Disable per-iteration update logging in NPC tests |
25+
| `--dxgi` | Use DXGI screen capture instead of WGC (default) |
26+
| `--delay <ms>` | Set delay in milliseconds between iterations (default: 150) |
27+
28+
## Suites
29+
30+
### Help
31+
32+
```powershell
33+
.\run.ps1
34+
```
35+
36+
### npc - NPC Name Finder
37+
38+
Args: `[NpcNames...] [count]`
39+
40+
Defaults (Friendly|Neutral, 100 iterations):
41+
```powershell
42+
.\run.ps1 npc
43+
```
44+
45+
Enemy only:
46+
```powershell
47+
.\run.ps1 npc enemy
48+
```
49+
50+
Enemy + Neutral with 10000 iterations:
51+
```powershell
52+
.\run.ps1 npc enemy neutral 10000
53+
```
54+
55+
All types with timing stats:
56+
```powershell
57+
.\run.ps1 --log-times npc enemy friendly neutral corpse nameplate
58+
```
59+
60+
Without GPU:
61+
```powershell
62+
.\run.ps1 --no-gpu npc
63+
```
64+
65+
Stats only (no per-iteration logging), GPU, default delay:
66+
```powershell
67+
.\run.ps1 --log-times --no-log-update --delay 150 npc friendly neutral 500
68+
```
69+
70+
Stats only, CPU (no GPU), default delay:
71+
```powershell
72+
.\run.ps1 --log-times --no-log-update --no-gpu --delay 150 npc friendly neutral 500
73+
```
74+
75+
Stats only, fast iterations (10ms delay):
76+
```powershell
77+
.\run.ps1 --log-times --no-log-update --delay 10 npc friendly neutral 500
78+
```
79+
80+
GPU vs CPU comparison (run both, compare stats):
81+
```powershell
82+
.\run.ps1 --log-times --no-log-update npc enemy neutral 1000
83+
.\run.ps1 --log-times --no-log-update --no-gpu npc enemy neutral 1000
84+
```
85+
86+
DXGI capture with stats:
87+
```powershell
88+
.\run.ps1 --log-times --no-log-update --dxgi npc friendly neutral 500
89+
```
90+
91+
WGC vs DXGI comparison:
92+
```powershell
93+
.\run.ps1 --log-times --no-log-update npc friendly neutral 500
94+
.\run.ps1 --log-times --no-log-update --dxgi npc friendly neutral 500
95+
```
96+
97+
All enemy types, high iteration count:
98+
```powershell
99+
.\run.ps1 --log-times --no-log-update npc enemy 10000
100+
```
101+
102+
All types combined:
103+
```powershell
104+
.\run.ps1 --log-times --no-log-update npc enemy friendly neutral corpse nameplate 1000
105+
```
106+
107+
NpcNames values: `Enemy`, `Friendly`, `Neutral`, `Corpse`, `NamePlate`
108+
109+
### input - Mouse & Keyboard Input
110+
111+
```powershell
112+
.\run.ps1 input
113+
```
114+
115+
### cursor-grab - Cursor Type Classification
116+
117+
```powershell
118+
.\run.ps1 cursor-grab
119+
```
120+
121+
### cursor-compare - Cursor Classification Performance
122+
123+
```powershell
124+
.\run.ps1 cursor-compare
125+
```
126+
127+
### minimap - Minimap Node Finder
128+
129+
Default (100 samples):
130+
```powershell
131+
.\run.ps1 minimap
132+
```
133+
134+
With timing stats:
135+
```powershell
136+
.\run.ps1 --log-times minimap
137+
```
138+
139+
### find-target - Find Target By Cursor
140+
141+
Args: `[NpcNames...]`
142+
143+
Defaults (Friendly|Neutral):
144+
```powershell
145+
.\run.ps1 find-target
146+
```
147+
148+
Enemy targets:
149+
```powershell
150+
.\run.ps1 find-target enemy
151+
```
152+
153+
Enemy + Neutral:
154+
```powershell
155+
.\run.ps1 find-target enemy neutral
156+
```
157+
158+
### pather - PPather Pathfinding
159+
160+
Args: `[expansion]`
161+
162+
Defaults to SoM:
163+
```powershell
164+
.\run.ps1 pather
165+
```
166+
167+
TBC expansion:
168+
```powershell
169+
.\run.ps1 pather tbc
170+
```
171+
172+
Wrath expansion:
173+
```powershell
174+
.\run.ps1 pather wrath
175+
```
176+
177+
Expansion values: `SoM`, `TBC`, `Wrath`, `Cata`, `Mop`, `Retail`

CoreTests/NpcNameFinder/Test_NpcNameFinder.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ internal sealed class Test_NpcNameFinder : IDisposable
2424
private const bool saveImage = false;
2525
private const bool showOverlay = true;
2626

27-
private const bool LogEachUpdate = true;
27+
private readonly bool LogEachUpdate;
2828
private const bool LogEachDetail = false;
2929

3030
private const bool debugTargeting = false;
@@ -48,10 +48,11 @@ internal sealed class Test_NpcNameFinder : IDisposable
4848

4949
public Test_NpcNameFinder(ILogger logger, WowProcess process,
5050
IWowScreen screen, ILoggerFactory loggerFactory, NpcNames types,
51-
bool useGpu = false)
51+
bool useGpu = false, bool logEachUpdate = true)
5252
{
5353
this.logger = logger;
5454
this.screen = screen;
55+
LogEachUpdate = logEachUpdate;
5556

5657
stringBuilder = new();
5758

0 commit comments

Comments
 (0)