diff --git a/java/javaoctave/src/META-INF/services/dk.ange.octave.io.spi.OctaveDataReader b/java/javaoctave/src/META-INF/services/dk.ange.octave.io.spi.OctaveDataReader index 15e2ae1..0643bec 100644 --- a/java/javaoctave/src/META-INF/services/dk.ange.octave.io.spi.OctaveDataReader +++ b/java/javaoctave/src/META-INF/services/dk.ange.octave.io.spi.OctaveDataReader @@ -1,5 +1,5 @@ dk.ange.octave.io.impl.CellReader dk.ange.octave.io.impl.MatrixReader -dk.ange.octave.io.impl.OctaveStringReader +dk.ange.octave.io.impl.DqStringReader dk.ange.octave.io.impl.ScalarReader dk.ange.octave.io.impl.StructReader diff --git a/java/javaoctave/src/META-INF/services/dk.ange.octave.io.spi.OctaveDataWriter b/java/javaoctave/src/META-INF/services/dk.ange.octave.io.spi.OctaveDataWriter index cc4ea56..11af1ac 100644 --- a/java/javaoctave/src/META-INF/services/dk.ange.octave.io.spi.OctaveDataWriter +++ b/java/javaoctave/src/META-INF/services/dk.ange.octave.io.spi.OctaveDataWriter @@ -1,5 +1,6 @@ dk.ange.octave.io.impl.CellWriter dk.ange.octave.io.impl.MatrixWriter -dk.ange.octave.io.impl.OctaveStringWriter +dk.ange.octave.io.impl.DeprecatedStringWriter +dk.ange.octave.io.impl.DqStringWriter dk.ange.octave.io.impl.ScalarWriter dk.ange.octave.io.impl.StructWriter diff --git a/java/javaoctave/src/dk/ange/octave/exec/OctaveExec.java b/java/javaoctave/src/dk/ange/octave/exec/OctaveExec.java index f504f58..10038a0 100644 --- a/java/javaoctave/src/dk/ange/octave/exec/OctaveExec.java +++ b/java/javaoctave/src/dk/ange/octave/exec/OctaveExec.java @@ -25,6 +25,7 @@ import java.io.OutputStreamWriter; import java.io.Writer; import java.util.Random; +import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -65,20 +66,20 @@ public final class OctaveExec { * Will start the octave process. * * @param stdinLog - * This writer will capture all that is written to the octave process via stdin, if null the data - * will not be captured. + * This writer will capture all that is written to the octave process via stdin, if null the data will + * not be captured. * @param stderrLog - * This writer will capture all that is written from the octave process on stderr, if null the data - * will not be captured. + * This writer will capture all that is written from the octave process on stderr, if null the data will + * not be captured. * @param octaveProgram - * This is the path to the octave program, if it is null the program 'octave' will be assumed to be - * in the PATH. + * This is the path to the octave program, if it is null the program 'octave' will be assumed to be in + * the PATH. * @param environment - * The environment for the octave process, if null the process will inherit the environment for the - * virtual mashine. + * The environment for the octave process, if null the process will inherit the environment for the + * virtual mashine. * @param workingDir - * This will be the working dir for the octave process, if null the process will inherit the working - * dir of the current process. + * This will be the working dir for the octave process, if null the process will inherit the working dir + * of the current process. */ public OctaveExec(final Writer stdinLog, final Writer stderrLog, final File octaveProgram, final String[] environment, final File workingDir) { @@ -123,18 +124,31 @@ public void eval(final WriteFunctor input, final ReadFunctor output) { final Future writerFuture = executor.submit(new OctaveWriterCallable(processWriter, input, spacer)); final Future readerFuture = executor.submit(new OctaveReaderCallable(processReader, output, spacer)); final RuntimeException writerException = getFromFuture(writerFuture); + if (writerException instanceof CancellationException) { + log.error("Did not expect writer to be canceled", writerException); + } + if (writerException != null) { + if (writerException instanceof CancellationException) { + log.error("Did not expect writer to be canceled", writerException); + } + readerFuture.cancel(true); + } final RuntimeException readerException = getFromFuture(readerFuture); if (writerException != null) { throw writerException; } if (readerException != null) { + // Only gets here when writerException==null, and in that case we don't expect the reader to be canceled + if (readerException instanceof CancellationException) { + log.error("Did not expect reader to be canceled", writerException); + } throw readerException; } } - private RuntimeException getFromFuture(final Future writerFuture) { + private RuntimeException getFromFuture(final Future future) { try { - writerFuture.get(); + future.get(); } catch (final InterruptedException e) { final String message = "InterruptedException should not happen"; log.error(message, e); @@ -147,6 +161,8 @@ private RuntimeException getFromFuture(final Future writerFuture) { final String message = "ExecutionException should not happen"; log.error(message, e); return new RuntimeException(message, e); + } catch (final CancellationException e) { + return e; } catch (final RuntimeException e) { final String message = "RuntimeException should not happen"; log.error(message, e); @@ -219,7 +235,7 @@ public void close() { /** * @param writer - * the new writer to write the error output to + * the new writer to write the error output to */ public void setErrorWriter(final Writer writer) { errorStreamThread.setWriter(writer); diff --git a/java/javaoctave/src/dk/ange/octave/io/impl/DeprecatedStringWriter.java b/java/javaoctave/src/dk/ange/octave/io/impl/DeprecatedStringWriter.java new file mode 100644 index 0000000..5802fff --- /dev/null +++ b/java/javaoctave/src/dk/ange/octave/io/impl/DeprecatedStringWriter.java @@ -0,0 +1,17 @@ +package dk.ange.octave.io.impl; + +import dk.ange.octave.type.OctaveString; +import dk.ange.octave.type.OctaveType; + +/** + * Write the old OctaveString + */ +@Deprecated +public class DeprecatedStringWriter extends DqStringWriter { + + @Override + public Class javaType() { + return OctaveString.class; + } + +} diff --git a/java/javaoctave/src/dk/ange/octave/io/impl/OctaveStringReader.java b/java/javaoctave/src/dk/ange/octave/io/impl/DqStringReader.java similarity index 83% rename from java/javaoctave/src/dk/ange/octave/io/impl/OctaveStringReader.java rename to java/javaoctave/src/dk/ange/octave/io/impl/DqStringReader.java index 94fdc65..2844852 100644 --- a/java/javaoctave/src/dk/ange/octave/io/impl/OctaveStringReader.java +++ b/java/javaoctave/src/dk/ange/octave/io/impl/DqStringReader.java @@ -1,5 +1,5 @@ /* - * Copyright 2008 Ange Optimization ApS + * Copyright 2008, 2009 Ange Optimization ApS * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,12 +23,15 @@ import dk.ange.octave.exception.OctaveParseException; import dk.ange.octave.io.OctaveIO; import dk.ange.octave.io.spi.OctaveDataReader; +import dk.ange.octave.type.OctaveDqString; import dk.ange.octave.type.OctaveString; /** * The reader of string */ -public final class OctaveStringReader extends OctaveDataReader { +// FIXME Change OctaveString to OctaveDqString +@SuppressWarnings("deprecation") +public final class DqStringReader extends OctaveDataReader { @Override public String octaveType() { @@ -36,7 +39,7 @@ public String octaveType() { } @Override - public OctaveString read(final BufferedReader reader) { + public OctaveDqString read(final BufferedReader reader) { String line; line = OctaveIO.readerReadLine(reader); if (!line.equals("# elements: 1")) { diff --git a/java/javaoctave/src/dk/ange/octave/io/impl/OctaveStringWriter.java b/java/javaoctave/src/dk/ange/octave/io/impl/DqStringWriter.java similarity index 81% rename from java/javaoctave/src/dk/ange/octave/io/impl/OctaveStringWriter.java rename to java/javaoctave/src/dk/ange/octave/io/impl/DqStringWriter.java index 1506398..5bfa4b7 100644 --- a/java/javaoctave/src/dk/ange/octave/io/impl/OctaveStringWriter.java +++ b/java/javaoctave/src/dk/ange/octave/io/impl/DqStringWriter.java @@ -1,5 +1,5 @@ /* - * Copyright 2008 Ange Optimization ApS + * Copyright 2008, 2009 Ange Optimization ApS * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,22 +22,22 @@ import java.io.Writer; import dk.ange.octave.io.spi.OctaveDataWriter; -import dk.ange.octave.type.OctaveString; +import dk.ange.octave.type.OctaveDqString; import dk.ange.octave.type.OctaveType; /** - * The writer of OctaveString + * The writer of OctaveDqString */ -public final class OctaveStringWriter extends OctaveDataWriter { +public class DqStringWriter extends OctaveDataWriter { @Override public Class javaType() { - return OctaveString.class; + return OctaveDqString.class; } @Override public void write(final Writer writer, final OctaveType octaveType) throws IOException { - final OctaveString octaveString = (OctaveString) octaveType; + final OctaveDqString octaveString = (OctaveDqString) octaveType; final String string = octaveString.getString(); writer.write("" // + "# type: string\n" // diff --git a/java/javaoctave/src/dk/ange/octave/type/OctaveCell.java b/java/javaoctave/src/dk/ange/octave/type/OctaveCell.java index 087c9d7..b8e8bad 100644 --- a/java/javaoctave/src/dk/ange/octave/type/OctaveCell.java +++ b/java/javaoctave/src/dk/ange/octave/type/OctaveCell.java @@ -169,4 +169,10 @@ public int hashCode() { throw new UnsupportedOperationException("Not implemented"); } + // Workaround the Unsupported hashCode + @Override + public String toString() { + return getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(this)); + } + } diff --git a/java/javaoctave/src/dk/ange/octave/type/OctaveDqString.java b/java/javaoctave/src/dk/ange/octave/type/OctaveDqString.java new file mode 100644 index 0000000..93bde4c --- /dev/null +++ b/java/javaoctave/src/dk/ange/octave/type/OctaveDqString.java @@ -0,0 +1,95 @@ +/* + * Copyright 2007, 2008, 2009 Ange Optimization ApS + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package dk.ange.octave.type; + +/** + * The double quoted string in Octave. + * + * http://www.octave.org/mailing-lists/octave-maintainers/2005/258 + * http://www.octave.org/octave-lists/archive/octave-maintainers.2005/msg00280.html + * http://osdir.com/ml/gnu.octave.maintainers/2005-04/msg00005.html + */ +public class OctaveDqString extends OctaveType { + + private static final long serialVersionUID = 7228885699924118810L; + + /** + * The String + */ + protected String value; + + /** + * @param string + */ + public OctaveDqString(final String string) { + this.value = string; + } + + /** + * @return the string + */ + public String getString() { + return value; + } + + /** + * @param string + * the string to set + */ + public void setString(final String string) { + this.value = string; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((value == null) ? 0 : value.hashCode()); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + if (obj instanceof OctaveDqString) { + final OctaveDqString other = (OctaveDqString) obj; + return other.equals(obj); + } + return false; + } + final OctaveDqString other = (OctaveDqString) obj; + if (value == null) { + if (other.value != null) { + return false; + } + } else if (!value.equals(other.value)) { + return false; + } + return true; + } + + @Override + public OctaveDqString makecopy() { + return new OctaveDqString(value); + } + +} diff --git a/java/javaoctave/src/dk/ange/octave/type/OctaveString.java b/java/javaoctave/src/dk/ange/octave/type/OctaveString.java index aea99fb..61cd548 100644 --- a/java/javaoctave/src/dk/ange/octave/type/OctaveString.java +++ b/java/javaoctave/src/dk/ange/octave/type/OctaveString.java @@ -1,61 +1,16 @@ -/* - * Copyright 2007, 2008 Ange Optimization ApS - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @author kim - */ package dk.ange.octave.type; /** - * http://www.octave.org/mailing-lists/octave-maintainers/2005/258 - * http://www.octave.org/octave-lists/archive/octave-maintainers.2005/msg00280.html + * @deprecated Use OctaveDqString, will be gone in 0.4 */ -public class OctaveString extends OctaveType { - - private static final long serialVersionUID = 7228885699924118810L; - - private String value; - - /** - * @param string - */ - public OctaveString(final String string) { - this.value = string; - } - - /** - * @return the string - */ - public String getString() { - return value; - } +@Deprecated +public class OctaveString extends OctaveDqString { /** * @param string - * the string to set */ - public void setString(final String string) { - this.value = string; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((value == null) ? 0 : value.hashCode()); - return result; + public OctaveString(String string) { + super(string); } @Override @@ -66,6 +21,17 @@ public boolean equals(final Object obj) { if (obj == null) { return false; } + if (OctaveDqString.class != obj.getClass()) { + final OctaveDqString other = (OctaveDqString) obj; + if (value == null) { + if (other.value != null) { + return false; + } + } else if (!value.equals(other.value)) { + return false; + } + return true; + } if (getClass() != obj.getClass()) { return false; } @@ -80,9 +46,4 @@ public boolean equals(final Object obj) { return true; } - @Override - public OctaveString makecopy() { - return new OctaveString(value); - } - } diff --git a/java/javaoctave/test/dk/ange/octave/io/impl/TestOctaveString.java b/java/javaoctave/test/dk/ange/octave/io/impl/TestDeprecatedOctaveString.java similarity index 88% rename from java/javaoctave/test/dk/ange/octave/io/impl/TestOctaveString.java rename to java/javaoctave/test/dk/ange/octave/io/impl/TestDeprecatedOctaveString.java index d85e533..a0d7277 100644 --- a/java/javaoctave/test/dk/ange/octave/io/impl/TestOctaveString.java +++ b/java/javaoctave/test/dk/ange/octave/io/impl/TestDeprecatedOctaveString.java @@ -1,5 +1,5 @@ /* - * Copyright 2007, 2008 Ange Optimization ApS + * Copyright 2007, 2008, 2009 Ange Optimization ApS * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,28 +24,26 @@ import dk.ange.octave.type.OctaveType; /** - * @author Kim Hansen + * Test the @deprecated OctaveString */ -public class TestOctaveString extends TestCase { +@Deprecated +public class TestDeprecatedOctaveString extends TestCase { - /** - */ + /** Test */ public void testToString() { final OctaveType string = new OctaveString("tekst"); Assert.assertEquals("# name: ans\n# type: string\n# elements: 1\n# length: 5\ntekst\n\n", OctaveIO .toText(string)); } - /** - */ + /** Test */ public void testToOctave() { final OctaveType string = new OctaveString("mytekst"); Assert.assertEquals("# name: tre\n# type: string\n# elements: 1\n# length: 7\nmytekst\n\n", OctaveIO.toText( string, "tre")); } - /** - */ + /** Test */ public void testOctaveConnection() { final OctaveType s1 = new OctaveString("tekst"); final OctaveEngine octave = new OctaveEngineFactory().getScriptEngine(); diff --git a/java/javaoctave/test/dk/ange/octave/io/impl/TestOctaveCell.java b/java/javaoctave/test/dk/ange/octave/io/impl/TestOctaveCell.java index 07332f1..a6e7598 100644 --- a/java/javaoctave/test/dk/ange/octave/io/impl/TestOctaveCell.java +++ b/java/javaoctave/test/dk/ange/octave/io/impl/TestOctaveCell.java @@ -23,7 +23,7 @@ import dk.ange.octave.type.OctaveCell; import dk.ange.octave.type.OctaveNdMatrix; import dk.ange.octave.type.OctaveScalar; -import dk.ange.octave.type.OctaveString; +import dk.ange.octave.type.OctaveDqString; /** * @author Kim Hansen @@ -102,7 +102,7 @@ public void testOctaveConnection() throws Exception { final OctaveCell cell = new OctaveCell(); cell.set(1, 1, new OctaveScalar(42)); final OctaveCell cell2 = new OctaveCell(); - cell2.set(1, 1, new OctaveString("mystring")); + cell2.set(1, 1, new OctaveDqString("mystring")); cell.set(3, 2, cell2); final OctaveEngine octave = new OctaveEngineFactory().getScriptEngine(); diff --git a/java/javaoctave/test/dk/ange/octave/io/impl/TestOctaveDqString.java b/java/javaoctave/test/dk/ange/octave/io/impl/TestOctaveDqString.java new file mode 100644 index 0000000..b102b83 --- /dev/null +++ b/java/javaoctave/test/dk/ange/octave/io/impl/TestOctaveDqString.java @@ -0,0 +1,54 @@ +/* + * Copyright 2007, 2008, 2009 Ange Optimization ApS + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package dk.ange.octave.io.impl; + +import junit.framework.Assert; +import junit.framework.TestCase; +import dk.ange.octave.OctaveEngine; +import dk.ange.octave.OctaveEngineFactory; +import dk.ange.octave.io.OctaveIO; +import dk.ange.octave.type.OctaveDqString; +import dk.ange.octave.type.OctaveType; + +/** + * Test read and write of OctaveDqString + */ +public class TestOctaveDqString extends TestCase { + + /** Test */ + public void testToString() { + final OctaveType string = new OctaveDqString("tekst"); + Assert.assertEquals("# name: ans\n# type: string\n# elements: 1\n# length: 5\ntekst\n\n", OctaveIO + .toText(string)); + } + + /** Test */ + public void testToOctave() { + final OctaveType string = new OctaveDqString("mytekst"); + Assert.assertEquals("# name: tre\n# type: string\n# elements: 1\n# length: 7\nmytekst\n\n", OctaveIO.toText( + string, "tre")); + } + + /** Test */ + public void testOctaveConnection() { + final OctaveType s1 = new OctaveDqString("tekst"); + final OctaveEngine octave = new OctaveEngineFactory().getScriptEngine(); + octave.put("st", s1); + final OctaveDqString s2 = octave.get("st"); + Assert.assertEquals(s1, s2); + } + +} diff --git a/java/javaoctave/test/dk/ange/octave/io/impl/TestOctaveStruct.java b/java/javaoctave/test/dk/ange/octave/io/impl/TestOctaveStruct.java index 9b51eac..53dcc63 100644 --- a/java/javaoctave/test/dk/ange/octave/io/impl/TestOctaveStruct.java +++ b/java/javaoctave/test/dk/ange/octave/io/impl/TestOctaveStruct.java @@ -22,7 +22,7 @@ import dk.ange.octave.io.OctaveIO; import dk.ange.octave.type.OctaveCell; import dk.ange.octave.type.OctaveScalar; -import dk.ange.octave.type.OctaveString; +import dk.ange.octave.type.OctaveDqString; import dk.ange.octave.type.OctaveStruct; import dk.ange.octave.type.OctaveType; @@ -83,7 +83,7 @@ public void testOctaveConnection() { final OctaveStruct struct = new OctaveStruct(); struct.set("scalar", new OctaveScalar(42)); final OctaveStruct nested_struct = new OctaveStruct(); - nested_struct.set("string", new OctaveString("a cheese called Horace")); + nested_struct.set("string", new OctaveDqString("a cheese called Horace")); struct.set("mynestedstruct", nested_struct); final OctaveEngine octave = new OctaveEngineFactory().getScriptEngine(); diff --git a/java/javaoctave/test/dk/ange/octave/type/TestDeprecatedOctaveString.java b/java/javaoctave/test/dk/ange/octave/type/TestDeprecatedOctaveString.java new file mode 100644 index 0000000..12d8cd0 --- /dev/null +++ b/java/javaoctave/test/dk/ange/octave/type/TestDeprecatedOctaveString.java @@ -0,0 +1,71 @@ +/* + * Copyright 2007, 2008, 2009 Ange Optimization ApS + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package dk.ange.octave.type; + +import junit.framework.TestCase; + +/** + * Test the @deprecated OctaveString + */ +@Deprecated +public class TestDeprecatedOctaveString extends TestCase { + + /** Test */ + public void testValues() { + final OctaveString s1a = new OctaveString("1"); + final OctaveString s1b = new OctaveString("1"); + final OctaveString s1c = new OctaveString("0"); + s1c.setString("1"); + + assertEquals(s1a, s1b); + assertEquals(s1a, s1c); + assertEquals(s1b, s1c); + assertNotSame(s1a, s1b); + assertNotSame(s1a, s1c); + assertNotSame(s1b, s1c); + + final OctaveString s0 = new OctaveString("0"); + final OctaveString s2 = new OctaveString("2"); + + assertFalse(s1a.equals(s0)); + assertFalse(s1a.equals(s2)); + } + + /** Test */ + public void testCrossClassEquals() { + final OctaveString s0 = new OctaveString("0"); + final OctaveDqString d0 = new OctaveString("0"); + final OctaveDqString d1 = new OctaveString("1"); + + assertEquals(s0, d0); + assertEquals(d0, s0); + assertFalse(s0.equals(d1)); + assertFalse(d1.equals(s0)); + } + + /** Test */ + public void testCrossClassHashcode() { + final OctaveString s0 = new OctaveString("0"); + final OctaveDqString d0 = new OctaveString("0"); + final OctaveDqString d1 = new OctaveString("1"); + + assertEquals(s0.hashCode(), d0.hashCode()); + assertEquals(d0.hashCode(), s0.hashCode()); + assertFalse(s0.hashCode() == d1.hashCode()); + assertFalse(d1.hashCode() == s0.hashCode()); + } + +} diff --git a/java/javaoctave/test/dk/ange/octave/type/TestOctaveString.java b/java/javaoctave/test/dk/ange/octave/type/TestOctaveDqString.java similarity index 68% rename from java/javaoctave/test/dk/ange/octave/type/TestOctaveString.java rename to java/javaoctave/test/dk/ange/octave/type/TestOctaveDqString.java index f5ea6e6..ca38565 100644 --- a/java/javaoctave/test/dk/ange/octave/type/TestOctaveString.java +++ b/java/javaoctave/test/dk/ange/octave/type/TestOctaveDqString.java @@ -1,5 +1,5 @@ /* - * Copyright 2007, 2008 Ange Optimization ApS + * Copyright 2007, 2008, 2009 Ange Optimization ApS * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,16 +18,15 @@ import junit.framework.TestCase; /** - * @author Kim Hansen + * Test OctaveDqString */ -public class TestOctaveString extends TestCase { - /** - * Test - */ +public class TestOctaveDqString extends TestCase { + + /** Test */ public void testValues() { - final OctaveString s1a = new OctaveString("1"); - final OctaveString s1b = new OctaveString("1"); - final OctaveString s1c = new OctaveString("0"); + final OctaveDqString s1a = new OctaveDqString("1"); + final OctaveDqString s1b = new OctaveDqString("1"); + final OctaveDqString s1c = new OctaveDqString("0"); s1c.setString("1"); assertEquals(s1a, s1b); @@ -37,8 +36,8 @@ public void testValues() { assertNotSame(s1a, s1c); assertNotSame(s1b, s1c); - final OctaveString s0 = new OctaveString("0"); - final OctaveString s2 = new OctaveString("2"); + final OctaveDqString s0 = new OctaveDqString("0"); + final OctaveDqString s2 = new OctaveDqString("2"); assertFalse(s1a.equals(s0)); assertFalse(s1a.equals(s2));