aboutsummaryrefslogtreecommitdiff
path: root/value/src/test/java/com/google/auto/value/extension/serializable/processor/SerializableAutoValueExtensionTest.java
diff options
context:
space:
mode:
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.java45
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);
+
+ }
}