diff options
Diffstat (limited to 'value/src/test/java/com/google/auto/value/extension/serializable/processor/SerializableAutoValueExtensionTest.java')
-rw-r--r-- | value/src/test/java/com/google/auto/value/extension/serializable/processor/SerializableAutoValueExtensionTest.java | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/value/src/test/java/com/google/auto/value/extension/serializable/processor/SerializableAutoValueExtensionTest.java b/value/src/test/java/com/google/auto/value/extension/serializable/processor/SerializableAutoValueExtensionTest.java index 064406da..cbfdcafd 100644 --- a/value/src/test/java/com/google/auto/value/extension/serializable/processor/SerializableAutoValueExtensionTest.java +++ b/value/src/test/java/com/google/auto/value/extension/serializable/processor/SerializableAutoValueExtensionTest.java @@ -20,6 +20,7 @@ import static com.google.common.truth.Truth8.assertThat; import static org.junit.Assert.assertThrows; import com.google.auto.value.AutoValue; +import com.google.auto.value.extension.memoized.Memoized; import com.google.auto.value.extension.serializable.SerializableAutoValue; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; @@ -449,4 +450,48 @@ public final class SerializableAutoValueExtensionTest { assertThat(reserialized).isEqualTo(complexType); } + + /** + * Type that uses both {@code @SerializableAutoValue} and {@code @Memoized}, showing that the two + * extensions work correctly together. + */ + @SerializableAutoValue + @AutoValue + abstract static class SerializeMemoize implements Serializable { + abstract Optional<Integer> number(); + private transient int methodCount; + + @Memoized + Optional<Integer> negate() { + methodCount++; + return number().map(n -> -n); + } + + static SerializeMemoize.Builder builder() { + return new AutoValue_SerializableAutoValueExtensionTest_SerializeMemoize.Builder(); + } + + @AutoValue.Builder + abstract static class Builder { + abstract Builder setNumber(Optional<Integer> number); + abstract SerializeMemoize build(); + } + } + + @Test + public void serializeMemoize() { + SerializeMemoize instance1 = SerializeMemoize.builder().setNumber(Optional.of(17)).build(); + assertThat(instance1.methodCount).isEqualTo(0); + assertThat(instance1.negate()).hasValue(-17); + assertThat(instance1.methodCount).isEqualTo(1); + assertThat(instance1.negate()).hasValue(-17); + assertThat(instance1.methodCount).isEqualTo(1); + SerializeMemoize instance2 = SerializableTester.reserialize(instance1); + assertThat(instance2.methodCount).isEqualTo(0); + assertThat(instance2.negate()).hasValue(-17); + assertThat(instance2.methodCount).isEqualTo(1); + assertThat(instance2.negate()).hasValue(-17); + assertThat(instance2.methodCount).isEqualTo(1); + + } } |