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 VariableRecordingTest { @Test public void recordInteger() throws Exception { int i = 5; assertThat(TestHelper.getLastRecordedStateForVariable("i"), equalTo(Integer.toString(i))); } @Test public void recordShort() throws Exception { short s = 500; assertThat(TestHelper.getLastRecordedStateForVariable("s"), equalTo(Short.toString(s))); } @Test public void recordLong() throws Exception { long l = 1000L; assertThat(TestHelper.getLastRecordedStateForVariable("l"), equalTo(Long.toString(l))); } @Test public void recordDouble() throws Exception { double d = 5.5D; assertThat(TestHelper.getLastRecordedStateForVariable("d"), equalTo(Double.toString(d))); } @Test public void recordFloat() throws Exception { float f = 5.5F; assertThat(TestHelper.getLastRecordedStateForVariable("f"), equalTo(Float.toString(f))); } @Test public void recordBoolean() throws Exception { boolean bt = true; assertThat(TestHelper.getLastRecordedStateForVariable("bt"), equalTo(Boolean.toString(bt))); boolean bf = false; assertThat(TestHelper.getLastRecordedStateForVariable("bf"), equalTo(Boolean.toString(bf))); boolean bot = Boolean.TRUE; assertThat(TestHelper.getLastRecordedStateForVariable("bot"), equalTo(Boolean.toString(bot))); boolean bof = Boolean.FALSE; assertThat(TestHelper.getLastRecordedStateForVariable("bof"), equalTo(Boolean.toString(bof))); } @Test public void recordString() throws Exception { String s = "Hello World!"; assertThat(TestHelper.getLastRecordedStateForVariable("s"), equalTo(s)); } @Test public void recordNull() throws Exception { @SuppressWarnings("unused") String s = null; assertThat(TestHelper.getLastRecordedStateForVariable("s"), equalTo("null")); } @Test public void recordArray() throws Exception { @SuppressWarnings("unused") String[] array = {"a", "b"}; assertThat(TestHelper.getLastRecordedStateForVariable("array"), equalTo("[a, b]")); } @Test public void recordEmptyArray() throws Exception { @SuppressWarnings("unused") String[] array = {}; assertThat(TestHelper.getLastRecordedStateForVariable("array"), equalTo("[]")); } @Test public void recordCustomObject() throws Exception { CustomClass myClass = new CustomClass(5); assertThat(TestHelper.getLastRecordedStateForVariable("myClass"), equalTo(myClass.toString())); } public static class CustomClass { int i; public CustomClass(int i) { this.i = i; } @Override public String toString() { return "MyClass [i=" + i + "]"; } } @Test public void recordConsecutiveDeclarations() { String inner = "inner"; String inner2 = "inner2"; assertThat(TestHelper.getLastRecordedStateForVariable("inner"), equalTo(inner)); assertThat(TestHelper.getLastRecordedStateForVariable("inner2"), equalTo(inner2)); } @Test public void recordManyDeclarations() { String inner = "inner"; String inner2 = "inner2"; String inner3 = "inner3"; String inner4 = "inner4"; String inner5 = "inner5"; String inner6 = "inner6"; String inner7 = "inner7"; String inner8 = "inner8"; String inner9 = "inner9"; String inner10 = "inner10"; assertThat(TestHelper.getLastRecordedStateForVariable("inner"), equalTo(inner)); assertThat(TestHelper.getLastRecordedStateForVariable("inner2"), equalTo(inner2)); assertThat(TestHelper.getLastRecordedStateForVariable("inner3"), equalTo(inner3)); assertThat(TestHelper.getLastRecordedStateForVariable("inner4"), equalTo(inner4)); assertThat(TestHelper.getLastRecordedStateForVariable("inner5"), equalTo(inner5)); assertThat(TestHelper.getLastRecordedStateForVariable("inner6"), equalTo(inner6)); assertThat(TestHelper.getLastRecordedStateForVariable("inner7"), equalTo(inner7)); assertThat(TestHelper.getLastRecordedStateForVariable("inner8"), equalTo(inner8)); assertThat(TestHelper.getLastRecordedStateForVariable("inner9"), equalTo(inner9)); assertThat(TestHelper.getLastRecordedStateForVariable("inner10"), equalTo(inner10)); } @SuppressWarnings("unused") @Test public void methodWithJustADeclarationDontCrash() { String outer = "outer!"; } @Test public void recordMethodWithJustADeclaration() { String outer = "outer!"; assertThat(TestHelper.getLastRecordedStateForVariable("outer"), equalTo(outer)); } @Test public void recordMethodWithJustADeclarationInABlock() { { String inner = "inner"; assertThat(TestHelper.getLastRecordedStateForVariable("inner"), equalTo(inner)); } } @SuppressWarnings("unused") @Test public void methodWithJustADeclarationInABlockDontCrash() { { String inner = "inner"; } } @SuppressWarnings("unused") @Test public void methodWithJustDeclarationsInABlockDontCrash() { { String inner = "inner"; String inner2 = "inner2"; } } @SuppressWarnings("unused") @Test public void methodEndingWithADeclarationsInABlockDontCrash() { { String inner = "inner"; System.out.println(""); String inner2 = "inner2"; } } @SuppressWarnings("unused") @Test public void methodWithJustADeclarationInATryBlockDontCrash() { try { String inner = "inner"; } catch (Exception e) { // Don't care. } } @SuppressWarnings("unused") @Test public void methodWithJustADeclarationInACatchBlockDontCrash() { try { throw new NullPointerException(); } catch (Exception e) { String inner = "inner"; } } }