|
16 | 16 | import org.msgpack.value.impl.ImmutableLongValueImpl; |
17 | 17 | import org.msgpack.value.impl.ImmutableStringValueImpl; |
18 | 18 |
|
| 19 | +import java.lang.reflect.Field; |
19 | 20 | import java.math.BigDecimal; |
20 | 21 | import java.util.Arrays; |
21 | 22 | import java.util.HashMap; |
@@ -186,6 +187,31 @@ void registerObjectConverter() throws MessagePackObjectMapperException { |
186 | 187 | assertEquals(testValue, mapper.toValue(testTuple).asMapValue().map()); |
187 | 188 | } |
188 | 189 |
|
| 190 | + @Test |
| 191 | + void test_defaultMessagePackMapperCopy_shouldWorkFine() throws MessagePackValueMapperException, |
| 192 | + NoSuchFieldException, IllegalAccessException { |
| 193 | + DefaultMessagePackMapper mapper = DefaultMessagePackMapperFactory.getInstance().defaultComplexTypesMapper(); |
| 194 | + MessagePackMapper copiedMapper = mapper.copy(); |
| 195 | + MessagePackMapper copiedOfMapper = DefaultMessagePackMapperFactory.getInstance().copyOf(mapper); |
| 196 | + |
| 197 | + Field privateField |
| 198 | + = DefaultMessagePackMapper.class.getDeclaredField("valueConverters"); |
| 199 | + // Set the accessibility as true |
| 200 | + privateField.setAccessible(true); |
| 201 | + |
| 202 | + assertEquals(1, ((List) ((Map) privateField.get(mapper)).get(ValueType.MAP)).size()); |
| 203 | + assertEquals(1, ((List) ((Map) privateField.get(copiedMapper)).get(ValueType.MAP)).size()); |
| 204 | + |
| 205 | + mapper.registerValueConverter(ValueType.MAP, CustomTuple.class, |
| 206 | + (ValueConverter<MapValue, CustomTuple>) v -> null); |
| 207 | + |
| 208 | + assertEquals(2, ((List) ((Map) privateField.get(mapper)).get(ValueType.MAP)).size()); |
| 209 | + assertEquals(1, ((List) ((Map) privateField.get(copiedMapper)).get(ValueType.MAP)).size()); |
| 210 | + assertEquals(1, ((List) ((Map) privateField.get(copiedOfMapper)).get(ValueType.MAP)).size()); |
| 211 | + |
| 212 | + mapper.copy(); |
| 213 | + } |
| 214 | + |
189 | 215 | //TODO: add this test when will it be resolved https://github.com/tarantool/cartridge-java/issues/118 |
190 | 216 | // @Test |
191 | 217 | // void should_getObject_returnShort_ifParameterObjectClassIsShort() { |
|
0 commit comments