1 /* 2 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /* @test 25 @summary Test SoftSynthesizer getPropertyInfo method */ 26 27 import java.util.HashMap; 28 import java.util.Map; 29 30 import javax.sound.midi.MidiDevice; 31 import javax.sound.midi.MidiUnavailableException; 32 import javax.sound.midi.Patch; 33 import javax.sound.midi.Soundbank; 34 import javax.sound.sampled.*; 35 import javax.sound.sampled.AudioFormat.Encoding; 36 import javax.sound.midi.MidiDevice.Info; 37 38 import com.sun.media.sound.*; 39 40 public class GetPropertyInfo { 41 42 private static void assertTrue(boolean value) throws Exception { 43 if (!value) 44 throw new RuntimeException("assertTrue fails!"); 45 } 46 47 public static void main(String[] args) throws Exception { 48 SoftSynthesizer synth = new SoftSynthesizer(); 49 Map<String, Object> p = new HashMap<String, Object>(); 50 p.put("format", "8000 HZ 24 BIT MONO UNSIGNED BIG-ENDIAN"); 51 p.put("control rate", 125); 52 p.put("reverb", false); 53 p.put("auto gain control", "false"); 54 AudioSynthesizerPropertyInfo[] ap = synth.getPropertyInfo(p); 55 for (int i = 0; i < ap.length; i++) { 56 if (ap[i].name.equals("control rate")) 57 assertTrue(Math.abs((Float) ap[i].value - 125.0) < 0.001); 58 if (ap[i].name.equals("reverb")) 59 assertTrue((Boolean) ap[i].value == false); 60 if (ap[i].name.equals("auto gain control")) 61 assertTrue((Boolean) ap[i].value == false); 62 if (ap[i].name.equals("format")) { 63 AudioFormat format = (AudioFormat) ap[i].value; 64 assertTrue(format.getChannels() == 1); 65 assertTrue(format.getSampleSizeInBits() == 24); 66 assertTrue(format.isBigEndian()); 67 assertTrue(Math.abs(format.getSampleRate() - 8000) < 0.001); 68 assertTrue(format.getEncoding() == Encoding.PCM_UNSIGNED); 69 } 70 } 71 p = new HashMap<String, Object>(); 72 p.put("format", "9000 Hz, 8 bit, 4 channels"); 73 ap = synth.getPropertyInfo(p); 74 for (int i = 0; i < ap.length; i++) { 75 if (ap[i].name.equals("format")) { 76 AudioFormat format = (AudioFormat) ap[i].value; 77 assertTrue(format.getChannels() == 4); 78 assertTrue(format.getSampleSizeInBits() == 8); 79 assertTrue(!format.isBigEndian()); 80 assertTrue(Math.abs(format.getSampleRate() - 9000) < 0.001); 81 assertTrue(format.getEncoding() == Encoding.PCM_SIGNED); 82 } 83 } 84 85 p = new HashMap<String, Object>(); 86 p.put("format", "PCM_UNSIGNED 44100.0 Hz, 16 bit, 3 channels, 6 bytes/frame, big-endian"); 87 ap = synth.getPropertyInfo(p); 88 for (int i = 0; i < ap.length; i++) { 89 if (ap[i].name.equals("format")) { 90 AudioFormat format = (AudioFormat) ap[i].value; 91 assertTrue(format.getChannels() == 3); 92 assertTrue(format.getSampleSizeInBits() == 16); 93 assertTrue(format.isBigEndian()); 94 assertTrue(Math.abs(format.getSampleRate() - 44100) < 0.001); 95 assertTrue(format.getEncoding() == Encoding.PCM_UNSIGNED); 96 } 97 } 98 99 100 } 101 }