package com.google.gson;
import com.google.gson.internal.Excluder;
import com.google.gson.annotations.Expose;
import java.lang.reflect.Field;
import junit.framework.TestCase;
/**
* Unit tests for GsonBuilder.REQUIRE_EXPOSE_DESERIALIZE.
*
* @author Joel Leitch
*/
public class ExposeAnnotationExclusionStrategyTest extends TestCase {
private Excluder excluder = Excluder.DEFAULT.excludeFieldsWithoutExposeAnnotation();
public void testNeverSkipClasses() throws Exception {
fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),this, "testNeverSkipClasses");
fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),2686,excluder,2685,excluder.excludeClass(com.google.gson.ExposeAnnotationExclusionStrategyTest.MockObject.class, true));
fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),2688,excluder,2687,excluder.excludeClass(com.google.gson.ExposeAnnotationExclusionStrategyTest.MockObject.class, false));
fr.inria.diversify.testamplification.logger.Logger.writeTestFinish(Thread.currentThread());
}
public void testSkipNonAnnotatedFields() throws Exception {
fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),this, "testSkipNonAnnotatedFields");
Field f = ExposeAnnotationExclusionStrategyTest.createFieldAttributes("foo");
fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),2702,excluder,2701,excluder.excludeField(f, true));
fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),2704,excluder,2703,excluder.excludeField(f, false));
fr.inria.diversify.testamplification.logger.Logger.writeTestFinish(Thread.currentThread());
}
public void testSkipExplicitlySkippedFields() throws Exception {
fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),this, "testSkipExplicitlySkippedFields");
Field f = ExposeAnnotationExclusionStrategyTest.createFieldAttributes("foo");
fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),2698,excluder,2697,excluder.excludeField(f, true));
fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),2700,excluder,2699,excluder.excludeField(f, false));
fr.inria.diversify.testamplification.logger.Logger.writeTestFinish(Thread.currentThread());
}
public void testNeverSkipExposedAnnotatedFields() throws Exception {
fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),this, "testNeverSkipExposedAnnotatedFields");
Field f = ExposeAnnotationExclusionStrategyTest.createFieldAttributes("foo");
fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),2694,excluder,2693,excluder.excludeField(f, true));
fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),2696,excluder,2695,excluder.excludeField(f, false));
fr.inria.diversify.testamplification.logger.Logger.writeTestFinish(Thread.currentThread());
}
public void testNeverSkipExplicitlyExposedAnnotatedFields() throws Exception {
fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),this, "testNeverSkipExplicitlyExposedAnnotatedFields");
Field f = ExposeAnnotationExclusionStrategyTest.createFieldAttributes("foo");
fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),2690,excluder,2689,excluder.excludeField(f, true));
fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),2692,excluder,2691,excluder.excludeField(f, false));
fr.inria.diversify.testamplification.logger.Logger.writeTestFinish(Thread.currentThread());
}
public void testDifferentSerializeAndDeserializeField() throws Exception {
fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),this, "testDifferentSerializeAndDeserializeField");
Field f = ExposeAnnotationExclusionStrategyTest.createFieldAttributes("foo");
fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),2682,excluder,2681,excluder.excludeField(f, true));
fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),2684,excluder,2683,excluder.excludeField(f, false));
fr.inria.diversify.testamplification.logger.Logger.writeTestFinish(Thread.currentThread());
}
private static Field createFieldAttributes(String fieldName) throws Exception {
return MockObject.class.getField(fieldName);
}
@SuppressWarnings(value = "unused")
private static class MockObject {
@Expose
public final int exposedField = 0;
@Expose(deserialize = true, serialize = true)
public final int explicitlyExposedField = 0;
@Expose(deserialize = false, serialize = false)
public final int explicitlyHiddenField = 0;
@Expose(deserialize = false, serialize = true)
public final int explicitlyDifferentModeField = 0;
public final int hiddenField = 0;
}
}