diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/.classpath b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/.classpath new file mode 100644 index 0000000..0a1dadd --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/.classpath @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/.project b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/.project new file mode 100644 index 0000000..777a076 --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/.project @@ -0,0 +1,23 @@ + + + TelemetrySystem + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/.settings/org.eclipse.jdt.core.prefs b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..abec6ca --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/.settings/org.eclipse.m2e.core.prefs b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/pom.xml b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/pom.xml new file mode 100644 index 0000000..4f04117 --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/pom.xml @@ -0,0 +1,15 @@ + + 4.0.0 + TelemetrySystem + TelemetrySystem + 0.0.1-SNAPSHOT + + + junit + junit + 4.9 + jar + test + + + \ No newline at end of file diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/src/main/java/tddmicroexercises/telemetrysystem/ITelemetryClient.java b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/src/main/java/tddmicroexercises/telemetrysystem/ITelemetryClient.java new file mode 100644 index 0000000..1e84273 --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/src/main/java/tddmicroexercises/telemetrysystem/ITelemetryClient.java @@ -0,0 +1,17 @@ +package tddmicroexercises.telemetrysystem; + +public interface ITelemetryClient { + + public static final String DIAGNOSTIC_MESSAGE = "AT#UD"; + + boolean getOnlineStatus(); + + void connect(String telemetryServerConnectionString); + + void disconnect(); + + void send(String message); + + String receive(); + +} \ No newline at end of file diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/src/main/java/tddmicroexercises/telemetrysystem/TelemetryClient.java b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/src/main/java/tddmicroexercises/telemetrysystem/TelemetryClient.java new file mode 100644 index 0000000..d2ef1c6 --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/src/main/java/tddmicroexercises/telemetrysystem/TelemetryClient.java @@ -0,0 +1,98 @@ +package tddmicroexercises.telemetrysystem; + +import java.util.Random; + +public class TelemetryClient implements ITelemetryClient +{ + // + // The communication with the server is simulated in this implementation. + // Because the focus of the exercise is on the other class. + // + + private boolean onlineStatus; + private boolean diagnosticMessageJustSent = false; + + private final Random connectionEventsSimulator = new Random(); + private final Random randomMessageSimulator = new Random(); + + public boolean getOnlineStatus() + { + return onlineStatus; + } + + public void connect(String telemetryServerConnectionString) + { + if (telemetryServerConnectionString == null || "".equals(telemetryServerConnectionString)) + { + throw new IllegalArgumentException(); + } + + // Fake the connection with 20% chances of success + boolean success = connectionEventsSimulator.nextInt(10) <= 2; + + onlineStatus = success; + } + + public void disconnect() + { + onlineStatus = false; + } + + public void send(String message) + { + if (message == null || "".equals(message)) + { + throw new IllegalArgumentException(); + } + + // The simulation of Send() actually just remember if the last message sent was a diagnostic message. + // This information will be used to simulate the Receive(). Indeed there is no real server listening. + if (message == DIAGNOSTIC_MESSAGE) + { + diagnosticMessageJustSent = true; + } + else + { + diagnosticMessageJustSent = false; + } + } + + public String receive() + { + String message; + + if (diagnosticMessageJustSent) + { + // Simulate the reception of the diagnostic message + message = "LAST TX rate................ 100 MBPS\r\n" + + "HIGHEST TX rate............. 100 MBPS\r\n" + + "LAST RX rate................ 100 MBPS\r\n" + + "HIGHEST RX rate............. 100 MBPS\r\n" + + "BIT RATE.................... 100000000\r\n" + + "WORD LEN.................... 16\r\n" + + "WORD/FRAME.................. 511\r\n" + + "BITS/FRAME.................. 8192\r\n" + + "MODULATION TYPE............. PCM/FM\r\n" + + "TX Digital Los.............. 0.75\r\n" + + "RX Digital Los.............. 0.10\r\n" + + "BEP Test.................... -5\r\n" + + "Local Rtrn Count............ 00\r\n" + + "Remote Rtrn Count........... 00"; + + diagnosticMessageJustSent = false; + } + else + { + // Simulate the reception of a response message returning a random message. + message = ""; + int messageLength = randomMessageSimulator.nextInt(50) + 60; + for(int i = messageLength; i > 0; --i) + { + message += (char)randomMessageSimulator.nextInt(40) + 86; + } + } + + return message; + } +} + diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/src/main/java/tddmicroexercises/telemetrysystem/TelemetryDiagnosticControls.java b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/src/main/java/tddmicroexercises/telemetrysystem/TelemetryDiagnosticControls.java new file mode 100644 index 0000000..85f1d1c --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/src/main/java/tddmicroexercises/telemetrysystem/TelemetryDiagnosticControls.java @@ -0,0 +1,50 @@ +package tddmicroexercises.telemetrysystem; + +public class TelemetryDiagnosticControls +{ + private final static String DIAGNOSTIC_CHANNEL_CONNECTION_STRING = "*111#"; + + private final ITelemetryClient telemetryClient; + private String diagnosticInfo = ""; + + public TelemetryDiagnosticControls() + { + telemetryClient = new TelemetryClient(); + } + + public TelemetryDiagnosticControls(ITelemetryClient telemetryClient) { + this.telemetryClient = telemetryClient; + } + + public String getDiagnosticInfo() + { + return diagnosticInfo; + } + + public void setDiagnosticInfo(String diagnosticInfo) + { + this.diagnosticInfo = diagnosticInfo; + } + + public void checkTransmission() throws Exception + { + diagnosticInfo = ""; + + telemetryClient.disconnect(); + + int retryLeft = 3; + while (telemetryClient.getOnlineStatus() == false && retryLeft > 0) + { + telemetryClient.connect(DIAGNOSTIC_CHANNEL_CONNECTION_STRING); + retryLeft -= 1; + } + + if(telemetryClient.getOnlineStatus() == false) + { + throw new Exception("Unable to connect."); + } + + telemetryClient.send(TelemetryClient.DIAGNOSTIC_MESSAGE); + diagnosticInfo = telemetryClient.receive(); + } +} diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/src/test/java/tddmicroexercises/telemetrysystem/TelemetryDiagnosticControlsTest.java b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/src/test/java/tddmicroexercises/telemetrysystem/TelemetryDiagnosticControlsTest.java new file mode 100644 index 0000000..2b196e0 --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/src/test/java/tddmicroexercises/telemetrysystem/TelemetryDiagnosticControlsTest.java @@ -0,0 +1,170 @@ +package tddmicroexercises.telemetrysystem; + +import java.util.ArrayList; +import java.util.List; + +import junit.framework.Assert; + +import org.junit.Before; +import org.junit.Test; + +public class TelemetryDiagnosticControlsTest +{ + + private MockTelemetryClient tc; + private TelemetryDiagnosticControls controls; + + @Before public void + before() { + tc = new MockTelemetryClient(); + controls = new TelemetryDiagnosticControls(tc); + } + + @Test public void + disconnect_should_be_first_operation_on_telemetry_client() { + try { + controls.checkTransmission(); + } + catch(Exception e) { + + } + finally { + Assert.assertEquals(0, tc.messageIndex("disconnect")); + } + } + + @Test public void + should_connect_to_telemetry_client_using_correct_connection_string() { + try { + controls.checkTransmission(); + } + catch(Exception e) { + + } + finally { + Assert.assertEquals("*111#", tc.getConnectionString()); + } + } + + @Test public void + should_try_to_connect_to_telemetry_client_three_times() { + try { + controls.checkTransmission(); + } + catch(Exception e) { + + } + finally { + Assert.assertEquals(3, tc.connectTries()); + } + } + + @Test(expected = Exception.class) public void + should_throw_exception_if_unable_to_connect() throws Exception { + try { + tc.setOnlineStatus(false); + controls.checkTransmission(); + } + catch(Exception e) { + Assert.assertEquals("Unable to connect.", e.getMessage()); + throw e; + } + } + + @Test public void + should_send_diagnostic_message_to_telemetry_client_when_successfully_connected() throws Exception { + try { + tc.setOnlineStatus(true); + controls.checkTransmission(); + } + finally { + Assert.assertEquals(ITelemetryClient.DIAGNOSTIC_MESSAGE, tc.getMessageSent()); + } + } + + @Test public void + should_store_message_recieved_from_telemetry_client_when_successfully_connected() throws Exception { + tc.setOnlineStatus(true); + tc.setRecieve("test"); + controls.checkTransmission(); + Assert.assertEquals("test", controls.getDiagnosticInfo()); + } + + private static class MockTelemetryClient implements ITelemetryClient { + + private boolean onlineStatus; + + private List methods = new ArrayList(); + + public int messageIndex(String method) { + return methods.indexOf(method); + } + + public boolean getOnlineStatus() { + methods.add("onlineStatus"); + return onlineStatus; + } + + public void setOnlineStatus(boolean onlineStatus) { + this.onlineStatus = onlineStatus; + } + + private int tries; + private String connectionString; + + public void connect(String telemetryServerConnectionString) { + methods.add("connect"); + tries++; + connectionString = telemetryServerConnectionString; + } + + public int connectTries() { + return tries; + } + + public String getConnectionString() { + return connectionString; + } + + private boolean disconnected; + + public void disconnect() { + methods.add("disconnect"); + disconnected = true; + } + + public boolean isDisconnected() { + return disconnected; + } + + private int sendCount; + private String messageSent; + + public void send(String message) { + methods.add("send"); + messageSent = message; + sendCount++; + } + + public String getMessageSent() { + return messageSent; + } + + public int sendCount() { + return sendCount; + } + + private String recieveMsg; + + public String receive() { + methods.add("recieve"); + return recieveMsg; + } + + public void setRecieve(String recieveMsg) { + this.recieveMsg = recieveMsg; + } + + } + +} diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/target/classes/tddmicroexercises/telemetrysystem/ITelemetryClient.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/target/classes/tddmicroexercises/telemetrysystem/ITelemetryClient.class new file mode 100644 index 0000000..2326eb8 Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/target/classes/tddmicroexercises/telemetrysystem/ITelemetryClient.class differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/target/classes/tddmicroexercises/telemetrysystem/TelemetryClient.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/target/classes/tddmicroexercises/telemetrysystem/TelemetryClient.class new file mode 100644 index 0000000..9e403cd Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/target/classes/tddmicroexercises/telemetrysystem/TelemetryClient.class differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/target/classes/tddmicroexercises/telemetrysystem/TelemetryDiagnosticControls.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/target/classes/tddmicroexercises/telemetrysystem/TelemetryDiagnosticControls.class new file mode 100644 index 0000000..8302dfb Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/target/classes/tddmicroexercises/telemetrysystem/TelemetryDiagnosticControls.class differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/target/surefire-reports/TEST-tddmicroexercises.telemetrysystem.TelemetryDiagnosticControlsTest.xml b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/target/surefire-reports/TEST-tddmicroexercises.telemetrysystem.TelemetryDiagnosticControlsTest.xml new file mode 100644 index 0000000..13c477e --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/target/surefire-reports/TEST-tddmicroexercises.telemetrysystem.TelemetryDiagnosticControlsTest.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/target/surefire-reports/tddmicroexercises.telemetrysystem.TelemetryDiagnosticControlsTest.txt b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/target/surefire-reports/tddmicroexercises.telemetrysystem.TelemetryDiagnosticControlsTest.txt new file mode 100644 index 0000000..113ac0b --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/target/surefire-reports/tddmicroexercises.telemetrysystem.TelemetryDiagnosticControlsTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: tddmicroexercises.telemetrysystem.TelemetryDiagnosticControlsTest +------------------------------------------------------------------------------- +Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.029 sec diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/target/test-classes/tddmicroexercises/telemetrysystem/TelemetryDiagnosticControlsTest$MockTelemetryClient.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/target/test-classes/tddmicroexercises/telemetrysystem/TelemetryDiagnosticControlsTest$MockTelemetryClient.class new file mode 100644 index 0000000..4b258de Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/target/test-classes/tddmicroexercises/telemetrysystem/TelemetryDiagnosticControlsTest$MockTelemetryClient.class differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/target/test-classes/tddmicroexercises/telemetrysystem/TelemetryDiagnosticControlsTest.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/target/test-classes/tddmicroexercises/telemetrysystem/TelemetryDiagnosticControlsTest.class new file mode 100644 index 0000000..c198620 Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TelemetrySystem/target/test-classes/tddmicroexercises/telemetrysystem/TelemetryDiagnosticControlsTest.class differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/.classpath b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/.classpath new file mode 100644 index 0000000..0a1dadd --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/.classpath @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/.project b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/.project new file mode 100644 index 0000000..0b69686 --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/.project @@ -0,0 +1,23 @@ + + + TextConverter + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/.settings/org.eclipse.jdt.core.prefs b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..abec6ca --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/.settings/org.eclipse.m2e.core.prefs b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/lib/commons-lang3-3.1.jar b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/lib/commons-lang3-3.1.jar new file mode 100644 index 0000000..a85e539 Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/lib/commons-lang3-3.1.jar differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/pom.xml b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/pom.xml new file mode 100755 index 0000000..611afb9 --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/pom.xml @@ -0,0 +1,20 @@ + + 4.0.0 + TextConverter + TextConverter + 0.0.1-SNAPSHOT + + + junit + junit + 4.9 + jar + test + + + org.apache.commons + commons-lang3 + 3.1 + + + \ No newline at end of file diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/src/main/java/tddmicroexercises/textconvertor/TextConverter.java b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/src/main/java/tddmicroexercises/textconvertor/TextConverter.java new file mode 100644 index 0000000..4ed8df1 --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/src/main/java/tddmicroexercises/textconvertor/TextConverter.java @@ -0,0 +1,25 @@ +package tddmicroexercises.textconvertor; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.Reader; + +import org.apache.commons.lang3.StringEscapeUtils; + +public class TextConverter { + + public static String convert(Reader source) throws IOException { + BufferedReader br = new BufferedReader(source); + + String line = br.readLine(); + StringBuilder html = new StringBuilder(); + while (line != null) + { + html.append(StringEscapeUtils.escapeHtml4(line)); + html.append("
"); + line = br.readLine(); + } + return html.toString(); + } + +} diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/src/main/java/tddmicroexercises/textconvertor/UnicodeFileToHtmlTextConverter.java b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/src/main/java/tddmicroexercises/textconvertor/UnicodeFileToHtmlTextConverter.java new file mode 100644 index 0000000..a18867d --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/src/main/java/tddmicroexercises/textconvertor/UnicodeFileToHtmlTextConverter.java @@ -0,0 +1,27 @@ +package tddmicroexercises.textconvertor; + +import java.io.FileReader; +import java.io.IOException; +import java.io.Reader; + +public class UnicodeFileToHtmlTextConverter +{ + private String fullFilenameWithPath; + + UnicodeFileToHtmlTextConverter() { + + } + + public UnicodeFileToHtmlTextConverter(String fullFilenameWithPath) + { + this.fullFilenameWithPath = fullFilenameWithPath; + } + + public String convertToHtml() throws IOException { + return TextConverter.convert(getReader()); + } + + Reader getReader() throws IOException { + return new FileReader(fullFilenameWithPath); + } +} diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/src/test/java/tddmicroexercises/textconvertor/UnicodeFileToHtmlTextConverterTest.java b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/src/test/java/tddmicroexercises/textconvertor/UnicodeFileToHtmlTextConverterTest.java new file mode 100644 index 0000000..bdf8fbd --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/src/test/java/tddmicroexercises/textconvertor/UnicodeFileToHtmlTextConverterTest.java @@ -0,0 +1,50 @@ +package tddmicroexercises.textconvertor; + +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; + +import junit.framework.Assert; + +import org.junit.Test; + +public class UnicodeFileToHtmlTextConverterTest { + + @Test public void + should_convert_empty_input() throws IOException { + UnicodeFileToHtmlTextConverter con = new TestableUnicodeFileToHtmlTextConverter(""); + Assert.assertEquals("", con.convertToHtml()); + } + + @Test public void + should_convert_non_empty_input() throws IOException { + UnicodeFileToHtmlTextConverter con = new TestableUnicodeFileToHtmlTextConverter(" "); + Assert.assertEquals("
", con.convertToHtml()); + } + + @Test public void + should_escape_when_converting() throws IOException { + UnicodeFileToHtmlTextConverter con = new TestableUnicodeFileToHtmlTextConverter("\"test\""); + Assert.assertEquals(""test"
", con.convertToHtml()); + } + + @Test public void + should_convert_multi_line_correctly() throws IOException { + UnicodeFileToHtmlTextConverter con = new TestableUnicodeFileToHtmlTextConverter("\n\n"); + Assert.assertEquals("

", con.convertToHtml()); + } + + static class TestableUnicodeFileToHtmlTextConverter extends UnicodeFileToHtmlTextConverter { + private String inp; + + public TestableUnicodeFileToHtmlTextConverter(String inp) { + this.inp = inp; + } + + @Override + protected Reader getReader() { + return new StringReader(inp); + } + } + +} diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/target/classes/tddmicroexercises/textconvertor/TextConverter.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/target/classes/tddmicroexercises/textconvertor/TextConverter.class new file mode 100644 index 0000000..d4e37ed Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/target/classes/tddmicroexercises/textconvertor/TextConverter.class differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/target/classes/tddmicroexercises/textconvertor/UnicodeFileToHtmlTextConverter.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/target/classes/tddmicroexercises/textconvertor/UnicodeFileToHtmlTextConverter.class new file mode 100644 index 0000000..6368b35 Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/target/classes/tddmicroexercises/textconvertor/UnicodeFileToHtmlTextConverter.class differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/target/surefire-reports/TEST-tddmicroexercises.textconvertor.UnicodeFileToHtmlTextConverterTest.xml b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/target/surefire-reports/TEST-tddmicroexercises.textconvertor.UnicodeFileToHtmlTextConverterTest.xml new file mode 100644 index 0000000..f4d647e --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/target/surefire-reports/TEST-tddmicroexercises.textconvertor.UnicodeFileToHtmlTextConverterTest.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/target/surefire-reports/tddmicroexercises.textconvertor.UnicodeFileToHtmlTextConverterTest.txt b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/target/surefire-reports/tddmicroexercises.textconvertor.UnicodeFileToHtmlTextConverterTest.txt new file mode 100644 index 0000000..bc2bcb5 --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/target/surefire-reports/tddmicroexercises.textconvertor.UnicodeFileToHtmlTextConverterTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: tddmicroexercises.textconvertor.UnicodeFileToHtmlTextConverterTest +------------------------------------------------------------------------------- +Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.039 sec diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/target/test-classes/tddmicroexercises/textconvertor/UnicodeFileToHtmlTextConverterTest$TestableUnicodeFileToHtmlTextConverter.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/target/test-classes/tddmicroexercises/textconvertor/UnicodeFileToHtmlTextConverterTest$TestableUnicodeFileToHtmlTextConverter.class new file mode 100644 index 0000000..d4f3ff4 Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/target/test-classes/tddmicroexercises/textconvertor/UnicodeFileToHtmlTextConverterTest$TestableUnicodeFileToHtmlTextConverter.class differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/target/test-classes/tddmicroexercises/textconvertor/UnicodeFileToHtmlTextConverterTest.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/target/test-classes/tddmicroexercises/textconvertor/UnicodeFileToHtmlTextConverterTest.class new file mode 100644 index 0000000..ccead6a Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TextConverter/target/test-classes/tddmicroexercises/textconvertor/UnicodeFileToHtmlTextConverterTest.class differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/.classpath b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/.classpath new file mode 100644 index 0000000..4af86cd --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/.classpath @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/.project b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/.project new file mode 100644 index 0000000..2ade439 --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/.project @@ -0,0 +1,23 @@ + + + TirePressureMonitoringSystem + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/.settings/org.eclipse.jdt.core.prefs b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..abec6ca --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/.settings/org.eclipse.m2e.core.prefs b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/pom.xml b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/pom.xml new file mode 100755 index 0000000..dd3eef5 --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/pom.xml @@ -0,0 +1,15 @@ + + 4.0.0 + TirePressureMonitoringSystem + TirePressureMonitoringSystem + 0.0.1-SNAPSHOT + + + junit + junit + 4.9 + jar + test + + + \ No newline at end of file diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/src/main/java/tddmicroexercises/tirepressuremonitoringsystem/Alarm.java b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/src/main/java/tddmicroexercises/tirepressuremonitoringsystem/Alarm.java new file mode 100644 index 0000000..318825d --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/src/main/java/tddmicroexercises/tirepressuremonitoringsystem/Alarm.java @@ -0,0 +1,33 @@ +package tddmicroexercises.tirepressuremonitoringsystem; + +public class Alarm +{ + public static final double LowPressureThreshold = 17; + public static final double HighPressureThreshold = 21; + + private ISensor sensor; + private Range validPressureRange; + + private boolean alarmOn = false; + + public Alarm(ISensor sensor, Range validPressureRange) { + this.sensor = sensor; + this.validPressureRange = validPressureRange; + } + + public void check() + { + double psiPressureValue = sensor.popNextPressurePsiValue(); + + if (!validPressureRange.inRange(psiPressureValue)) + { + alarmOn = true; + } + } + + public boolean isAlarmOn() + { + return alarmOn; + } + +} diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/src/main/java/tddmicroexercises/tirepressuremonitoringsystem/ISensor.java b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/src/main/java/tddmicroexercises/tirepressuremonitoringsystem/ISensor.java new file mode 100644 index 0000000..8725967 --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/src/main/java/tddmicroexercises/tirepressuremonitoringsystem/ISensor.java @@ -0,0 +1,7 @@ +package tddmicroexercises.tirepressuremonitoringsystem; + +public interface ISensor { + + double popNextPressurePsiValue(); + +} \ No newline at end of file diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/src/main/java/tddmicroexercises/tirepressuremonitoringsystem/Range.java b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/src/main/java/tddmicroexercises/tirepressuremonitoringsystem/Range.java new file mode 100644 index 0000000..47180f7 --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/src/main/java/tddmicroexercises/tirepressuremonitoringsystem/Range.java @@ -0,0 +1,19 @@ +package tddmicroexercises.tirepressuremonitoringsystem; + +public class Range { + + private double low, high; + + public Range(double low, double high) { + if (low > high) + throw new IllegalArgumentException(); + + this.low = low; + this.high = high; + } + + public boolean inRange(double val) { + return !(val < low || val > high); + } + +} diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/src/main/java/tddmicroexercises/tirepressuremonitoringsystem/Sensor.java b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/src/main/java/tddmicroexercises/tirepressuremonitoringsystem/Sensor.java new file mode 100644 index 0000000..61e9c66 --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/src/main/java/tddmicroexercises/tirepressuremonitoringsystem/Sensor.java @@ -0,0 +1,24 @@ +package tddmicroexercises.tirepressuremonitoringsystem; + +import java.util.Random; + +public class Sensor implements ISensor +{ + public static final double OFFSET = 16; + + public double popNextPressurePsiValue() + { + double pressureTelemetryValue; + pressureTelemetryValue = samplePressure( ); + + return OFFSET + pressureTelemetryValue; + } + + private static double samplePressure() + { + // placeholder implementation that simulate a real sensor in a real tire + Random basicRandomNumbersGenerator = new Random(42); + double pressureTelemetryValue = 6 * basicRandomNumbersGenerator.nextDouble() * basicRandomNumbersGenerator.nextDouble(); + return pressureTelemetryValue; + } +} diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/src/test/java/tddmicroexercises/tirepressuremonitoringsystem/AlarmTest.java b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/src/test/java/tddmicroexercises/tirepressuremonitoringsystem/AlarmTest.java new file mode 100644 index 0000000..60f008e --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/src/test/java/tddmicroexercises/tirepressuremonitoringsystem/AlarmTest.java @@ -0,0 +1,92 @@ +package tddmicroexercises.tirepressuremonitoringsystem; + +import junit.framework.Assert; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class AlarmTest { + + private Range validPressureRange; + private MockSensor high, low, okay; + + @Before public void + before() { + validPressureRange = new Range(Alarm.LowPressureThreshold, Alarm.HighPressureThreshold); + low = new MockSensor(16); + okay = new MockSensor(19); + high = new MockSensor(22); + } + + @After public void + after() { + validPressureRange = null; + high = low = okay = null; + } + + @Test public void + should_sense_pressure_sensor_once_on_check() { + Alarm al = new Alarm(okay, validPressureRange); + al.check(); + Assert.assertEquals(1, okay.timesSensed()); + } + + @Test public void + should_turn_alarm_on_when_pressure_low() { + Alarm al = new Alarm(low, validPressureRange); + al.check(); + Assert.assertTrue(al.isAlarmOn()); + } + + @Test public void + should_turn_alarm_on_when_pressure_high() { + Alarm al = new Alarm(high, validPressureRange); + al.check(); + Assert.assertTrue(al.isAlarmOn()); + } + + @Test public void + should_not_turn_alarm_on_when_pressure_normal() { + Alarm al = new Alarm(okay, validPressureRange); + al.check(); + Assert.assertFalse(al.isAlarmOn()); + } + + @Test public void + should_not_turn_alarm_off_once_alarm_on() { + MockSensor sen = new MockSensor(0); + Alarm al = new Alarm(sen, validPressureRange); + + al.check(); + sen.set(20); + al.check(); + + Assert.assertTrue(al.isAlarmOn()); + } + + static class MockSensor implements ISensor { + + private int sensed; + private double val; + + public MockSensor(double val) { + this.val = val; + } + + public void set(double val) { + this.val = val; + } + + public double popNextPressurePsiValue() { + sensed += 1; + return val; + } + + public int timesSensed() { + return sensed; + } + + } + +} diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/classes/tddmicroexercises/tirepressuremonitoringsystem/Alarm.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/classes/tddmicroexercises/tirepressuremonitoringsystem/Alarm.class new file mode 100644 index 0000000..a7ebb47 Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/classes/tddmicroexercises/tirepressuremonitoringsystem/Alarm.class differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/classes/tddmicroexercises/tirepressuremonitoringsystem/ISensor.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/classes/tddmicroexercises/tirepressuremonitoringsystem/ISensor.class new file mode 100644 index 0000000..3135090 Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/classes/tddmicroexercises/tirepressuremonitoringsystem/ISensor.class differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/classes/tddmicroexercises/tirepressuremonitoringsystem/Range.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/classes/tddmicroexercises/tirepressuremonitoringsystem/Range.class new file mode 100644 index 0000000..6f466bc Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/classes/tddmicroexercises/tirepressuremonitoringsystem/Range.class differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/classes/tddmicroexercises/tirepressuremonitoringsystem/Sensor.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/classes/tddmicroexercises/tirepressuremonitoringsystem/Sensor.class new file mode 100644 index 0000000..3485e2c Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/classes/tddmicroexercises/tirepressuremonitoringsystem/Sensor.class differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/surefire-reports/TEST-tddmicroexercises.tirepressuremonitoringsystem.AlarmTest.xml b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/surefire-reports/TEST-tddmicroexercises.tirepressuremonitoringsystem.AlarmTest.xml new file mode 100644 index 0000000..06ad2a0 --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/surefire-reports/TEST-tddmicroexercises.tirepressuremonitoringsystem.AlarmTest.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/surefire-reports/tddmicroexercises.tirepressuremonitoringsystem.AlarmTest.txt b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/surefire-reports/tddmicroexercises.tirepressuremonitoringsystem.AlarmTest.txt new file mode 100644 index 0000000..74e3323 --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/surefire-reports/tddmicroexercises.tirepressuremonitoringsystem.AlarmTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: tddmicroexercises.tirepressuremonitoringsystem.AlarmTest +------------------------------------------------------------------------------- +Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.029 sec diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/test-classes/tddmicroexercises/tirepressuremonitoringsystem/AlarmTest$MockSensor.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/test-classes/tddmicroexercises/tirepressuremonitoringsystem/AlarmTest$MockSensor.class new file mode 100644 index 0000000..6545cdb Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/test-classes/tddmicroexercises/tirepressuremonitoringsystem/AlarmTest$MockSensor.class differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/test-classes/tddmicroexercises/tirepressuremonitoringsystem/AlarmTest.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/test-classes/tddmicroexercises/tirepressuremonitoringsystem/AlarmTest.class new file mode 100644 index 0000000..d0a0bfc Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TirePressureMonitoringSystem/target/test-classes/tddmicroexercises/tirepressuremonitoringsystem/AlarmTest.class differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/.classpath b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/.classpath new file mode 100644 index 0000000..0a1dadd --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/.classpath @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/.project b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/.project new file mode 100644 index 0000000..6d442d1 --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/.project @@ -0,0 +1,23 @@ + + + TurnTicketDispenser + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/.settings/org.eclipse.jdt.core.prefs b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..abec6ca --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/.settings/org.eclipse.m2e.core.prefs b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/pom.xml b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/pom.xml new file mode 100644 index 0000000..df45ab5 --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/pom.xml @@ -0,0 +1,15 @@ + + 4.0.0 + TurnTicketDispenser + TurnTicketDispenser + 0.0.1-SNAPSHOT + + + junit + junit + 4.9 + jar + test + + + \ No newline at end of file diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/src/main/java/tddmicroexercises/turnticketdispenser/ITurnNumberSequence.java b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/src/main/java/tddmicroexercises/turnticketdispenser/ITurnNumberSequence.java new file mode 100644 index 0000000..a7cbdd6 --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/src/main/java/tddmicroexercises/turnticketdispenser/ITurnNumberSequence.java @@ -0,0 +1,7 @@ +package tddmicroexercises.turnticketdispenser; + +public interface ITurnNumberSequence { + + int getNextTurnNumber(); + +} diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/src/main/java/tddmicroexercises/turnticketdispenser/TicketDispenser.java b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/src/main/java/tddmicroexercises/turnticketdispenser/TicketDispenser.java new file mode 100644 index 0000000..1b659ce --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/src/main/java/tddmicroexercises/turnticketdispenser/TicketDispenser.java @@ -0,0 +1,34 @@ +package tddmicroexercises.turnticketdispenser; + +public class TicketDispenser +{ + + private ITurnNumberSequence seq; + + @Deprecated + public TicketDispenser() { + this.seq = new ITurnNumberSequence() { + + public int getNextTurnNumber() { + return TurnNumberSequence.getNextTurnNumber(); + } + + }; + } + + public TicketDispenser(ITurnNumberSequence seq) { + this.seq = seq; + } + + public TurnTicket getTurnTicket() + { + return _getTurnTicket(); + } + + private TurnTicket _getTurnTicket() { + int newTurnNumber = seq.getNextTurnNumber(); + TurnTicket newTurnTicket = new TurnTicket(newTurnNumber); + return newTurnTicket; + } + +} diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/src/main/java/tddmicroexercises/turnticketdispenser/TurnNumberSequence.java b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/src/main/java/tddmicroexercises/turnticketdispenser/TurnNumberSequence.java new file mode 100644 index 0000000..5a5f0fe --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/src/main/java/tddmicroexercises/turnticketdispenser/TurnNumberSequence.java @@ -0,0 +1,11 @@ +package tddmicroexercises.turnticketdispenser; + +public class TurnNumberSequence +{ + private static int _turnNumber = 0; + + public static int getNextTurnNumber() + { + return _turnNumber++; + } +} diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/src/main/java/tddmicroexercises/turnticketdispenser/TurnTicket.java b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/src/main/java/tddmicroexercises/turnticketdispenser/TurnTicket.java new file mode 100644 index 0000000..edd99ea --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/src/main/java/tddmicroexercises/turnticketdispenser/TurnTicket.java @@ -0,0 +1,17 @@ +package tddmicroexercises.turnticketdispenser; + +public class TurnTicket +{ + private final int turnNumber; + + public TurnTicket(int turnNumber) + { + this.turnNumber = turnNumber; + } + + public int getTurnNumber() + { + return turnNumber; + } + +} diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/src/test/java/tddmicroexercises/turnticketdispenser/TicketDispenserTest.java b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/src/test/java/tddmicroexercises/turnticketdispenser/TicketDispenserTest.java new file mode 100644 index 0000000..952531b --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/src/test/java/tddmicroexercises/turnticketdispenser/TicketDispenserTest.java @@ -0,0 +1,42 @@ +package tddmicroexercises.turnticketdispenser; + +import junit.framework.Assert; + +import org.junit.Test; + +public class TicketDispenserTest { + + @Test public void + should_generate_turn_ticket_with_current_number() { + ITurnNumberSequence seq = new MockTurnNumberSequence(0); + TicketDispenser td = new TicketDispenser(seq); + + Assert.assertEquals(0, td.getTurnTicket().getTurnNumber()); + Assert.assertEquals(1, td.getTurnTicket().getTurnNumber()); + } + + @Test public void + should_able_to_share_turn_number_sequence() { + ITurnNumberSequence seq = new MockTurnNumberSequence(0); + TicketDispenser td1 = new TicketDispenser(seq); + TicketDispenser td2 = new TicketDispenser(seq); + + Assert.assertEquals(0, td1.getTurnTicket().getTurnNumber()); + Assert.assertEquals(1, td2.getTurnTicket().getTurnNumber()); + } + + static class MockTurnNumberSequence implements ITurnNumberSequence { + + private int num; + + MockTurnNumberSequence(int num) { + this.num = num; + } + + public int getNextTurnNumber() { + return num++; + } + + } + +} diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/classes/tddmicroexercises/turnticketdispenser/ITurnNumberSequence.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/classes/tddmicroexercises/turnticketdispenser/ITurnNumberSequence.class new file mode 100644 index 0000000..d5d9b34 Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/classes/tddmicroexercises/turnticketdispenser/ITurnNumberSequence.class differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/classes/tddmicroexercises/turnticketdispenser/TicketDispenser$1.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/classes/tddmicroexercises/turnticketdispenser/TicketDispenser$1.class new file mode 100644 index 0000000..2e47100 Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/classes/tddmicroexercises/turnticketdispenser/TicketDispenser$1.class differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/classes/tddmicroexercises/turnticketdispenser/TicketDispenser.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/classes/tddmicroexercises/turnticketdispenser/TicketDispenser.class new file mode 100644 index 0000000..d4e2e77 Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/classes/tddmicroexercises/turnticketdispenser/TicketDispenser.class differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/classes/tddmicroexercises/turnticketdispenser/TurnNumberSequence.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/classes/tddmicroexercises/turnticketdispenser/TurnNumberSequence.class new file mode 100644 index 0000000..82a2625 Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/classes/tddmicroexercises/turnticketdispenser/TurnNumberSequence.class differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/classes/tddmicroexercises/turnticketdispenser/TurnTicket.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/classes/tddmicroexercises/turnticketdispenser/TurnTicket.class new file mode 100644 index 0000000..f3169f7 Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/classes/tddmicroexercises/turnticketdispenser/TurnTicket.class differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/surefire-reports/TEST-tddmicroexercises.turnticketdispenser.TicketDispenserTest.xml b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/surefire-reports/TEST-tddmicroexercises.turnticketdispenser.TicketDispenserTest.xml new file mode 100644 index 0000000..a5b1de2 --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/surefire-reports/TEST-tddmicroexercises.turnticketdispenser.TicketDispenserTest.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/surefire-reports/tddmicroexercises.turnticketdispenser.TicketDispenserTest.txt b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/surefire-reports/tddmicroexercises.turnticketdispenser.TicketDispenserTest.txt new file mode 100644 index 0000000..ef76e5e --- /dev/null +++ b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/surefire-reports/tddmicroexercises.turnticketdispenser.TicketDispenserTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: tddmicroexercises.turnticketdispenser.TicketDispenserTest +------------------------------------------------------------------------------- +Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.028 sec diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/test-classes/tddmicroexercises/turnticketdispenser/TicketDispenserTest$MockTurnNumberSequence.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/test-classes/tddmicroexercises/turnticketdispenser/TicketDispenserTest$MockTurnNumberSequence.class new file mode 100644 index 0000000..193e787 Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/test-classes/tddmicroexercises/turnticketdispenser/TicketDispenserTest$MockTurnNumberSequence.class differ diff --git a/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/test-classes/tddmicroexercises/turnticketdispenser/TicketDispenserTest.class b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/test-classes/tddmicroexercises/turnticketdispenser/TicketDispenserTest.class new file mode 100644 index 0000000..9fb4a19 Binary files /dev/null and b/TDDMicroExercises.YoursSolutions/Java-viswans/TurnTicketDispenser/target/test-classes/tddmicroexercises/turnticketdispenser/TicketDispenserTest.class differ