From b6d3103d81645140d7614b73053d6e7fcae92752 Mon Sep 17 00:00:00 2001 From: godotg Date: Tue, 2 Jul 2024 16:26:34 +0800 Subject: [PATCH] fix[HashMapLongLong]: type conversion error --- .../protocol/collection/HashMapLongLong.java | 6 +-- .../zfoo/protocol/collection/HashMapTest.java | 41 ++++++++++++++++++- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/protocol/src/main/java/com/zfoo/protocol/collection/HashMapLongLong.java b/protocol/src/main/java/com/zfoo/protocol/collection/HashMapLongLong.java index 0feef2b8..d364c039 100644 --- a/protocol/src/main/java/com/zfoo/protocol/collection/HashMapLongLong.java +++ b/protocol/src/main/java/com/zfoo/protocol/collection/HashMapLongLong.java @@ -74,13 +74,13 @@ public class HashMapLongLong implements Map { return size == 0; } - public boolean containsKeyPrimitive(int key) { + public boolean containsKeyPrimitive(long key) { return indexOf(key) >= 0; } @Override public boolean containsKey(Object key) { - return containsKeyPrimitive(ArrayUtils.intValue((Integer) key)); + return containsKeyPrimitive(ArrayUtils.longValue((Long) key)); } @Override @@ -99,7 +99,7 @@ public class HashMapLongLong implements Map { @Override public Long get(Object key) { - var index = indexOf(ArrayUtils.intValue((Integer) key)); + var index = indexOf(ArrayUtils.longValue((Number) key)); return index == -1 ? null : values[index]; } diff --git a/protocol/src/test/java/com/zfoo/protocol/collection/HashMapTest.java b/protocol/src/test/java/com/zfoo/protocol/collection/HashMapTest.java index 6e3a0289..31a8b591 100644 --- a/protocol/src/test/java/com/zfoo/protocol/collection/HashMapTest.java +++ b/protocol/src/test/java/com/zfoo/protocol/collection/HashMapTest.java @@ -313,7 +313,7 @@ public class HashMapTest { int dummy1 = 0, dummy2 = 0; for (int i = 0; i < 1000; i++) { var it = map.entrySet().iterator(); - while(it.hasNext()) { + while (it.hasNext()) { var next = it.next(); dummy1 ^= next.getKey(); dummy2 ^= next.getValue(); @@ -323,4 +323,43 @@ public class HashMapTest { Assert.assertEquals(dummy2, 0); } + @Test + public void intIntEqualsTest() { + var map = Map.of(1, 2, 3, 4, 5, 6, Integer.MAX_VALUE, Integer.MIN_VALUE); + var myMap = new HashMapIntInt(); + myMap.putAll(map); + Assert.assertEquals(map, myMap); + } + + @Test + public void intLongEqualsTest() { + var map = Map.of(1, 2L, 3, 4L, 5, 6L, Integer.MAX_VALUE, Long.MIN_VALUE); + var myMap = new HashMapIntLong(); + myMap.putAll(map); + Assert.assertEquals(map, myMap); + } + + @Test + public void intShortEqualsTest() { + var map = Map.of(1, (short) 2, 3, (short) 4, 5, (short) 6, Integer.MAX_VALUE, Short.MIN_VALUE); + var myMap = new HashMapIntShort(); + myMap.putAll(map); + Assert.assertEquals(map, myMap); + } + + @Test + public void longIntEqualsTest() { + var map = Map.of(1L, 2, 3L, 4, 5L, 6, Long.MAX_VALUE, Integer.MIN_VALUE); + var myMap = new HashMapLongInt(); + myMap.putAll(map); + Assert.assertEquals(map, myMap); + } + + @Test + public void longLongEqualsTest() { + var map = Map.of(1L, 2L, 3L, 4L, 5L, 6L, Long.MAX_VALUE, Long.MIN_VALUE); + var myMap = new HashMapLongLong(); + myMap.putAll(map); + Assert.assertEquals(map, myMap); + } }