GetPropertyInfo.java revision 8729:0242fce0f717
1353942Sdim/* 2353942Sdim * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. 3353942Sdim * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4353942Sdim * 5353942Sdim * This code is free software; you can redistribute it and/or modify it 6353942Sdim * under the terms of the GNU General Public License version 2 only, as 7353942Sdim * published by the Free Software Foundation. 8353942Sdim * 9353942Sdim * This code is distributed in the hope that it will be useful, but WITHOUT 10353942Sdim * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11353942Sdim * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12353942Sdim * version 2 for more details (a copy is included in the LICENSE file that 13353942Sdim * accompanied this code). 14353942Sdim * 15353942Sdim * You should have received a copy of the GNU General Public License version 16353942Sdim * 2 along with this work; if not, write to the Free Software Foundation, 17353942Sdim * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18353942Sdim * 19353942Sdim * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20353942Sdim * or visit www.oracle.com if you need additional information or have any 21353942Sdim * questions. 22353942Sdim */ 23353942Sdim 24353942Sdim/* @test 25353942Sdim @summary Test SoftSynthesizer getPropertyInfo method */ 26353942Sdim 27353942Sdimimport java.util.HashMap; 28353942Sdimimport java.util.Map; 29353942Sdim 30353942Sdimimport javax.sound.midi.MidiDevice; 31353942Sdimimport javax.sound.midi.MidiUnavailableException; 32353942Sdimimport javax.sound.midi.Patch; 33353942Sdimimport javax.sound.midi.Soundbank; 34353942Sdimimport javax.sound.sampled.*; 35353942Sdimimport javax.sound.sampled.AudioFormat.Encoding; 36353942Sdimimport javax.sound.midi.MidiDevice.Info; 37353942Sdim 38353942Sdimimport com.sun.media.sound.*; 39353942Sdim 40353942Sdimpublic class GetPropertyInfo { 41353942Sdim 42353942Sdim private static void assertTrue(boolean value) throws Exception { 43353942Sdim if (!value) 44353942Sdim throw new RuntimeException("assertTrue fails!"); 45353942Sdim } 46353942Sdim 47353942Sdim public static void main(String[] args) throws Exception { 48353942Sdim SoftSynthesizer synth = new SoftSynthesizer(); 49353942Sdim Map<String, Object> p = new HashMap<String, Object>(); 50353942Sdim p.put("format", "8000 HZ 24 BIT MONO UNSIGNED BIG-ENDIAN"); 51353942Sdim p.put("control rate", 125); 52353942Sdim p.put("reverb", false); 53353942Sdim p.put("auto gain control", "false"); 54353942Sdim AudioSynthesizerPropertyInfo[] ap = synth.getPropertyInfo(p); 55353942Sdim for (int i = 0; i < ap.length; i++) { 56353942Sdim if (ap[i].name.equals("control rate")) 57353942Sdim assertTrue(Math.abs((Float) ap[i].value - 125.0) < 0.001); 58353942Sdim if (ap[i].name.equals("reverb")) 59353942Sdim assertTrue((Boolean) ap[i].value == false); 60353942Sdim if (ap[i].name.equals("auto gain control")) 61353942Sdim assertTrue((Boolean) ap[i].value == false); 62353942Sdim if (ap[i].name.equals("format")) { 63353942Sdim AudioFormat format = (AudioFormat) ap[i].value; 64353942Sdim assertTrue(format.getChannels() == 1); 65353942Sdim assertTrue(format.getSampleSizeInBits() == 24); 66353942Sdim assertTrue(format.isBigEndian()); 67353942Sdim assertTrue(Math.abs(format.getSampleRate() - 8000) < 0.001); 68353942Sdim assertTrue(format.getEncoding() == Encoding.PCM_UNSIGNED); 69353942Sdim } 70353942Sdim } 71353942Sdim p = new HashMap<String, Object>(); 72353942Sdim p.put("format", "9000 Hz, 8 bit, 4 channels"); 73353942Sdim ap = synth.getPropertyInfo(p); 74353942Sdim for (int i = 0; i < ap.length; i++) { 75353942Sdim if (ap[i].name.equals("format")) { 76353942Sdim AudioFormat format = (AudioFormat) ap[i].value; 77353942Sdim assertTrue(format.getChannels() == 4); 78353942Sdim assertTrue(format.getSampleSizeInBits() == 8); 79353942Sdim assertTrue(!format.isBigEndian()); 80353942Sdim assertTrue(Math.abs(format.getSampleRate() - 9000) < 0.001); 81353942Sdim assertTrue(format.getEncoding() == Encoding.PCM_SIGNED); 82353942Sdim } 83353942Sdim } 84353942Sdim 85353942Sdim p = new HashMap<String, Object>(); 86353942Sdim p.put("format", "PCM_UNSIGNED 44100.0 Hz, 16 bit, 3 channels, 6 bytes/frame, big-endian"); 87353942Sdim ap = synth.getPropertyInfo(p); 88353942Sdim for (int i = 0; i < ap.length; i++) { 89353942Sdim if (ap[i].name.equals("format")) { 90353942Sdim AudioFormat format = (AudioFormat) ap[i].value; 91353942Sdim assertTrue(format.getChannels() == 3); 92353942Sdim assertTrue(format.getSampleSizeInBits() == 16); 93353942Sdim assertTrue(format.isBigEndian()); 94353942Sdim assertTrue(Math.abs(format.getSampleRate() - 44100) < 0.001); 95353942Sdim assertTrue(format.getEncoding() == Encoding.PCM_UNSIGNED); 96353942Sdim } 97353942Sdim } 98353942Sdim 99353942Sdim 100353942Sdim } 101353942Sdim} 102353942Sdim