전략평가 MA 참조에러 수정
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
package com.goldenchart.service;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
/**
|
||||
* MA1~MA11 슬롯 ↔ SMA period1~11 매핑 및 레거시 MA20·MA60(기간 인코딩) 호환.
|
||||
*/
|
||||
class MaDslFieldAdapterTest {
|
||||
|
||||
private StrategyDslToTa4jAdapter adapter;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
adapter = new StrategyDslToTa4jAdapter();
|
||||
}
|
||||
|
||||
@Test
|
||||
void resolveMovingAveragePeriod_slotUsesSmaParams() {
|
||||
Map<String, Object> sma = Map.of("period3", 20, "period5", 60);
|
||||
assertEquals(20, adapter.resolveMovingAveragePeriod("MA3", "MA", sma));
|
||||
assertEquals(60, adapter.resolveMovingAveragePeriod("MA5", "MA", sma));
|
||||
}
|
||||
|
||||
@Test
|
||||
void resolveMovingAveragePeriod_legacyPeriodEncoding() {
|
||||
Map<String, Object> sma = Map.of("period3", 20, "period5", 60);
|
||||
assertEquals(20, adapter.resolveMovingAveragePeriod("MA20", "MA", sma));
|
||||
assertEquals(60, adapter.resolveMovingAveragePeriod("MA60", "MA", sma));
|
||||
}
|
||||
|
||||
@Test
|
||||
void resolveMovingAveragePeriod_oldSlotBugWouldUseLiteralDays() {
|
||||
Map<String, Object> sma = Map.of("period3", 20, "period5", 60);
|
||||
// MA3 must NOT resolve to 3-day SMA when period3=20
|
||||
assertEquals(20, adapter.resolveMovingAveragePeriod("MA3", "MA", sma));
|
||||
assertEquals(60, adapter.resolveMovingAveragePeriod("MA5", "MA", sma));
|
||||
}
|
||||
|
||||
@Test
|
||||
void formatMovingAverageFieldLabel_slotLabels() {
|
||||
Map<String, Map<String, Object>> params = Map.of(
|
||||
"SMA", Map.of("period3", 20, "period5", 60));
|
||||
assertEquals("MA3(20일)", adapter.formatMovingAverageFieldLabel("MA3", params));
|
||||
assertEquals("MA5(60일)", adapter.formatMovingAverageFieldLabel("MA5", params));
|
||||
}
|
||||
|
||||
@Test
|
||||
void formatMovingAverageFieldLabel_legacyLabels() {
|
||||
Map<String, Map<String, Object>> params = Map.of(
|
||||
"SMA", Map.of("period3", 20, "period5", 60));
|
||||
assertEquals("MA(20일)", adapter.formatMovingAverageFieldLabel("MA20", params));
|
||||
assertEquals("MA(60일)", adapter.formatMovingAverageFieldLabel("MA60", params));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user