test(golden): language-neutral fixtures + per-binding parity runners (#255)

**Task 5 — golden-fixture parity for the C-ABI bindings.** Lifts the C#/Go/Java/R tests from *one indicator per archetype* toward reference-value parity, catching FFI wiring bugs (swapped params, wrong multi-output field) the math-only core tests cannot see.

## What's here
- **`examples/rust/src/bin/gen_golden.rs`** + **`testdata/golden/*.csv`** — a Rust generator computing a deterministic OHLCV series plus the core's reference outputs for a curated archetype-spanning set: scalar (`Sma`/`Ema`/`Rsi`), candle (`Atr`), scalar multi-output (`MACD`), candle multi-output (`ADX`), pairwise (`Beta`). `nan` marks warmup. Regenerate with `cargo run -p wickra-examples --bin gen_golden`.
- **Parity runners** replaying the identical fixtures through each FFI (rel-tol 1e-6), each a standard test in the binding's existing suite (no `ci.yml` change — rides `dotnet test` / `go test` / `mvn install` / `R CMD`+testthat). A walk-up search locates `testdata/golden` regardless of run dir.
  - **C#** (`bindings/csharp/.../GoldenTests.cs`) —  validated locally, 7/7 pass.
  - **Go** (`bindings/go/golden_test.go`) —  validated locally, pass.
  - **Java** (`bindings/java/.../GoldenTests.java`) — modeled on the archetype API; validated by CI (no local mvn).
  - **R** (`bindings/r/tests/testthat/test-golden.R`) — modeled on the archetype API; validated by CI (no local Rscript).

## Notes
- The curated set spans every marshalling archetype; extending the indicator list is mechanical (add to the generator + regenerate). Bars/profile archetypes can be added next.
- No new CI jobs.
This commit is contained in:
kingchenc
2026-06-11 15:22:29 +02:00
committed by GitHub
parent 395a2289f4
commit 8bfe24ac1d
13 changed files with 1397 additions and 0 deletions
+81
View File
@@ -0,0 +1,81 @@
ema
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
107.082865308575
105.90971557088022
104.81838000454273
103.91437652548925
103.29137341232037
103.02217097393634
103.15163412061464
103.6921955736008
104.62232136443316
105.88806700052659
107.40757775297398
109.07812453770966
110.78504123504803
112.4117601975411
113.85004525232907
115.00950442946956
115.8255294789832
116.26495019544112
116.32889606739172
116.05260755010886
115.50221201839392
114.76875083248335
113.95998970819002
113.19074277367604
112.57257361958058
112.2037924360836
112.16064199938042
112.49045917546245
113.20742223024638
114.29126332917505
115.68906080413531
117.3199507165269
119.08233652305883
120.86295254590979
122.54697139145239
124.02825224132444
125.2188143840051
126.05668958634725
126.51145173900844
126.58692971020658
126.32086097368011
125.78151686199148
125.06160082390045
124.26996466927172
123.5218827065933
122.92875250508669
122.58814223802023
122.57507361058863
122.93531900967452
123.68131159273575
124.79103363078006
126.20998238510259
127.85603789338172
129.62679782427364
131.408724185901
133.0872848279711
134.5571838169111
135.7317668260377
136.550761377433
136.98566051598186
137.04226900211742
136.7601845743594
136.20926061449748
135.48336619117217
134.6920008752563
133.95051334772793
133.369797540168
1 ema
2 nan
3 nan
4 nan
5 nan
6 nan
7 nan
8 nan
9 nan
10 nan
11 nan
12 nan
13 nan
14 nan
15 107.082865308575
16 105.90971557088022
17 104.81838000454273
18 103.91437652548925
19 103.29137341232037
20 103.02217097393634
21 103.15163412061464
22 103.6921955736008
23 104.62232136443316
24 105.88806700052659
25 107.40757775297398
26 109.07812453770966
27 110.78504123504803
28 112.4117601975411
29 113.85004525232907
30 115.00950442946956
31 115.8255294789832
32 116.26495019544112
33 116.32889606739172
34 116.05260755010886
35 115.50221201839392
36 114.76875083248335
37 113.95998970819002
38 113.19074277367604
39 112.57257361958058
40 112.2037924360836
41 112.16064199938042
42 112.49045917546245
43 113.20742223024638
44 114.29126332917505
45 115.68906080413531
46 117.3199507165269
47 119.08233652305883
48 120.86295254590979
49 122.54697139145239
50 124.02825224132444
51 125.2188143840051
52 126.05668958634725
53 126.51145173900844
54 126.58692971020658
55 126.32086097368011
56 125.78151686199148
57 125.06160082390045
58 124.26996466927172
59 123.5218827065933
60 122.92875250508669
61 122.58814223802023
62 122.57507361058863
63 122.93531900967452
64 123.68131159273575
65 124.79103363078006
66 126.20998238510259
67 127.85603789338172
68 129.62679782427364
69 131.408724185901
70 133.0872848279711
71 134.5571838169111
72 135.7317668260377
73 136.550761377433
74 136.98566051598186
75 137.04226900211742
76 136.7601845743594
77 136.20926061449748
78 135.48336619117217
79 134.6920008752563
80 133.95051334772793
81 133.369797540168