Author: koen.aers(a)jboss.com
Date: 2011-07-06 05:41:26 -0400 (Wed, 06 Jul 2011)
New Revision: 32639
Added:
trunk/forge/plugins/org.jboss.tools.forge.core/src/org/jboss/tools/forge/core/io/ForgeInputReadJob.java
trunk/forge/tests/org.jboss.tools.forge.core.test/src/org/jboss/tools/forge/core/io/
trunk/forge/tests/org.jboss.tools.forge.core.test/src/org/jboss/tools/forge/core/io/ForgeInputReadJobTest.java
Log:
implementation and test of ForgeInputReadJob
Added:
trunk/forge/plugins/org.jboss.tools.forge.core/src/org/jboss/tools/forge/core/io/ForgeInputReadJob.java
===================================================================
---
trunk/forge/plugins/org.jboss.tools.forge.core/src/org/jboss/tools/forge/core/io/ForgeInputReadJob.java
(rev 0)
+++
trunk/forge/plugins/org.jboss.tools.forge.core/src/org/jboss/tools/forge/core/io/ForgeInputReadJob.java 2011-07-06
09:41:26 UTC (rev 32639)
@@ -0,0 +1,36 @@
+package org.jboss.tools.forge.core.io;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.debug.core.model.IStreamsProxy;
+import org.jboss.tools.forge.core.ForgeCorePlugin;
+
+public class ForgeInputReadJob extends Job {
+
+ private IStreamsProxy streamsProxy;
+ private InputStream input;
+
+ public ForgeInputReadJob(IStreamsProxy streamsProxy, InputStream input) {
+ super("Forge Input Read Job");
+ this.input = input;
+ this.streamsProxy = streamsProxy;
+ }
+
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ int read;
+ while (input != null && (read = input.read()) != -1) {
+ streamsProxy.write(new String(new char[] { (char)read }));
+ }
+ } catch (IOException e) {
+ ForgeCorePlugin.log(e);
+ }
+ return Status.OK_STATUS;
+ }
+
+}
Added:
trunk/forge/tests/org.jboss.tools.forge.core.test/src/org/jboss/tools/forge/core/io/ForgeInputReadJobTest.java
===================================================================
---
trunk/forge/tests/org.jboss.tools.forge.core.test/src/org/jboss/tools/forge/core/io/ForgeInputReadJobTest.java
(rev 0)
+++
trunk/forge/tests/org.jboss.tools.forge.core.test/src/org/jboss/tools/forge/core/io/ForgeInputReadJobTest.java 2011-07-06
09:41:26 UTC (rev 32639)
@@ -0,0 +1,66 @@
+package org.jboss.tools.forge.core.io;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.eclipse.debug.core.model.IStreamMonitor;
+import org.eclipse.debug.core.model.IStreamsProxy;
+import org.junit.Before;
+import org.junit.Test;
+
+public class ForgeInputReadJobTest {
+
+ private int[] in;
+ private String out;
+
+ @Before
+ public void setUp() {
+ in = null;
+ out = "";
+ }
+
+ @Test
+ public void testNullInput() {
+ ForgeInputReadJob forgeInputReadJob = new ForgeInputReadJob(new TestStreamProxy(),
null);
+ forgeInputReadJob.schedule();
+ try {
+ forgeInputReadJob.join();
+ } catch (InterruptedException e) {}
+ assertEquals("", out);
+ }
+
+ @Test
+ public void testNormalInput() {
+ in = new int[] { 'b', 'l', 'a', 'h', -1 };
+ ForgeInputReadJob forgeInputReadJob = new ForgeInputReadJob(new TestStreamProxy(), new
TestInputStream());
+ forgeInputReadJob.schedule();
+ try {
+ forgeInputReadJob.join();
+ } catch (InterruptedException e) {}
+ assertEquals("blah", out);
+ }
+
+ private class TestStreamProxy implements IStreamsProxy {
+ public IStreamMonitor getErrorStreamMonitor() {
+ return null;
+ }
+ public IStreamMonitor getOutputStreamMonitor() {
+ return null;
+ }
+ public void write(String str) throws IOException {
+ out += str;
+ }
+ }
+
+ private class TestInputStream extends InputStream {
+ int index = 0;
+ public int read() throws IOException {
+ int result = in.length > index ? in[index] : -1;
+ index++;
+ return result;
+ }
+ }
+
+}
Show replies by date