package gson; import com.google.gson.Gson; import org.junit.Test; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; public class SetFinalFieldsFromJson_Test { private final Gson gson = new Gson(); private static class InitializeOnFieldDeclaration { final String field = "initial"; } @Test public void doNotSetFieldValueOnDeSerializationIfValueToFinalFieldIsAssignedOnFieldDeclaration() throws Exception { assertThat(gson.fromJson("{\"field\":\"another\"}", InitializeOnFieldDeclaration.class).field, is("initial")); } private static class InitializeWithNullOnFieldDeclaration { final String field = null; } @Test public void setFieldValueOnDeSerializationIfNullIsAssignedToFinalFieldOnFieldDeclaration() throws Exception { assertThat(gson.fromJson("{\"field\":\"another\"}", InitializeWithNullOnFieldDeclaration.class).field, is("another")); } private static class InitializeOnFieldInConstructor{ final String field; private InitializeOnFieldInConstructor() { field = "initial"; } } @Test public void setFieldValueOnDeSerializationIfValueToFinalFieldIsAssignedInConstructor() throws Exception { assertThat(gson.fromJson("{\"field\":\"another\"}", InitializeOnFieldInConstructor.class).field, is("another")); } }