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 @@
atr
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
3.917642936098542
3.871756865753318
3.8256550237571303
3.775585219414474
3.7359112048078584
3.751806385408204
3.844730678370346
3.9663267478375337
4.065925146592011
4.103990051025662
4.122277884333844
4.120405500552875
4.1099068422738645
4.067219182386907
3.965656623010464
3.883731209815142
3.8454426000158177
3.827649810828608
3.8056867488416217
3.7971798302715882
3.795930185925992
3.768312827006575
3.700099728786484
3.6306300896424184
3.63084862338228
3.6560272497167245
3.6536783654804816
3.670527021756155
3.731163563648225
3.855191519830406
3.994403105040647
4.097289247845801
4.128368657741341
4.103844480606131
4.0291518193306395
3.972922779511551
3.9077919971718877
3.8900842871217334
3.9281940607734454
3.970355102352287
3.970344885666312
3.9271768651715058
3.891868629198634
3.896746818914544
3.888594808948336
3.8241554941261624
3.755340593345057
3.742402894117046
3.779811441067645
3.833276428397188
3.8832337640008086
3.9482678364884123
3.9963590513965954
3.9961613679725096
3.957618048219805
3.9111378825809897
3.9118754285284236
3.9079875306228926
3.8519602816708205
3.8003043443211753
3.824279210324508
3.89030736805505
3.946176568396809
3.944383618517461
3.889018639116889
3.8395240928112067
3.792174559624793
1 atr
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 3.917642936098542
16 3.871756865753318
17 3.8256550237571303
18 3.775585219414474
19 3.7359112048078584
20 3.751806385408204
21 3.844730678370346
22 3.9663267478375337
23 4.065925146592011
24 4.103990051025662
25 4.122277884333844
26 4.120405500552875
27 4.1099068422738645
28 4.067219182386907
29 3.965656623010464
30 3.883731209815142
31 3.8454426000158177
32 3.827649810828608
33 3.8056867488416217
34 3.7971798302715882
35 3.795930185925992
36 3.768312827006575
37 3.700099728786484
38 3.6306300896424184
39 3.63084862338228
40 3.6560272497167245
41 3.6536783654804816
42 3.670527021756155
43 3.731163563648225
44 3.855191519830406
45 3.994403105040647
46 4.097289247845801
47 4.128368657741341
48 4.103844480606131
49 4.0291518193306395
50 3.972922779511551
51 3.9077919971718877
52 3.8900842871217334
53 3.9281940607734454
54 3.970355102352287
55 3.970344885666312
56 3.9271768651715058
57 3.891868629198634
58 3.896746818914544
59 3.888594808948336
60 3.8241554941261624
61 3.755340593345057
62 3.742402894117046
63 3.779811441067645
64 3.833276428397188
65 3.8832337640008086
66 3.9482678364884123
67 3.9963590513965954
68 3.9961613679725096
69 3.957618048219805
70 3.9111378825809897
71 3.9118754285284236
72 3.9079875306228926
73 3.8519602816708205
74 3.8003043443211753
75 3.824279210324508
76 3.89030736805505
77 3.946176568396809
78 3.944383618517461
79 3.889018639116889
80 3.8395240928112067
81 3.792174559624793