From 54e10aee11aa4a10926df02782ca07d41eeb9b98 Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期二, 06 十月 2026 16:19:07 +0800
Subject: [PATCH] fix(holiday): 加大折线图纵向间距并同步 Word 尺寸
---
traffic-audit-server/src/test/java/com/trafficaudit/holiday/service/HolidayTrendChartServiceTest.java | 74 +++++++++++++++++++++++++++++++++++++
1 files changed, 74 insertions(+), 0 deletions(-)
diff --git a/traffic-audit-server/src/test/java/com/trafficaudit/holiday/service/HolidayTrendChartServiceTest.java b/traffic-audit-server/src/test/java/com/trafficaudit/holiday/service/HolidayTrendChartServiceTest.java
index e705637..fff727d 100644
--- a/traffic-audit-server/src/test/java/com/trafficaudit/holiday/service/HolidayTrendChartServiceTest.java
+++ b/traffic-audit-server/src/test/java/com/trafficaudit/holiday/service/HolidayTrendChartServiceTest.java
@@ -5,7 +5,11 @@
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
+import java.math.BigDecimal;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -40,6 +44,76 @@
assertNoLargeLightGrayBackground(stacked);
}
+ @Test
+ void roundsLineDataToTheSamePrecisionAsLabels() {
+ assertEquals(new BigDecimal("0.49"),
+ HolidayTrendChartService.displayValue(new BigDecimal("0.4904"), false, 2));
+ assertEquals(new BigDecimal("0.49"),
+ HolidayTrendChartService.displayValue(new BigDecimal("0.4911"), false, 2));
+ assertEquals(new BigDecimal("0.491"),
+ HolidayTrendChartService.displayValue(new BigDecimal("0.4911"), false, 3));
+ assertEquals(new BigDecimal("0.123"),
+ HolidayTrendChartService.displayValue(new BigDecimal("0.1234"), true, 2));
+ }
+
+ @Test
+ void rendersSameGeometryWhenValuesRoundToSameLabel() {
+ HolidayTrendChartService service = new HolidayTrendChartService();
+ HolidayTrendChartService.ChartSeries first = new HolidayTrendChartService.ChartSeries();
+ first.setName("骞冲潎鎷ユ尋搴�");
+ first.setValues(java.util.Arrays.asList(
+ new BigDecimal("0.4904"), new BigDecimal("0.4923"), new BigDecimal("0.5100")));
+ HolidayTrendChartService.ChartSeries second = new HolidayTrendChartService.ChartSeries();
+ second.setName("骞冲潎鎷ユ尋搴�");
+ second.setValues(java.util.Arrays.asList(
+ new BigDecimal("0.4911"), new BigDecimal("0.4934"), new BigDecimal("0.5100")));
+
+ byte[] firstChart = service.lineChart("鎷ユ尋搴�",
+ java.util.Collections.singletonList(first), false, 2, 1100, 590);
+ byte[] secondChart = service.lineChart("鎷ユ尋搴�",
+ java.util.Collections.singletonList(second), false, 2, 1100, 590);
+
+ assertPng(firstChart);
+ assertPng(secondChart);
+ assertArrayEquals(firstChart, secondChart);
+ }
+
+ @Test
+ void scalesLineChartHeightForBetterVerticalSeparation() throws Exception {
+ HolidayTrendChartService service = new HolidayTrendChartService();
+ HolidayTrendChartService.ChartSeries series = new HolidayTrendChartService.ChartSeries();
+ series.setName("娴嬭瘯");
+ series.setValues(java.util.Arrays.asList(
+ new BigDecimal("1.00"), new BigDecimal("2.00"), new BigDecimal("3.00")));
+
+ byte[] png = service.lineChart("涓囦汉娆�",
+ java.util.Collections.singletonList(series), false, 1100, 590);
+ BufferedImage image = ImageIO.read(new ByteArrayInputStream(png));
+
+ assertNotNull(image);
+ assertEquals(HolidayTrendChartService.scaleLineChartHeight(590), image.getHeight());
+ }
+
+ @Test
+ void rendersHigherPrecisionLineLabelsWhenRequested() {
+ HolidayTrendChartService service = new HolidayTrendChartService();
+ HolidayTrendChartService.ChartSeries congestion = new HolidayTrendChartService.ChartSeries();
+ congestion.setName("骞冲潎鎷ユ尋搴�");
+ congestion.setValues(java.util.Arrays.asList(
+ new java.math.BigDecimal("0.467029"),
+ new java.math.BigDecimal("0.490890"),
+ new java.math.BigDecimal("0.492414")));
+
+ byte[] twoDecimals = service.lineChart("鎷ユ尋搴�",
+ java.util.Collections.singletonList(congestion), false, 2, 1100, 590);
+ byte[] threeDecimals = service.lineChart("鎷ユ尋搴�",
+ java.util.Collections.singletonList(congestion), false, 3, 1100, 590);
+
+ assertPng(twoDecimals);
+ assertPng(threeDecimals);
+ assertFalse(java.util.Arrays.equals(twoDecimals, threeDecimals));
+ }
+
private void assertNoLargeLightGrayBackground(byte[] data) throws Exception {
BufferedImage image = ImageIO.read(new ByteArrayInputStream(data));
int matches = 0;
--
Gitblit v1.9.1