/*
* IllegalStateTestCase.java
*/
/*
* Copyright (c) 2006 by Matthias Pfisterer
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as published
* by the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package org.tritonus.test.api.midi.synthesizer;
import javax.sound.midi.Synthesizer;
/** Tests for class javax.sound.midi.Synthesizer.
*/
public class IllegalStateTestCase
extends BaseSynthesizerTestCase
{
public IllegalStateTestCase(String strName)
{
super(strName);
}
protected void checkSynthesizer(Synthesizer synth)
throws Exception
{
// Synthesizer is closed
checkMethods(synth, false);
// Synthesizer open
synth.open();
checkMethods(synth, true);
// clean up
synth.close();
}
private void checkMethods(Synthesizer synth, boolean bOpen)
throws Exception
{
boolean bExpectingException = false;
checkMethod(synth, "getMaxPolyphony()", bExpectingException, bOpen);
checkMethod(synth, "getLatency()", bExpectingException, bOpen);
checkMethod(synth, "getChannels()", bExpectingException, bOpen);
checkMethod(synth, "getVoiceStatus()", bExpectingException, bOpen);
checkMethod(synth, "getDefaultSoundbank()", bExpectingException, bOpen);
checkMethod(synth, "getAvailableInstruments()", bExpectingException, bOpen);
checkMethod(synth, "getLoadedInstruments()", bExpectingException, bOpen);
}
private void checkMethod(Synthesizer synth, String strMethodName,
boolean bExceptionExpected, boolean bOpen)
throws Exception
{
try
{
if ("getMaxPolyphony()".equals(strMethodName))
synth.getMaxPolyphony();
else if ("getLatency()".equals(strMethodName))
synth.getLatency();
else if ("getChannels()".equals(strMethodName))
synth.getChannels();
else if ("getVoiceStatus()".equals(strMethodName))
synth.getVoiceStatus();
else if ("getDefaultSoundbank()".equals(strMethodName))
synth.getDefaultSoundbank();
else if ("getAvailableInstruments()".equals(strMethodName))
synth.getAvailableInstruments();
else if ("getLoadedInstruments()".equals(strMethodName))
synth.getLoadedInstruments();
else
throw new RuntimeException("unknown method name");
if (bExceptionExpected)
{
fail(constructErrorMessage(synth, strMethodName, bExceptionExpected, bOpen));
}
}
catch (IllegalStateException e)
{
if (! bExceptionExpected)
{
fail(constructErrorMessage(synth, strMethodName, bExceptionExpected, bOpen));
}
}
}
private static String constructErrorMessage(Synthesizer synth,
String strMethodName,
boolean bExceptionExpected,
boolean bOpen)
{
String strMessage = ": IllegalStateException ";
strMessage += (bExceptionExpected ? "not thrown" : "thrown");
strMessage += " on " + strMethodName;
return BaseSynthesizerTestCase.constructErrorMessage(synth,
strMessage, bOpen);
}
}
/*** IllegalStateTestCase.java ***/