/* * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code 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 General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions.
*/
/** * @test * @key sound * @bug 4680710 * @summary SourceDataLine.write() behavior is not correct for not open or not * started lines
*/ publicclass SDLwrite {
int bufferSizeToWrite = 1; if ( lineAudioFormat.getSampleSizeInBits() != AudioSystem.NOT_SPECIFIED ) {
bufferSizeToWrite = lineAudioFormat.getSampleSizeInBits()/8; if ( lineAudioFormat.getSampleSizeInBits()%8 != 0 ) {
bufferSizeToWrite++;
}
} if ( lineAudioFormat.getFrameSize() != AudioSystem.NOT_SPECIFIED ) {
bufferSizeToWrite = lineAudioFormat.getFrameSize();
} byte[] dataToWrite = newbyte[bufferSizeToWrite]; for (int k=0; k < bufferSizeToWrite; k++) {
dataToWrite[k] = (byte)1;
} int offsetToWrite = 0;
out.println
("\n> check SourceDataLine.write() for not open line with correct length of data:"); int writtenBytes = -1; try {
writtenBytes = testedSourceLine.write(dataToWrite, offsetToWrite, bufferSizeToWrite);
out.println("> Bytes written: number of written bytes = " + writtenBytes);
} catch (Throwable thrown) {
out.println("## SourceDataLine.write(byte[] b, int off, int len) failed:");
out.println("# Unexpected Exception is thrown");
out.println("# Mixer = " + testedMixer);
out.println("# SourceDataLine = " + testedSourceLine);
thrown.printStackTrace(out);
testResult = STATUS_FAILED;
}
out.println
("\n> check SourceDataLine.write() for not open line with incorrect length of data:");
writtenBytes = -1;
bufferSizeToWrite--; try {
writtenBytes = testedSourceLine.write(dataToWrite, offsetToWrite, bufferSizeToWrite);
out.println("> Bytes written: number of written bytes = " + writtenBytes);
} catch (IllegalArgumentException illegalArgumentException) {
out.println("> Permissible IllegalArgumentException for the present instance is thrown:");
illegalArgumentException.printStackTrace(out);
} catch (Throwable thrown) {
out.println("## SourceDataLine.write(byte[] b, int off, int len) failed:");
out.println("# Unexpected Exception is thrown");
out.println("# Mixer = " + testedMixer);
out.println("# SourceDataLine = " + testedSourceLine);
thrown.printStackTrace(out);
testResult = STATUS_FAILED;
}
out.println
("\n> open tested line:");
bufferSizeToWrite++; try {
testedSourceLine.open(lineAudioFormat, bufferSizeToWrite);
out.println("> OK - line is opened");
} catch (LineUnavailableException lineUnavailableException) {
out.println("> Line is not available due to resource restrictions:");
lineUnavailableException.printStackTrace(out); continue;
} catch (SecurityException securityException) {
out.println("> Line is not available due to security restrictions:");
securityException.printStackTrace(out); continue;
} catch (Throwable thrown) {
out.println("## SourceDataLine.open(AudioFormat format) failed:");
out.println("# Unexpected Exception is thrown");
out.println("# Mixer = " + testedMixer);
out.println("# SourceDataLine = " + testedSourceLine);
thrown.printStackTrace(out);
testResult = STATUS_FAILED; continue;
}
out.println
("\n> check SourceDataLine.write() for not started line with correct length of data:");
writtenBytes = -1; try {
writtenBytes = testedSourceLine.write(dataToWrite, offsetToWrite, bufferSizeToWrite);
out.println("> Bytes written: number of written bytes = " + writtenBytes);
} catch (Throwable thrown) {
out.println("## SourceDataLine.write(byte[] b, int off, int len) failed:");
out.println("# Unexpected Exception is thrown");
out.println("# Mixer = " + testedMixer);
out.println("# SourceDataLine = " + testedSourceLine);
thrown.printStackTrace(out);
testResult = STATUS_FAILED;
}
out.println
("\n> check SourceDataLine.write() for not started line with incorrect length of data:");
writtenBytes = -1;
bufferSizeToWrite--; try {
writtenBytes = testedSourceLine.write(dataToWrite, offsetToWrite, bufferSizeToWrite);
out.println("> Bytes written: number of written bytes = " + writtenBytes);
} catch (IllegalArgumentException illegalArgumentException) {
out.println("> Permissible IllegalArgumentException for the present instance is thrown:");
illegalArgumentException.printStackTrace(out);
} catch (Throwable thrown) {
out.println("## SourceDataLine.write(byte[] b, int off, int len) failed:");
out.println("# Unexpected Exception is thrown");
out.println("# Mixer = " + testedMixer);
out.println("# SourceDataLine = " + testedSourceLine);
thrown.printStackTrace(out);
testResult = STATUS_FAILED;
}
testedSourceLine.close();
} // for (int j=0; j < supportedSourceLineInfo.length; j++)
testedMixer.close();
} // for (int i=0; i < installedMixersInfo.length; i++)
if ( testResult == STATUS_FAILED ) {
out.println("\n==> test FAILED!");
} else {
out.println("\n==> test PASSED!");
} return testResult;
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.