package hu.advancedweb.scott; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertThat; import org.junit.Test; import hu.advancedweb.scott.helper.TestHelper; public class FieldRecordingInitialValuesTest { int a = 10; int b = 11; static int A = 12; static int B = 13; @Test public void recordFieldAccess() throws Exception { // track initial states of accessed fields assertThat(TestHelper.getLastRecordedStateForField("this.a"), equalTo("10")); assertThat(TestHelper.getLastRecordedStateForField("this.b"), equalTo("11")); assertThat(TestHelper.getLastRecordedStateForField("FieldRecordingInitialValuesTest.A"), equalTo("12")); assertThat(TestHelper.getLastRecordedStateForField("FieldRecordingInitialValuesTest.B"), equalTo("13")); @SuppressWarnings("unused") String accessed = "" + a + b + A + B; } @Test public void recordFieldSubsetAccess() throws Exception { // track initial states of accessed fields assertThat(TestHelper.getLastRecordedStateForField("this.a"), equalTo("10")); assertThat(TestHelper.getLastRecordedStateForField("FieldRecordingInitialValuesTest.B"), equalTo("13")); // don't record not accessed fields assertThat(TestHelper.getLastRecordedStateForField("b"), equalTo(null)); assertThat(TestHelper.getLastRecordedStateForField("FieldRecordingInitialValuesTest.A"), equalTo(null)); @SuppressWarnings("unused") String accessed = "" + a + B; } @Test public void recordWrite() throws Exception { // initial value match assertThat(TestHelper.getLastRecordedStateForField("this.a"), equalTo("10")); assertThat(TestHelper.getLastRecordedStateForField("FieldRecordingInitialValuesTest.A"), equalTo("12")); a = 20; A = 22; // values after write match assertThat(TestHelper.getLastRecordedStateForField("this.a"), equalTo("20")); assertThat(TestHelper.getLastRecordedStateForField("FieldRecordingInitialValuesTest.A"), equalTo("22")); } @Test public void recordReadAndWrite() throws Exception { // initial modified values match assertThat(TestHelper.getLastRecordedStateForField("this.b"), equalTo("11")); assertThat(TestHelper.getLastRecordedStateForField("FieldRecordingInitialValuesTest.B"), equalTo("13")); @SuppressWarnings("unused") String accessed = "" + b + B; // no change after reading assertThat(TestHelper.getLastRecordedStateForField("this.b"), equalTo("11")); assertThat(TestHelper.getLastRecordedStateForField("FieldRecordingInitialValuesTest.B"), equalTo("13")); } }