package io.vavr.jackson.datatype.map; import com.fasterxml.jackson.core.type.TypeReference; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import java.io.IOException; import io.vavr.collection.LinkedHashMap; import io.vavr.collection.Map; import io.vavr.control.Option; public class LinkedHashMapTest extends MapTest { @Override Class<?> clz() { return LinkedHashMap.class; } @Override <K, V> Map<K, V> emptyMap() { return LinkedHashMap.empty(); } @Override protected TypeReference<LinkedHashMap<String, Option<Integer>>> typeReferenceWithOption() { return new TypeReference<LinkedHashMap<String, Option<Integer>>>() {}; } @Test void shouldKeepOrder() throws IOException { Map<Object, Object> vavrObject = emptyMap().put("2", 1).put("1", 2); java.util.Map<Object, Object> javaObject = new java.util.LinkedHashMap<>(); javaObject.put("2", 1); javaObject.put("1", 2); String json = mapper().writer().writeValueAsString(vavrObject); Assertions.assertEquals(genJsonMap(javaObject), json); Map<?, ?> restored = (Map<?, ?>) mapper().readValue(json, clz()); Assertions.assertEquals(restored, vavrObject); } }