package cn.iocoder.yudao.framework.ip.core.utils; import cn.iocoder.yudao.framework.ip.core.Area; import cn.iocoder.yudao.framework.ip.core.enums.AreaTypeEnum; import org.junit.jupiter.api.Test; import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; /** * {@link AreaUtils} 的单元测试 * * @author 芋道源码 */ public class AreaUtilsTest { @Test public void testGetArea() { // 调用:北京 Area area = AreaUtils.getArea(110100); // 断言 assertEquals(area.getId(), 110100); assertEquals(area.getName(), "北京市"); assertEquals(area.getType(), AreaTypeEnum.CITY.getType()); assertEquals(area.getParent().getId(), 110000); assertEquals(area.getChildren().size(), 16); } @Test public void testFormat() { assertEquals(AreaUtils.format(110105), "北京市 北京市 朝阳区"); assertEquals(AreaUtils.format(1), "中国"); assertEquals(AreaUtils.format(2), "蒙古"); // 中国台湾省:省/市/区三级 assertEquals(AreaUtils.format(710101), "台湾省 台北市 中正区"); // 自定义分隔符 assertEquals(AreaUtils.format(110105, "/"), "北京市/北京市/朝阳区"); // 不存在的编号 assertNull(AreaUtils.format(-1)); } @Test public void testParseArea() { // 调用:通过路径解析得到地区 Area area = AreaUtils.parseArea("北京市/北京市/朝阳区"); // 断言 assertNotNull(area); assertEquals(area.getId(), 110105); // 路径不存在时返回 null assertNull(AreaUtils.parseArea("不存在/路径")); } @Test public void testGetParentIdByType() { // 调用:朝阳区向上找省 Integer provinceId = AreaUtils.getParentIdByType(110105, AreaTypeEnum.PROVINCE); // 断言 assertEquals(provinceId, 110000); // 自身就是目标类型 assertEquals(AreaUtils.getParentIdByType(110000, AreaTypeEnum.PROVINCE), 110000); // 不存在的编号返回 null assertNull(AreaUtils.getParentIdByType(-1, AreaTypeEnum.PROVINCE)); } @Test public void testGetByType() { // 调用:获取所有省份 List provinces = AreaUtils.getByType(AreaTypeEnum.PROVINCE, area -> area); // 断言:包含北京、台湾、香港、澳门 assertTrue(provinces.stream().anyMatch(area -> "北京市".equals(area.getName()))); assertTrue(provinces.stream().anyMatch(area -> "台湾省".equals(area.getName()))); assertTrue(provinces.stream().anyMatch(area -> "香港特别行政区".equals(area.getName()))); assertTrue(provinces.stream().anyMatch(area -> "澳门特别行政区".equals(area.getName()))); } }