1 /*
   2  * Copyright (c) 2003, 2016, 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 import java.util.List;
  25 
  26 import javax.sound.midi.MidiSystem;
  27 import javax.sound.midi.MidiUnavailableException;
  28 import javax.sound.midi.Sequencer;
  29 import javax.sound.midi.Transmitter;
  30 
  31 /**
  32  * @test
  33  * @bug 4931400
  34  * @summary Clarify default connections in default sequencer
  35  */
  36 public class GetSequencer {
  37 
  38     static boolean failed = false;
  39 
  40     public static void main(String args[]) throws Exception {
  41         doTest(1);
  42         doTest(2);
  43         doTest(3);
  44 
  45         if (failed) throw new Exception("Test FAILED!");
  46         out("test OK");
  47     }
  48 
  49     public static void doTest(int mode) {
  50         Sequencer seq = null;
  51         boolean connected = false;
  52 
  53         try {
  54             switch (mode) {
  55             case 1:
  56                 seq = MidiSystem.getSequencer();
  57                 connected = true;
  58                 break;
  59             case 2:
  60                 seq = MidiSystem.getSequencer(false);
  61                 connected = false;
  62                 break;
  63             case 3:
  64                 seq = MidiSystem.getSequencer(true);
  65                 connected = true;
  66                 break;
  67             }
  68             out("Testing Sequencer "+seq);
  69             if (connected) {
  70                 out("  opened in connected mode.");
  71             } else {
  72                 out("  opened in non-connected mode.");
  73             }
  74             System.out.println("  opening...");
  75             seq.open();
  76         } catch (MidiUnavailableException mue) {
  77             System.err.println("MidiUnavailableException was thrown: " + mue);
  78             System.err.println("  could not test this sequencer.");
  79             return;
  80         }
  81 
  82         try {
  83             List<Transmitter> transmitters = seq.getTransmitters();
  84             int size = transmitters.size();
  85             out("  transmitters.size()="+size);
  86             if (size != 1 && connected) {
  87                 out("  should have 1 connection! Failed.");
  88                 failed = true;
  89             }
  90             if (size != 0 && !connected) {
  91                 out("  should have 0 connections! Failed.");
  92                 failed = true;
  93             }
  94             out("  closing...");
  95             seq.close();
  96             transmitters = seq.getTransmitters();
  97             size = transmitters.size();
  98             out("  transmitters.size()="+size);
  99             if (size != 0) {
 100                 out("  should have 0 connections! Failed.");
 101                 failed = true;
 102             }
 103 
 104             out("  opening again...");
 105             seq.open();
 106             transmitters = seq.getTransmitters();
 107             size = transmitters.size();
 108             out("  transmitters.size()="+size);
 109             if (size != 1 && connected) {
 110                 out("  should have 1 connection! Failed.");
 111                 failed = true;
 112             }
 113             if (size != 0 && !connected) {
 114                 out("  should have 0 connections! Failed.");
 115                 failed = true;
 116             }
 117         } catch (Exception e) {
 118             System.err.println("  unexpectedException was thrown: " + e);
 119             System.err.println("  causes this test to FAIL.");
 120             failed = true;
 121         }
 122         seq.close();
 123     }
 124 
 125     static void out(String s) {
 126         System.out.println(s);
 127     }
 128 }