public void FormatQuarterTest() { var quarter1 = CreateQuarter(ticker, period2021Q3, properties, descriptions); var quarter2 = CreateQuarter(ticker, period2021Q4, properties, descriptions); var csvOutput = TabularFormatter <Quarter> .Format(new List <Quarter> { quarter1, quarter2 }); var rows = csvOutput.ToRows().ToArray(); Assert.AreEqual(2, rows.Length); var header = rows[0]; var firstDataRow = rows[1]; // check header Assert.AreEqual("キー", header.Key); Assert.AreEqual("項目名", header.Name); Assert.AreEqual("単位", header.Unit); Assert.AreEqual(2, header.Values.Count); Assert.AreEqual(period2021Q3.ToString(), header.Values[0]); Assert.AreEqual(period2021Q4.ToString(), header.Values[1]); // check "key" row Assert.AreEqual(key, firstDataRow.Key); Assert.AreEqual(label, firstDataRow.Name); Assert.AreEqual(unit, firstDataRow.Unit); Assert.AreEqual(2, firstDataRow.Values.Count); Assert.AreEqual(value, firstDataRow.Values[0]); Assert.AreEqual(value, firstDataRow.Values[1]); }
private void Execute() { if (!ValidateControls()) { return; } try { var parameters = CreateParametersFromFormValues(); var resources = apiResourceGetter.GetQuarters(parameters); var quarters = resources.ToList(); if (quarters.Count == 0) { MessageBox.Show("条件に当てはまる財務データがありませんでした。", "CSV出力", MessageBoxButtons.OK); } else { var tabular = TabularFormatter <Quarter> .Format(quarters); var writer = quarterTabularWriterBuilder.Set(parameters).Build(); writer.Write(tabular); MessageBox.Show("財務データの取得が完了しました", "CSV出力", MessageBoxButtons.OK); } DialogResult = DialogResult.OK; } // user cancel catch (OperationCanceledException) { MessageBox.Show("CSV出力がキャンセルされました", "CSV出力", MessageBoxButtons.OK); } // known errors catch (BaseBuffettCodeException bce) { var message = CsvDownloadExceptionHandler.ToMessageBoxString(bce); MessageBox.Show(message, "CSV出力", MessageBoxButtons.OK); } // unknown errors catch (Exception e) { var bce = BuffettCodeExceptionFinder.Find(e); if (bce is null) { MessageBox.Show($"予期せぬエラーが発生しました。\n{e}", "CSV出力", MessageBoxButtons.OK); } else { var message = CsvDownloadExceptionHandler.ToMessageBoxString(bce); MessageBox.Show(message, "CSV出力", MessageBoxButtons.OK); } } Close(); }