This commit is contained in:
Looly 2023-04-03 19:35:51 +08:00
parent a22722f31c
commit 154192c7ee

View File

@ -15,6 +15,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Queue; import java.util.Queue;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
@ -25,28 +26,28 @@ public class MapUtilTest {
@Data @Data
@Builder @Builder
public static class User { static class User {
private Long id; private Long id;
private String name; private String name;
} }
@Data @Data
@Builder @Builder
public static class Group { static class Group {
private Long id; private Long id;
private List<User> users; private List<User> users;
} }
@Data @Data
@Builder @Builder
public static class UserGroup { static class UserGroup {
private Long userId; private Long userId;
private Long groupId; private Long groupId;
} }
@Test @Test
public void filterTest() { void filterTest() {
final Map<String, String> map = MapUtil.newHashMap(); final Map<String, String> map = MapUtil.newHashMap();
map.put("a", "1"); map.put("a", "1");
map.put("b", "2"); map.put("b", "2");
@ -62,7 +63,7 @@ public class MapUtilTest {
} }
@Test @Test
public void mapTest() { void mapTest() {
// Add test like a foreigner // Add test like a foreigner
final Map<Integer, String> adjectivesMap = MapUtil.<Integer, String>builder() final Map<Integer, String> adjectivesMap = MapUtil.<Integer, String>builder()
.put(0, "lovely") .put(0, "lovely")
@ -103,7 +104,7 @@ public class MapUtilTest {
} }
@Test @Test
public void filterMapWrapperTest() { void filterMapWrapperTest() {
final Map<String, String> map = MapUtil.newHashMap(); final Map<String, String> map = MapUtil.newHashMap();
map.put("a", "1"); map.put("a", "1");
map.put("b", "2"); map.put("b", "2");
@ -121,7 +122,7 @@ public class MapUtilTest {
} }
@Test @Test
public void filterContainsTest() { void filterContainsTest() {
final Map<String, String> map = MapUtil.newHashMap(); final Map<String, String> map = MapUtil.newHashMap();
map.put("abc", "1"); map.put("abc", "1");
map.put("bcd", "2"); map.put("bcd", "2");
@ -135,7 +136,7 @@ public class MapUtilTest {
} }
@Test @Test
public void editTest() { void editTest() {
final Map<String, String> map = MapUtil.newHashMap(); final Map<String, String> map = MapUtil.newHashMap();
map.put("a", "1"); map.put("a", "1");
map.put("b", "2"); map.put("b", "2");
@ -157,7 +158,7 @@ public class MapUtilTest {
} }
@Test @Test
public void reverseTest() { void reverseTest() {
final Map<String, String> map = MapUtil.newHashMap(); final Map<String, String> map = MapUtil.newHashMap();
map.put("a", "1"); map.put("a", "1");
map.put("b", "2"); map.put("b", "2");
@ -173,7 +174,7 @@ public class MapUtilTest {
} }
@Test @Test
public void toObjectArrayTest() { void toObjectArrayTest() {
final Map<String, String> map = MapUtil.newHashMap(true); final Map<String, String> map = MapUtil.newHashMap(true);
map.put("a", "1"); map.put("a", "1");
map.put("b", "2"); map.put("b", "2");
@ -192,7 +193,7 @@ public class MapUtilTest {
} }
@Test @Test
public void sortJoinTest(){ void sortJoinTest(){
final Map<String, String> build = MapUtil.builder(new HashMap<String, String>()) final Map<String, String> build = MapUtil.builder(new HashMap<String, String>())
.put("key1", "value1") .put("key1", "value1")
.put("key3", "value3") .put("key3", "value3")
@ -209,7 +210,7 @@ public class MapUtilTest {
} }
@Test @Test
public void ofEntriesTest(){ void ofEntriesTest(){
final Map<String, Integer> map = MapUtil.ofEntries(MapUtil.entry("a", 1), MapUtil.entry("b", 2)); final Map<String, Integer> map = MapUtil.ofEntries(MapUtil.entry("a", 1), MapUtil.entry("b", 2));
Assertions.assertEquals(2, map.size()); Assertions.assertEquals(2, map.size());
@ -218,7 +219,7 @@ public class MapUtilTest {
} }
@Test @Test
public void getIntTest(){ void getIntTest(){
Assertions.assertThrows(NumberFormatException.class, ()->{ Assertions.assertThrows(NumberFormatException.class, ()->{
final Map<String, String> map = MapUtil.ofEntries(MapUtil.entry("a", "d")); final Map<String, String> map = MapUtil.ofEntries(MapUtil.entry("a", "d"));
final Integer a = MapUtil.getInt(map, "a"); final Integer a = MapUtil.getInt(map, "a");
@ -227,7 +228,7 @@ public class MapUtilTest {
} }
@Test @Test
public void getIntValueTest(){ void getIntValueTest(){
final Map<String, String> map = MapUtil.ofEntries(MapUtil.entry("a", "1"), MapUtil.entry("b", null)); final Map<String, String> map = MapUtil.ofEntries(MapUtil.entry("a", "1"), MapUtil.entry("b", null));
final int a = MapUtil.get(map, "a", int.class); final int a = MapUtil.get(map, "a", int.class);
Assertions.assertEquals(1, a); Assertions.assertEquals(1, a);
@ -237,7 +238,7 @@ public class MapUtilTest {
} }
@Test @Test
public void valuesOfKeysTest() { void valuesOfKeysTest() {
final Dict v1 = Dict.of().set("id", 12).set("name", "张三").set("age", 23); final Dict v1 = Dict.of().set("id", 12).set("name", "张三").set("age", 23);
final Dict v2 = Dict.of().set("age", 13).set("id", 15).set("name", "李四"); final Dict v2 = Dict.of().set("age", 13).set("id", 15).set("name", "李四");
@ -254,9 +255,21 @@ public class MapUtilTest {
} }
@Test @Test
public void joinIgnoreNullTest() { void joinIgnoreNullTest() {
final Dict v1 = Dict.of().set("id", 12).set("name", "张三").set("age", null); final Dict v1 = Dict.of().set("id", 12).set("name", "张三").set("age", null);
final String s = MapUtil.joinIgnoreNull(v1, ",", "="); final String s = MapUtil.joinIgnoreNull(v1, ",", "=");
Assertions.assertEquals("id=12,name=张三", s); Assertions.assertEquals("id=12,name=张三", s);
} }
@Test
void computeIfAbsentForJdk8Test() {
// https://github.com/apache/dubbo/issues/11986
final ConcurrentHashMap<String,Integer> map=new ConcurrentHashMap<>();
// // map.computeIfAbsent("AaAa", key->map.computeIfAbsent("BBBB",key2->42));
MapUtil.computeIfAbsentForJdk8(map, "AaAa", key->map.computeIfAbsent("BBBB",key2->42));
Assertions.assertEquals(2, map.size());
Assertions.assertEquals(Integer.valueOf(42), map.get("AaAa"));
Assertions.assertEquals(Integer.valueOf(42), map.get("BBBB"));
}
} }