Dirty fix of issue with CharSequence equivalence, for correct ChronicleMap.equals() and hashCode() impls

This commit is contained in:
leventov
2015-02-13 13:31:12 +07:00
parent 9580010d61
commit c8f61e3275
4 changed files with 119 additions and 18 deletions
@@ -1309,7 +1309,6 @@ public class CHMUseCasesTest {
valueA.limit(valueA.capacity());
}
//@Ignore("HCOLL-268 JSON serialisation issue")
@Test
public void testByteBufferDirectByteBufferMap()
throws ExecutionException, InterruptedException, IOException {
@@ -1340,25 +1339,19 @@ public class CHMUseCasesTest {
map.put(key1, value1);
mapChecks();
final SerializableFunction<ByteBuffer, ByteBuffer> function =
new SerializableFunction<ByteBuffer, ByteBuffer>() {
@Override
public ByteBuffer apply(ByteBuffer s) {
ByteBuffer slice = s.slice();
slice.limit(2);
return slice;
}
s -> {
ByteBuffer slice = s.slice();
slice.limit(2);
return slice;
};
assertBBEquals(ByteBuffer.wrap(new byte[]{11, 11}), map.getMapped(key1, function));
assertEquals(null, map.getMapped(key2, function));
mapChecks();
assertBBEquals(ByteBuffer.wrap(new byte[]{12, 10}),
map.putMapped(key1, new UnaryOperator<ByteBuffer>() {
@Override
public ByteBuffer update(ByteBuffer s) {
s.put(0, (byte) (s.get(0) + 1));
s.put(1, (byte) (s.get(1) - 1));
return function.apply(s);
}
map.putMapped(key1, s -> {
s.put(0, (byte) (s.get(0) + 1));
s.put(1, (byte) (s.get(1) - 1));
return function.apply(s);
}));
assertBBEquals(ByteBuffer.wrap(new byte[]{12, 10}), map.get(key1));
@@ -0,0 +1,40 @@
/*
* Copyright 2014 Higher Frequency Trading http://www.higherfrequencytrading.com
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.openhft.chronicle.map;
import org.junit.Test;
import java.util.HashMap;
import static org.junit.Assert.assertTrue;
public class ChronicleMapEqualsTest {
@Test
public void test() {
ChronicleMap<CharSequence, CharSequence> map =
ChronicleMapBuilder
.of(CharSequence.class, CharSequence.class)
.entries(100)
.create();
HashMap<CharSequence, CharSequence> refMap = new HashMap<>();
refMap.put("a", "b");
map.putAll(refMap);
assertTrue(map.equals(refMap));
}
}