aboutsummaryrefslogtreecommitdiffstats
path: root/tests/com/jsyn/ports
diff options
context:
space:
mode:
Diffstat (limited to 'tests/com/jsyn/ports')
-rw-r--r--tests/com/jsyn/ports/TestQueuedDataPort.java525
-rw-r--r--tests/com/jsyn/ports/TestSequentialData.java50
-rw-r--r--tests/com/jsyn/ports/TestSet.java96
3 files changed, 0 insertions, 671 deletions
diff --git a/tests/com/jsyn/ports/TestQueuedDataPort.java b/tests/com/jsyn/ports/TestQueuedDataPort.java
deleted file mode 100644
index e229038..0000000
--- a/tests/com/jsyn/ports/TestQueuedDataPort.java
+++ /dev/null
@@ -1,525 +0,0 @@
-/*
- * Copyright 2009 Phil Burk, Mobileer Inc
- *
- * 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 com.jsyn.ports;
-
-import junit.framework.TestCase;
-
-import com.jsyn.JSyn;
-import com.jsyn.Synthesizer;
-import com.jsyn.data.FloatSample;
-import com.jsyn.data.SequentialData;
-import com.jsyn.data.ShortSample;
-import com.jsyn.unitgen.FixedRateMonoReader;
-
-/**
- * Test sample and envelope queuing and looping.
- *
- * @author Phil Burk, (C) 2009 Mobileer Inc
- */
-public class TestQueuedDataPort extends TestCase {
- Synthesizer synth;
- float[] floatData = {
- 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f
- };
- FloatSample floatSample;
- FixedRateMonoReader reader;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- synth = JSyn.createSynthesizer();
- synth.setRealTime(false);
- synth.start();
- }
-
- @Override
- protected void tearDown() throws Exception {
- synth.stop();
- super.tearDown();
- }
-
- private void queueDirect(UnitDataQueuePort port, SequentialData data, int startFrame,
- int numFrames) {
- queueDirect(port, data, startFrame, numFrames, 0);
- }
-
- private void queueDirect(UnitDataQueuePort port, SequentialData data, int startFrame,
- int numFrames, int numLoops) {
- QueueDataCommand command = port.createQueueDataCommand(data, startFrame, numFrames);
- command.setNumLoops(numLoops);
- port.addQueuedBlock(command);
- }
-
- public void testQueueSingleShort() {
- short[] data = {
- 234, -9876, 4567
- };
- ShortSample sample = new ShortSample(data.length, 1);
- sample.write(data);
-
- UnitDataQueuePort dataQueue = new UnitDataQueuePort("test");
- assertEquals("start empty", false, dataQueue.hasMore());
-
- queueDirect(dataQueue, sample, 0, data.length);
- checkQueuedData(data, dataQueue, 0, data.length);
-
- assertEquals("end empty", false, dataQueue.hasMore());
- }
-
- public void testQueueSingleFloat() {
- float[] data = {
- 0.4f, 1.9f, 22.7f
- };
- FloatSample sample = new FloatSample(data.length, 1);
- sample.write(data);
-
- UnitDataQueuePort dataQueue = new UnitDataQueuePort("test");
- assertEquals("start empty", false, dataQueue.hasMore());
-
- queueDirect(dataQueue, sample, 0, data.length);
- checkQueuedData(data, dataQueue, 0, data.length);
-
- assertEquals("end empty", false, dataQueue.hasMore());
- }
-
- public void testQueueOutOfBounds() {
- float[] data = {
- 0.4f, 1.9f, 22.7f
- };
- FloatSample sample = new FloatSample(data.length, 1);
- sample.write(data);
-
- UnitDataQueuePort dataQueue = new UnitDataQueuePort("test");
- boolean caught = false;
- try {
- queueDirect(dataQueue, sample, 0, sample.getNumFrames() + 1); // should cause an error!
- } catch(IllegalArgumentException e) {
- caught = true;
- }
- assertTrue("expect exception when we go past end of the array", caught);
-
- caught = false;
- try {
- queueDirect(dataQueue, sample, 1, sample.getNumFrames()); // should cause an error!
- } catch(IllegalArgumentException e) {
- caught = true;
- }
- assertTrue("expect exception when we go past end of the array", caught);
-
- caught = false;
- try {
- queueDirect(dataQueue, sample, -1, sample.getNumFrames()); // should cause an error!
- } catch(IllegalArgumentException e) {
- caught = true;
- }
- assertTrue("expect exception when we start before beginning of the array", caught);
- }
-
- public void testQueueMultiple() {
- short[] data = {
- 234, 17777, -9876, 4567, -14287
- };
- ShortSample sample = new ShortSample(data.length, 1);
- sample.write(data);
-
- UnitDataQueuePort dataQueue = new UnitDataQueuePort("test");
- assertEquals("start empty", false, dataQueue.hasMore());
-
- queueDirect(dataQueue, sample, 1, 3);
- queueDirect(dataQueue, sample, 0, 5);
- queueDirect(dataQueue, sample, 2, 2);
-
- checkQueuedData(data, dataQueue, 1, 3);
- checkQueuedData(data, dataQueue, 0, 5);
- checkQueuedData(data, dataQueue, 2, 2);
-
- assertEquals("end empty", false, dataQueue.hasMore());
- }
-
- public void testQueueNoLoops() throws InterruptedException {
- System.out.println("testQueueNoLoops() ================");
- UnitDataQueuePort dataQueue = setupFloatSample();
-
- dataQueue.queueOn(floatSample, synth.createTimeStamp());
- // Advance synth so that the queue command propagates to the engine.
- synth.sleepUntil(synth.getCurrentTime() + 0.01);
-
- // play entire sample
- checkQueuedData(floatData, dataQueue, 0, floatData.length);
-
- assertEquals("end empty", false, dataQueue.hasMore());
- }
-
- public void testQueueLoopForever() throws InterruptedException {
- System.out.println("testQueueLoopForever() ================");
-
- UnitDataQueuePort dataQueue = setupFloatSample();
-
- dataQueue.queue(floatSample, 0, 3);
- dataQueue.queueLoop(floatSample, 3, 4);
-
- // Advance synth so that the queue commands propagate to the engine.
- synth.sleepUntil(synth.getCurrentTime() + 0.01);
-
- checkQueuedData(floatData, dataQueue, 0, 3);
- checkQueuedData(floatData, dataQueue, 3, 4);
- checkQueuedData(floatData, dataQueue, 3, 4);
- checkQueuedData(floatData, dataQueue, 3, 4);
- checkQueuedData(floatData, dataQueue, 3, 1);
-
- // queue final release
- dataQueue.queue(floatSample, 3, 5);
- synth.sleepUntil(synth.getCurrentTime() + 0.01);
- // current loop will finish
- checkQueuedData(floatData, dataQueue, 4, 3);
- // release portion will play
- checkQueuedData(floatData, dataQueue, 3, 5);
-
- assertEquals("end empty", false, dataQueue.hasMore());
- }
-
- public void testQueueLoopAtLeastOnce() throws InterruptedException {
- System.out.println("testQueueLoopAtLeastOnce() ================");
-
- UnitDataQueuePort dataQueue = setupFloatSample();
-
- dataQueue.queue(floatSample, 0, 3);
- dataQueue.queueLoop(floatSample, 3, 2); // this should play at least once
- dataQueue.queue(floatSample, 5, 2);
-
- // Advance synth so that the queue commands propagate to the engine.
- synth.sleepUntil(synth.getCurrentTime() + 0.01);
-
- checkQueuedData(floatData, dataQueue, 0, 3);
- checkQueuedData(floatData, dataQueue, 3, 2);
- checkQueuedData(floatData, dataQueue, 5, 2);
-
- assertEquals("end empty", false, dataQueue.hasMore());
- }
-
- public void testQueueNumLoops() throws InterruptedException {
- System.out.println("testQueueNumLoops() ================");
- UnitDataQueuePort dataQueue = setupFloatSample();
-
- dataQueue.queue(floatSample, 0, 2);
-
- int numLoopsA = 5;
- dataQueue.queueLoop(floatSample, 2, 3, numLoopsA);
-
- dataQueue.queue(floatSample, 4, 2);
-
- int numLoopsB = 3;
- dataQueue.queueLoop(floatSample, 3, 4, numLoopsB);
-
- dataQueue.queue(floatSample, 5, 2);
-
- // Advance synth so that the queue commands propagate to the engine.
- synth.sleepUntil(synth.getCurrentTime() + 0.01);
-
- checkQueuedData(floatData, dataQueue, 0, 2);
- for (int i = 0; i < (numLoopsA + 1); i++) {
- System.out.println("loop A #" + i);
- checkQueuedData(floatData, dataQueue, 2, 3);
- }
- checkQueuedData(floatData, dataQueue, 4, 2);
- for (int i = 0; i < (numLoopsB + 1); i++) {
- System.out.println("loop B #" + i);
- checkQueuedData(floatData, dataQueue, 3, 4);
- }
-
- checkQueuedData(floatData, dataQueue, 5, 2);
-
- assertEquals("end empty", false, dataQueue.hasMore());
- }
-
- private UnitDataQueuePort setupFloatSample() {
- floatSample = new FloatSample(floatData.length, 1);
- floatSample.write(floatData);
-
- synth.add(reader = new FixedRateMonoReader());
- UnitDataQueuePort dataQueue = reader.dataQueue;
- assertEquals("start empty", false, dataQueue.hasMore());
- return dataQueue;
- }
-
- public void testQueueSustainLoop() throws InterruptedException {
- System.out.println("testQueueSustainLoop() ================");
-
- UnitDataQueuePort dataQueue = setupFloatSample();
-
- // set up sustain loops ===========================
- floatSample.setSustainBegin(2);
- floatSample.setSustainEnd(4);
- floatSample.setReleaseBegin(-1);
- floatSample.setReleaseEnd(-1);
-
- dataQueue.queueOn(floatSample, synth.createTimeStamp());
- // Advance synth so that the queue command propagates to the engine.
- synth.sleepUntil(synth.getCurrentTime() + 0.01);
-
- checkQueuedData(floatData, dataQueue, 0, 2);
- checkQueuedData(floatData, dataQueue, 2, 2);
- checkQueuedData(floatData, dataQueue, 2, 2);
- checkQueuedData(floatData, dataQueue, 2, 1); // looping
-
- dataQueue.queueOff(floatSample, true); // queue off in middle of loop
- synth.sleepUntil(synth.getCurrentTime() + 0.01);
-
- checkQueuedData(floatData, dataQueue, 3, 5); // release
- assertEquals("end empty", false, dataQueue.hasMore());
- }
-
- public void testQueueReleaseLoop() throws InterruptedException {
- System.out.println("testQueueReleaseLoop() ================");
- UnitDataQueuePort dataQueue = setupFloatSample();
-
- // set up sustain loops ===========================
- floatSample.setSustainBegin(-1);
- floatSample.setSustainEnd(-1);
- floatSample.setReleaseBegin(4);
- floatSample.setReleaseEnd(6);
-
- dataQueue.queueOn(floatSample, synth.createTimeStamp());
- // Advance synth so that the queue command propagates to the engine.
- synth.sleepUntil(synth.getCurrentTime() + 0.01);
-
- checkQueuedData(floatData, dataQueue, 0, 4);
- checkQueuedData(floatData, dataQueue, 4, 2);
- checkQueuedData(floatData, dataQueue, 4, 2);
- checkQueuedData(floatData, dataQueue, 4, 2); // looping in release cuz no
- // sustain loop
-
- dataQueue.queueOff(floatSample, true); // queue off in middle of loop
- synth.sleepUntil(synth.getCurrentTime() + 0.01);
-
- checkQueuedData(floatData, dataQueue, 4, 2);
- checkQueuedData(floatData, dataQueue, 4, 2); // still looping
- assertEquals("end full", true, dataQueue.hasMore());
- }
-
- public void testQueueSustainReleaseLoops() throws InterruptedException {
- System.out.println("testQueueSustainReleaseLoops() ================");
- UnitDataQueuePort dataQueue = setupFloatSample();
-
- // set up sustain loops ===========================
- floatSample.setSustainBegin(2);
- floatSample.setSustainEnd(4);
- floatSample.setReleaseBegin(5);
- floatSample.setReleaseEnd(7);
-
- dataQueue.queueOn(floatSample, synth.createTimeStamp());
- // Advance synth so that the queue command propagates to the engine.
- synth.sleepUntil(synth.getCurrentTime() + 0.01);
-
- checkQueuedData(floatData, dataQueue, 0, 4);
- checkQueuedData(floatData, dataQueue, 2, 2);
- checkQueuedData(floatData, dataQueue, 2, 1); // middle of sustain loop
-
- dataQueue.queueOff(floatSample, true); // queue off in middle of loop
- synth.sleepUntil(synth.getCurrentTime() + 0.01);
-
- checkQueuedData(floatData, dataQueue, 3, 2);
- checkQueuedData(floatData, dataQueue, 5, 2); // release loop
- checkQueuedData(floatData, dataQueue, 5, 2); // release loop
- assertEquals("end full", true, dataQueue.hasMore());
- }
-
- private void checkQueuedData(short[] data, UnitDataQueuePort dataQueue, int offset,
- int numFrames) {
- for (int i = 0; i < numFrames; i++) {
- assertEquals("got data", true, dataQueue.hasMore());
- double value = dataQueue.readNextMonoDouble(synth.getFramePeriod());
- assertEquals("data matches", data[i + offset] / 32768.0, value, 0.0001);
- }
- }
-
- private void checkQueuedData(float[] data, UnitDataQueuePort dataQueue, int offset,
- int numFrames) {
- for (int i = 0; i < numFrames; i++) {
- assertEquals("got data", true, dataQueue.hasMore());
- double value = dataQueue.readNextMonoDouble(synth.getFramePeriod());
- assertEquals("data matches", data[i + offset], value, 0.0001);
- }
- }
-
- class TestQueueCallback implements UnitDataQueueCallback {
- boolean gotStarted = false;
- boolean gotLooped = false;
- boolean gotFinished = false;
- QueueDataEvent lastEvent;
-
- @Override
- public void started(QueueDataEvent event) {
- System.out.println("Callback started.");
- gotStarted = true;
- lastEvent = event;
- }
-
- @Override
- public void looped(QueueDataEvent event) {
- System.out.println("Callback looped.");
- gotLooped = true;
- lastEvent = event;
- }
-
- @Override
- public void finished(QueueDataEvent event) {
- System.out.println("Callback finished.");
- gotFinished = true;
- lastEvent = event;
- }
- }
-
- public void testQueueCallback() {
- float[] data = {
- 0.2f, -8.9f, 2.7f
- };
- FloatSample sample = new FloatSample(data.length, 1);
- sample.write(data);
-
- UnitDataQueuePort dataQueue = new UnitDataQueuePort("test");
- assertEquals("start empty", false, dataQueue.hasMore());
-
- // Create an object to be called when the queued data is done.
- TestQueueCallback callback = new TestQueueCallback();
-
- QueueDataCommand command = dataQueue.createQueueDataCommand(sample, 0, data.length);
- command.setCallback(callback);
- command.setNumLoops(2);
- dataQueue.addQueuedBlock(command);
-
- // Check to see if flags get set true by callback.
- dataQueue.firePendingCallbacks();
- assertEquals("not started yet", false, callback.gotStarted);
- assertEquals("not looped yet", false, callback.gotLooped);
- assertEquals("not finished yet", false, callback.gotFinished);
-
- checkQueuedData(data, dataQueue, 0, 1);
- dataQueue.firePendingCallbacks();
- assertEquals("should be started now", true, callback.gotStarted);
- assertEquals("not looped yet", false, callback.gotLooped);
- assertEquals("not finished yet", false, callback.gotFinished);
- assertEquals("check source of event", dataQueue, callback.lastEvent.getSource());
- assertEquals("check sample", sample, callback.lastEvent.getSequentialData());
- assertEquals("check loopCount", 2, callback.lastEvent.getLoopsLeft());
-
- checkQueuedData(data, dataQueue, 1, data.length - 1);
- dataQueue.firePendingCallbacks();
- assertEquals("should be looped now", true, callback.gotLooped);
- assertEquals("check loopCount", 1, callback.lastEvent.getLoopsLeft());
- assertEquals("not finished yet", false, callback.gotFinished);
-
- checkQueuedData(data, dataQueue, 0, data.length);
- dataQueue.firePendingCallbacks();
- assertEquals("check loopCount", 0, callback.lastEvent.getLoopsLeft());
-
- checkQueuedData(data, dataQueue, 0, data.length);
- dataQueue.firePendingCallbacks();
- assertEquals("should be finished now", true, callback.gotFinished);
-
- assertEquals("end empty", false, dataQueue.hasMore());
- }
-
- public void testImmediate() {
- float[] data = {
- 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f
- };
- FloatSample sample = new FloatSample(data.length, 1);
- sample.write(data);
-
- UnitDataQueuePort dataQueue = new UnitDataQueuePort("test");
- dataQueue.queue(sample);
-
- // Only play some of the data then interrupt it with an immediate block.
- checkQueuedData(data, dataQueue, 0, 3);
-
- QueueDataCommand command = dataQueue.createQueueDataCommand(sample, 7, 3);
- command.setImmediate(true);
- command.run(); // execute "immediate" operation and add to block list
-
- // Should already be in new data.
- checkQueuedData(data, dataQueue, 7, 3);
- }
-
- public void testCrossFade() {
- float[] data1 = {
- 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f
- };
- float[] data2 = {
- 20.0f, 19.0f, 18.0f, 17.0f, 16.0f, 15.0f, 14.0f, 13.0f, 12.0f, 11.0f
- };
- FloatSample sample1 = new FloatSample(data1);
- FloatSample sample2 = new FloatSample(data2);
-
- UnitDataQueuePort dataQueue = new UnitDataQueuePort("test");
- dataQueue.queue(sample1, 0, 4);
-
- QueueDataCommand command = dataQueue.createQueueDataCommand(sample2, 1, 8);
- command.setCrossFadeIn(3);
- command.run(); // execute "immediate" operation and add to block list
-
- // Only play some of the data then crossfade to another sample.
- checkQueuedData(data1, dataQueue, 0, 4);
-
- for (int i = 0; i < 3; i++) {
- double factor = i / 3.0;
- double value = ((1.0 - factor) * data1[i + 4]) + (factor * data2[i + 1]);
- System.out.println("i = " + i + ", factor = " + factor + ", value = " + value);
-
- double actual = dataQueue.readNextMonoDouble(synth.getFramePeriod());
- assertEquals("crossfade " + i, value, actual, 0.00001);
- }
-
- // Should already be in new data.
- checkQueuedData(data2, dataQueue, 4, 5);
- }
-
- public void testImmediateCrossFade() {
- float[] data1 = {
- 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f
- };
- float[] data2 = {
- 20.0f, 19.0f, 18.0f, 17.0f, 16.0f, 15.0f, 14.0f, 13.0f, 12.0f, 11.0f
- };
- FloatSample sample1 = new FloatSample(data1);
- FloatSample sample2 = new FloatSample(data2);
-
- UnitDataQueuePort dataQueue = new UnitDataQueuePort("test");
- dataQueue.queue(sample1, 0, 4);
-
- // Only play some of the data then crossfade to another sample.
- int beforeInterrupt = 2;
- checkQueuedData(data1, dataQueue, 0, beforeInterrupt);
-
- QueueDataCommand command = dataQueue.createQueueDataCommand(sample2, 1, 8);
- command.setImmediate(true);
- command.setCrossFadeIn(3);
- command.run(); // execute "immediate" operation and add to block list
-
- for (int i = 0; i < 3; i++) {
- double factor = i / 3.0;
- double value = ((1.0 - factor) * data1[i + beforeInterrupt]) + (factor * data2[i + 1]);
- System.out.println("i = " + i + ", factor = " + factor + ", value = " + value);
-
- double actual = dataQueue.readNextMonoDouble(synth.getFramePeriod());
- assertEquals("crossfade " + i, value, actual, 0.00001);
- }
-
- // Should already be in new data.
- checkQueuedData(data2, dataQueue, 4, 5);
- }
-}
diff --git a/tests/com/jsyn/ports/TestSequentialData.java b/tests/com/jsyn/ports/TestSequentialData.java
deleted file mode 100644
index 1328c78..0000000
--- a/tests/com/jsyn/ports/TestSequentialData.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2009 Phil Burk, Mobileer Inc
- *
- * 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 com.jsyn.ports;
-
-import junit.framework.TestCase;
-
-import com.jsyn.data.FloatSample;
-
-public class TestSequentialData extends TestCase {
-
- float[] data1 = {
- 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f
- };
- FloatSample sample1;
- float[] data2 = {
- 20.0f, 19.0f, 18.0f, 17.0f, 16.0f, 15.0f, 14.0f, 13.0f, 12.0f, 11.0f
- };
- FloatSample sample2;
-
- public void testCrossfade() {
- sample1 = new FloatSample(data1);
- sample2 = new FloatSample(data2);
- SequentialDataCrossfade xfade = new SequentialDataCrossfade();
- xfade.setup(sample1, 4, 3, sample2, 1, 6);
-
- for (int i = 0; i < 3; i++) {
- double factor = i / 3.0;
- double value = ((1.0 - factor) * data1[i + 4]) + (factor * data2[i + 1]);
- System.out.println("i = " + i + ", factor = " + factor + ", value = " + value);
- assertEquals("crossfade " + i, value, xfade.readDouble(i), 0.00001);
- }
- for (int i = 3; i < 6; i++) {
- assertEquals("crossfade " + i, sample2.readDouble(i + 1), xfade.readDouble(i), 0.00001);
- }
- }
-}
diff --git a/tests/com/jsyn/ports/TestSet.java b/tests/com/jsyn/ports/TestSet.java
deleted file mode 100644
index 8d1f3ea..0000000
--- a/tests/com/jsyn/ports/TestSet.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright 2009 Phil Burk, Mobileer Inc
- *
- * 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 com.jsyn.ports;
-
-import junit.framework.TestCase;
-
-import com.jsyn.engine.SynthesisEngine;
-import com.jsyn.unitgen.Minimum;
-
-public class TestSet extends TestCase {
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- /** Internal value setting. */
- public void testSetValue() {
- int numParts = 4;
- UnitInputPort port = new UnitInputPort(numParts, "Tester");
- port.setValueInternal(0, 100.0);
- port.setValueInternal(2, 120.0);
- port.setValueInternal(1, 110.0);
- port.setValueInternal(3, 130.0);
- assertEquals("check port value", 100.0, port.getValue(0));
- assertEquals("check port value", 120.0, port.getValue(2));
- assertEquals("check port value", 110.0, port.getValue(1));
- assertEquals("check port value", 130.0, port.getValue(3));
- }
-
- public void testSet() throws InterruptedException {
- SynthesisEngine synthesisEngine = new SynthesisEngine();
- synthesisEngine.setRealTime(false);
- synthesisEngine.start();
- synthesisEngine.sleepUntil(0.01);
- Minimum min;
- synthesisEngine.add(min = new Minimum());
-
- double x = 33.99;
- double y = 8.31;
- min.inputA.set(x);
- min.inputB.set(y);
- synthesisEngine.sleepFor(0.01);
- assertEquals("min set A", x, min.inputA.getValue());
- assertEquals("min set B", y, min.inputB.getValue());
- min.start();
- synthesisEngine.sleepFor(0.01);
-
- assertEquals("min output", y, min.output.getValue());
- synthesisEngine.stop();
- }
-
- /** if we use a port index out of range we want to know now and not blow up the engine. */
- public void testSetBadPort() throws InterruptedException {
- SynthesisEngine synthesisEngine = new SynthesisEngine();
- synthesisEngine.setRealTime(false);
- synthesisEngine.start();
- Minimum min;
- synthesisEngine.add(min = new Minimum());
-
- min.start();
- Exception caught = null;
- try {
- min.inputA.set(1, 23.45);
- } catch (Exception e) {
- caught = e;
- }
- assertTrue("Catch port out of range, caught " + caught,
- (caught instanceof ArrayIndexOutOfBoundsException));
-
- // Don't blow up here.
- synthesisEngine.sleepUntil(0.01);
-
- synthesisEngine.stop();
- }
-
-}