From 0321ce1120851e0b0f20b65d8cab9511219bf2b4 Mon Sep 17 00:00:00 2001 From: Looly Date: Sun, 3 May 2020 09:10:06 +0800 Subject: [PATCH] fix test --- CHANGELOG.md | 1 + .../java/cn/hutool/core/map/MapWrapper.java | 99 +++++++++++++++++-- .../java/cn/hutool/core/map/TolerantMap.java | 9 +- .../cn/hutool/core/map/TolerantMapTest.java | 48 ++++----- 4 files changed, 121 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 185840e1d..62e912323 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ ### Bug修复 * 【core 】 修复URLBuilder中请求参数有`&`导致的问题(issue#850@Github) +* 【core 】 修复URLBuilder中路径以`/`结尾导致的问题(issue#I1G44J@Gitee) * 【db 】 修复SqlBuilder中orderBy无效问题(issue#856@Github) ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-core/src/main/java/cn/hutool/core/map/MapWrapper.java b/hutool-core/src/main/java/cn/hutool/core/map/MapWrapper.java index 7da37c9a7..dfb58c0f6 100644 --- a/hutool-core/src/main/java/cn/hutool/core/map/MapWrapper.java +++ b/hutool-core/src/main/java/cn/hutool/core/map/MapWrapper.java @@ -4,42 +4,50 @@ import java.io.Serializable; import java.util.Collection; import java.util.Iterator; import java.util.Map; +import java.util.Objects; import java.util.Set; +import java.util.function.BiConsumer; +import java.util.function.BiFunction; +import java.util.function.Function; /** * Map包装类,通过包装一个已有Map实现特定功能。例如自定义Key的规则或Value规则 - * - * @author looly * * @param 键类型 * @param 值类型 * @author looly + * @author looly * @since 4.3.3 */ public class MapWrapper implements Map, Iterable>, Serializable, Cloneable { private static final long serialVersionUID = -7524578042008586382L; - - /** 默认增长因子 */ + + /** + * 默认增长因子 + */ protected static final float DEFAULT_LOAD_FACTOR = 0.75f; - /** 默认初始大小 */ + /** + * 默认初始大小 + */ protected static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 private final Map raw; /** * 构造 - * + * * @param raw 被包装的Map */ public MapWrapper(Map raw) { this.raw = raw; } - + /** * 获取原始的Map + * * @return Map */ - public Map getRaw(){ + public Map getRaw() { return this.raw; } @@ -113,8 +121,83 @@ public class MapWrapper implements Map, Iterable>, S return this.entrySet().iterator(); } + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + MapWrapper that = (MapWrapper) o; + return Objects.equals(raw, that.raw); + } + + @Override + public int hashCode() { + return Objects.hash(raw); + } + @Override public String toString() { return raw.toString(); } + + + @Override + public void forEach(BiConsumer action) { + raw.forEach(action); + } + + @Override + public void replaceAll(BiFunction function) { + raw.replaceAll(function); + } + + @Override + public V putIfAbsent(K key, V value) { + return raw.putIfAbsent(key, value); + } + + @Override + public boolean remove(Object key, Object value) { + return raw.remove(key, value); + } + + @Override + public boolean replace(K key, V oldValue, V newValue) { + return raw.replace(key, oldValue, newValue); + } + + @Override + public V replace(K key, V value) { + return raw.replace(key, value); + } + + @Override + public V computeIfAbsent(K key, Function mappingFunction) { + return raw.computeIfAbsent(key, mappingFunction); + } + + //---------------------------------------------------------------------------- Override default methods start + @Override + public V getOrDefault(Object key, V defaultValue) { + return raw.getOrDefault(key, defaultValue); + } + + @Override + public V computeIfPresent(K key, BiFunction remappingFunction) { + return raw.computeIfPresent(key, remappingFunction); + } + + @Override + public V compute(K key, BiFunction remappingFunction) { + return raw.compute(key, remappingFunction); + } + + @Override + public V merge(K key, V value, BiFunction remappingFunction) { + return raw.merge(key, value, remappingFunction); + } + //---------------------------------------------------------------------------- Override default methods end } diff --git a/hutool-core/src/main/java/cn/hutool/core/map/TolerantMap.java b/hutool-core/src/main/java/cn/hutool/core/map/TolerantMap.java index 9cb5bc7ce..9f190c52e 100644 --- a/hutool-core/src/main/java/cn/hutool/core/map/TolerantMap.java +++ b/hutool-core/src/main/java/cn/hutool/core/map/TolerantMap.java @@ -14,7 +14,7 @@ import java.util.Objects; public class TolerantMap extends MapWrapper { private static final long serialVersionUID = -4158133823263496197L; - private final transient V defaultValue; + private final V defaultValue; /** * 构造 @@ -83,11 +83,12 @@ public class TolerantMap extends MapWrapper { if (o == null || getClass() != o.getClass()) { return false; } - if (!super.equals(o)) { + if (false == super.equals(o)) { return false; } - TolerantMap that = (TolerantMap) o; - return getRaw().equals(that.getRaw()) && Objects.equals(defaultValue, that.defaultValue); + final TolerantMap that = (TolerantMap) o; + return getRaw().equals(that.getRaw()) + && Objects.equals(defaultValue, that.defaultValue); } @Override diff --git a/hutool-core/src/test/java/cn/hutool/core/map/TolerantMapTest.java b/hutool-core/src/test/java/cn/hutool/core/map/TolerantMapTest.java index dba466118..b6ed7cbe2 100644 --- a/hutool-core/src/test/java/cn/hutool/core/map/TolerantMapTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/map/TolerantMapTest.java @@ -9,32 +9,32 @@ import java.util.HashMap; public class TolerantMapTest { - private final TolerantMap map = TolerantMap.of(new HashMap<>(), "default"); + private final TolerantMap map = TolerantMap.of(new HashMap<>(), "default"); - @Before - public void before() { - map.put("monday", "星期一"); - map.put("tuesday", "星期二"); - } + @Before + public void before() { + map.put("monday", "星期一"); + map.put("tuesday", "星期二"); + } - @Test - public void testSerialize() { - byte[] bytes = ObjectUtil.serialize(map); - TolerantMap serializedMap = ObjectUtil.deserialize(bytes); - assert serializedMap != map; - assert map.equals(serializedMap); - } + @Test + public void testSerialize() { + byte[] bytes = ObjectUtil.serialize(map); + TolerantMap serializedMap = ObjectUtil.deserialize(bytes); + assert serializedMap != map; + assert map.equals(serializedMap); + } - @Test - public void testClone() { - TolerantMap clonedMap = ObjectUtil.clone(map); - assert clonedMap != map; - assert map.equals(clonedMap); - } + @Test + public void testClone() { + TolerantMap clonedMap = ObjectUtil.clone(map); + assert clonedMap != map; + assert map.equals(clonedMap); + } - @Test - public void testGet() { - assert "星期二".equals(map.get("tuesday")); - assert "default".equals(map.get(RandomUtil.randomString(6))); - } + @Test + public void testGet() { + assert "星期二".equals(map.get("tuesday")); + assert "default".equals(map.get(RandomUtil.randomString(6))); + } }