xyc
4 天以前 520bdcba17d90b07d7d63fdcdb0e98a2a0a87300
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.trafficaudit.holiday.service;
 
import org.junit.jupiter.api.Test;
 
import java.lang.reflect.Method;
import java.math.BigDecimal;
 
import static org.junit.jupiter.api.Assertions.assertEquals;
 
class HolidayBulletinServiceTest {
 
    @Test
    void formatsTableRatiosAsSignedPercentages() throws Exception {
        HolidayBulletinService service = new HolidayBulletinService(null);
 
        assertEquals("-4.7%", ratio(service, "95.3", "100"));
        assertEquals("1.0%", ratio(service, "101", "100"));
        assertEquals("0%", ratio(service, "100", "100"));
        assertEquals("0%", ratio(service, "10004", "10000"));
        assertEquals("—", ratio(service, "100", null));
        assertEquals("—", ratio(service, "100", "0"));
    }
 
    private String ratio(HolidayBulletinService service, String current, String base) throws Exception {
        Method method = HolidayBulletinService.class.getDeclaredMethod("ratio", BigDecimal.class, BigDecimal.class);
        method.setAccessible(true);
        BigDecimal currentValue = current == null ? null : new BigDecimal(current);
        BigDecimal baseValue = base == null ? null : new BigDecimal(base);
        return (String) method.invoke(service, currentValue, baseValue);
    }
}