//------------------------------------------------------------------------- public virtual void test_loadSeasonalityDefinition() { IDictionary <CurveName, SeasonalityDefinition> defns = SeasonalityDefinitionCsvLoader.loadSeasonalityDefinitions(ResourceLocator.of(GROUPS_1)); assertEquals(defns.Count, 1); SeasonalityDefinition defn = defns[CurveName.of("USD-CPI")]; assertEquals(defn.AdjustmentType, ShiftType.SCALED); assertEquals(defn.SeasonalityMonthOnMonth.size(), 12); }
//------------------------------------------------------------------------- /// <summary> /// Parses the seasonality definition CSV file. /// </summary> /// <param name="charSource"> the seasonality CSV character source </param> /// <returns> the map of seasonality definitions </returns> public static IDictionary <CurveName, SeasonalityDefinition> parseSeasonalityDefinitions(CharSource charSource) { ImmutableMap.Builder <CurveName, SeasonalityDefinition> builder = ImmutableMap.builder(); CsvFile csv = CsvFile.of(charSource, true); foreach (CsvRow row in csv.rows()) { string curveNameStr = row.getField(CURVE_NAME); string shiftTypeStr = row.getField(SHIFT_TYPE); DoubleArray values = DoubleArray.of(12, i => double.Parse(row.getField(MONTH_PAIRS.get(i)))); CurveName curveName = CurveName.of(curveNameStr); ShiftType shiftType = ShiftType.valueOf(shiftTypeStr.ToUpper(Locale.ENGLISH)); builder.put(curveName, SeasonalityDefinition.of(values, shiftType)); } return(builder.build()); }