Skip to content

Commit

Permalink
Minor tweaks to (failing) test for #4214
Browse files Browse the repository at this point in the history
  • Loading branch information
cowtowncoder committed Nov 27, 2023
1 parent 3aa59b9 commit d8be79d
Showing 1 changed file with 17 additions and 37 deletions.
Original file line number Diff line number Diff line change
@@ -1,68 +1,48 @@
package com.fasterxml.jackson.failing;

import com.fasterxml.jackson.databind.BaseMapTest;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.EnumSet;
import java.util.Set;

import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.BaseMapTest;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping;
import com.fasterxml.jackson.databind.jsontype.BasicPolymorphicTypeValidator;
import com.google.common.base.Objects;

public class EnumSetSerialization4214Test extends BaseMapTest {

// For [databind#4214]
public class EnumSetSerialization4214Test extends BaseMapTest
{
static enum MyEnum {
ITEM_A, ITEM_B;
}

static class EnumSetHolder {
private Set<MyEnum> enumSet; // use Set instead of EnumSet for type of this

public Set<MyEnum> getEnumSet() {
return enumSet;
}

public void setEnumSet(Set<MyEnum> enumSet) {
this.enumSet = enumSet;
}
public Set<MyEnum> enumSet; // use Set instead of EnumSet for type of this

@Override
public boolean equals(Object o) {
if (!(o instanceof EnumSetHolder)) {
return false;
}
EnumSetHolder eh = (EnumSetHolder) o;
if (eh == this) {
return true;
}
if (enumSet == null) {
if (eh.getEnumSet() == null) {
return true;
} else {
return false;
}
} else {
if (eh.getEnumSet() == null) {
return false;
}
return enumSet.containsAll(eh.getEnumSet());
}
return Objects.equal(enumSet, eh.enumSet);
}
}

public void testSerialization() throws Exception {
public void testSerialization() throws Exception
{
ObjectMapper mapper = jsonMapperBuilder().build()
// this type information is needed in json string, for this test
.activateDefaultTyping(BasicPolymorphicTypeValidator.builder().allowIfBaseType(Object.class).build(),
DefaultTyping.EVERYTHING);
DefaultTyping.NON_FINAL_AND_ENUMS);

EnumSetHolder enumSetHolder = new EnumSetHolder();
enumSetHolder.setEnumSet(EnumSet.allOf(MyEnum.class));
String jsonStr = mapper.writeValueAsString(enumSetHolder);
EnumSetHolder result = mapper.readValue(jsonStr, EnumSetHolder.class);
enumSetHolder.enumSet = EnumSet.allOf(MyEnum.class);
String json = mapper.writeValueAsString(enumSetHolder);

//System.err.println("JSON = \n"+json);

EnumSetHolder result = mapper.readValue(json, EnumSetHolder.class);
assertEquals(result, enumSetHolder);
}
}

0 comments on commit d8be79d

Please sign in to comment.