blob: aeb0dda4bb278f6bc5cd98d99ffd380cb8b87bf1 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.harmony.sound.tests.javax.sound.midi;
import junit.framework.TestCase;
import javax.sound.midi.InvalidMidiDataException;
import javax.sound.midi.MidiMessage;
public class MidiMessageTest extends TestCase {
/**
* test constructor of class MidiMessage
*
*/
public void test_constructor_MidiMessage() {
MidiMessage1 midi = new MidiMessage1(new byte[] { 1, 2, 3, -5 });
assertEquals(4, midi.getLength());
assertEquals(1, midi.getStatus());
assertEquals(4, midi.getMessage().length);
assertEquals(1, midi.getMessage()[0]);
assertEquals(2, midi.getMessage()[1]);
assertEquals(3, midi.getMessage()[2]);
assertEquals(-5, midi.getMessage()[3]);
MidiMessage1 midi1 = new MidiMessage1(new byte[] { 0, -2 });
assertEquals(2, midi1.getLength());
assertEquals(0, midi1.getStatus());
assertEquals(2, midi1.getMessage().length);
assertEquals(0, midi1.getMessage()[0]);
assertEquals(-2, midi1.getMessage()[1]);
byte[] bt = new byte[] { -1, 87, 19 };
MidiMessage1 midi2 = new MidiMessage1(bt);
assertEquals(3, midi2.getLength());
assertEquals(255, midi2.getStatus());
assertEquals(3, midi2.getMessage().length);
assertEquals(-1, midi2.getMessage()[0]);
assertEquals(87, midi2.getMessage()[1]);
assertEquals(19, midi2.getMessage()[2]);
bt[0] = 45;
bt[1] = 16;
bt[2] = -29;
/**
* values change
*/
assertEquals(3, midi2.getLength());
assertEquals(45, midi2.getStatus());
assertEquals(3, midi2.getMessage().length);
assertEquals(45, midi2.getMessage()[0]);
assertEquals(16, midi2.getMessage()[1]);
assertEquals(-29, midi2.getMessage()[2]);
MidiMessage1 midi3 = new MidiMessage1(null);
assertEquals(0, midi3.getLength());
assertEquals(0, midi3.getStatus());
try {
midi3.getMessage();
fail("No NPE");
} catch(NullPointerException e) {
}
MidiMessage1 midi4 = new MidiMessage1(new byte[0]);
assertEquals(0, midi4.getLength());
assertEquals(0, midi4.getStatus());
assertEquals(0, midi4.getMessage().length);
}
/**
* test method getMessage() of class MidiMessage
*
*/
public void test_getMessage() throws Exception {
byte[] bt = new byte[] {1, 2, 3};
MidiMessage1 midi = new MidiMessage1(bt);
assertEquals(1, midi.getMessage()[0]);
assertEquals(2, midi.getMessage()[1]);
assertEquals(3, midi.getMessage()[2]);
bt[0] = 76;
bt[1] = 13;
bt[2] = -5;
/**
* values change
*/
assertEquals(76, midi.getMessage()[0]);
assertEquals(13, midi.getMessage()[1]);
assertEquals(-5, midi.getMessage()[2]);
MidiMessage1 midi1 = new MidiMessage1(new byte[] {1});
assertEquals(1, midi1.getMessage()[0]);
MidiMessage1 midi2 = new MidiMessage1(null);
try {
midi2.getMessage();
fail("No NPE");
} catch(NullPointerException e) {
}
midi2.setMessage(new byte[] { 90, 84 }, 2);
assertEquals(2, midi2.getMessage().length);
assertEquals(90, midi2.getMessage()[0]);
assertEquals(84, midi2.getMessage()[1]);
byte[] nb = midi2.getMessage();
nb[0] = 1;
nb[1] = 2;
/**
* values don't change
*/
assertEquals(90, midi2.getMessage()[0]);
assertEquals(84, midi2.getMessage()[1]);
midi1.setMessage(new byte[] { -54, 84, -9 }, 1);
assertEquals(1, midi1.getMessage().length);
assertEquals(-54, midi1.getMessage()[0]);
midi.setMessage(new byte[] { -90, -7, 4 }, 0);
assertEquals(0, midi.getMessage().length);
}
/**
* test method getStatus() of class MidiMessage
*
*/
public void test_getStatus() throws Exception {
byte[] bt = new byte[] {1, 2, 3};
MidiMessage1 midi = new MidiMessage1(bt);
assertEquals(1, midi.getStatus());
bt[0] = -1;
/**
* value change
*/
assertEquals(255, midi.getStatus());
MidiMessage1 midi1 = new MidiMessage1(new byte[] { -91, 2, 3 });
assertEquals(165, midi1.getStatus());
MidiMessage1 midi2 = new MidiMessage1(new byte[] { 1 });
assertEquals(1, midi2.getStatus());
MidiMessage1 midi3 = new MidiMessage1(null);
assertEquals(0, midi3.getStatus());
bt = new byte[] {90, 84};
midi2.setMessage(bt, 2);
assertEquals(90, midi2.getStatus());
bt[0] = 35;
/*
* value don't change
*/
assertEquals(90, midi2.getStatus());
midi1.setMessage(new byte[] {-54, 84, -9}, 1);
assertEquals(202, midi1.getStatus());
midi.setMessage(new byte[] { -90, -7, 4 }, 0);
assertEquals(0, midi.getStatus());
}
/**
* test method getLength() of class MidiMessage
*
*/
public void test_getLength() throws Exception {
MidiMessage1 midi = new MidiMessage1(new byte[] {1, 2, 3});
assertEquals(3, midi.getLength());
MidiMessage1 midi1 = new MidiMessage1(null);
assertEquals(0, midi1.getLength());
MidiMessage1 midi2 = new MidiMessage1(new byte[] {-71, 2, 3, -90});
assertEquals(4, midi2.getLength());
midi2.setMessage(new byte[] {90, 84}, 2);
assertEquals(2, midi2.getLength());
midi1.setMessage(new byte[] { 90, 84, -9 }, 2);
assertEquals(2, midi1.getLength());
midi.setMessage(new byte[] { -90, -7, 4 }, 0);
assertEquals(0, midi.getLength());
}
/**
* test method setMessage( byte[], int ) of class MidiMessage
*
*/
public void test_setMessage() throws Exception {
MidiMessage1 midi = new MidiMessage1(new byte[] {18, 34, 48, -56, 12});
MidiMessage1 midi1 = new MidiMessage1(new byte[] {18});
MidiMessage1 midi2 = new MidiMessage1(null);
byte[] bt = new byte[] {90, 84};
midi2.setMessage(bt, 2);
assertEquals(2, midi2.getMessage().length);
assertEquals(90, midi2.getMessage()[0]);
assertEquals(84, midi2.getMessage()[1]);
bt[0] = 34;
bt[1] = -5;
/*
* values don't change
*/
assertEquals(90, midi2.getMessage()[0]);
assertEquals(84, midi2.getMessage()[1]);
midi1.setMessage(new byte[] { -54, 84, -9 }, 1);
assertEquals(1, midi1.getMessage().length);
assertEquals(-54, midi1.getMessage()[0]);
midi.setMessage(new byte[] { -90, -7, 4 }, 0);
assertEquals(0, midi.getMessage().length);
try {
midi1.setMessage(new byte[] { -54, 84, -9 }, 5);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
try {
midi1.setMessage(null, -2);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
try {
midi1.setMessage(null, 0);
fail("NullPointerException expected");
} catch (NullPointerException e) {}
}
/**
* Subsidiary class in order to testing constructor
* and method setMessage( byte[], int ) of class Instrument,
* because its declared as protected
*/
static class MidiMessage1 extends MidiMessage {
MidiMessage1(byte[] data) {
super(data);
}
@Override
public Object clone() {
return null;
}
@Override
public void setMessage(byte[] data, int length)
throws InvalidMidiDataException {
super.setMessage(data, length);
}
}
}