Package org.apache.harmony.sound.tests.javax.sound.midi

Source Code of org.apache.harmony.sound.tests.javax.sound.midi.SysexMessageTest$SysexMessage1

/*
*  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 javax.sound.midi.InvalidMidiDataException;
import javax.sound.midi.SysexMessage;

import junit.framework.TestCase;

public class SysexMessageTest extends TestCase {
    public void test_constants() {
        assertEquals(247, SysexMessage.SPECIAL_SYSTEM_EXCLUSIVE);
        assertEquals(240, SysexMessage.SYSTEM_EXCLUSIVE);
    }
   
    /**
     * test constructors
     *
     */
    public void test_constructors() {
        SysexMessage1 message = new SysexMessage1();
        assertEquals(2, message.getLength());
        assertEquals(240, message.getStatus());
        assertEquals(2, message.getMessage().length);
        assertEquals(-16, message.getMessage()[0]);
        assertEquals(-9, message.getMessage()[1]);
        assertEquals(1, message.getData().length);
        assertEquals(-9, message.getData()[0]);
       
        byte[] bt = new byte[] {16, 28, -43, 18, 54};
        SysexMessage1 message1 = new SysexMessage1(bt);
        assertEquals(5, message1.getLength());
        assertEquals(16, message1.getStatus());
        assertEquals(5, message1.getMessage().length);
        assertEquals(16, message1.getMessage()[0]);
        assertEquals(28, message1.getMessage()[1]);
        assertEquals(-43, message1.getMessage()[2]);
        assertEquals(18, message1.getMessage()[3]);
        assertEquals(54, message1.getMessage()[4]);
        assertEquals(4, message1.getData().length);
        assertEquals(28, message1.getData()[0]);
        assertEquals(-43, message1.getData()[1]);
        assertEquals(18, message1.getData()[2]);
        assertEquals(54, message1.getData()[3]);
        bt[0] = 18;
        bt[1] = 24;
        bt[2] = 89;
        bt[3] = -6;
        bt[4] = -90;
        /*
         * values change
         */
        assertEquals(5, message1.getLength());
        assertEquals(18, message1.getStatus());
        assertEquals(5, message1.getMessage().length);
        assertEquals(18, message1.getMessage()[0]);
        assertEquals(24, message1.getMessage()[1]);
        assertEquals(89, message1.getMessage()[2]);
        assertEquals(-6, message1.getMessage()[3]);
        assertEquals(-90, message1.getMessage()[4]);
        assertEquals(4, message1.getData().length);
        assertEquals(24, message1.getData()[0]);
        assertEquals(89, message1.getData()[1]);
        assertEquals(-6, message1.getData()[2]);
        assertEquals(-90, message1.getData()[3]);
        byte[] nb = message1.getData();
        nb[0] = 34;
        nb[1] = 8;
        nb[2] = -4;
        nb[3] = 3;
        /*
         * values don't change
         */
        assertEquals(24, message1.getData()[0]);
        assertEquals(89, message1.getData()[1]);
        assertEquals(-6, message1.getData()[2]);
        assertEquals(-90, message1.getData()[3]);
       
        SysexMessage1 message2 = new SysexMessage1(new byte[0]);
        assertEquals(0, message2.getLength());
        assertEquals(0, message2.getStatus());
        assertEquals(0, message2.getMessage().length);
        try {
            message2.getData();
            fail("NegativeArraySizeException expected");
        } catch (NegativeArraySizeException e) {}
       
        SysexMessage1 message3 = new SysexMessage1(null);
        assertEquals(0, message3.getLength());
        assertEquals(0, message3.getStatus());
        try {
            message3.getMessage();
            fail("NullPointerException expected");
        } catch (NullPointerException e) {}
        try {
            message3.getData();
            fail("NegativeArraySizeException expected");
        } catch (NegativeArraySizeException e) {}
    }
   
    /**
     * test method setMessage(byte[], int)
     *
     */
    public void test_setMessage1() throws Exception {
        SysexMessage message = new SysexMessage();
       
        byte[] bt = new byte[] {-9, 18, -6, -9, 3};
        message.setMessage(bt, 5);
        assertEquals(5, message.getLength());
        assertEquals(247, message.getStatus());
        assertEquals(5, message.getMessage().length);
        assertEquals(-9, message.getMessage()[0]);
        assertEquals(18, message.getMessage()[1]);
        assertEquals(-6, message.getMessage()[2]);
        assertEquals(-9, message.getMessage()[3]);
        assertEquals(3, message.getMessage()[4]);
        assertEquals(4, message.getData().length);
        assertEquals(18, message.getData()[0]);
        assertEquals(-6, message.getData()[1]);
        assertEquals(-9, message.getData()[2]);
        assertEquals(3, message.getData()[3]);
        bt[0] = 10;
        bt[1] = 20;
        bt[2] = 30;
        bt[3] = 40;
        bt[4] = 50;
        /*
         * values don't change
         */
        assertEquals(-9, message.getMessage()[0]);
        assertEquals(18, message.getMessage()[1]);
        assertEquals(-6, message.getMessage()[2]);
        assertEquals(-9, message.getMessage()[3]);
        assertEquals(3, message.getMessage()[4]);
        assertEquals(18, message.getData()[0]);
        assertEquals(-6, message.getData()[1]);
        assertEquals(-9, message.getData()[2]);
        assertEquals(3, message.getData()[3]);
       
        try {
            message.setMessage(new byte[] {34}, 1);
            fail("InvalidMidiDataException expected");
        } catch (InvalidMidiDataException e) {}
        /*
         * it's all right!
         */
        message.setMessage(new byte[] {-9}, 1);
        message.setMessage(new byte[] {-16}, 1);
       
        message.setMessage(new byte[] {-16, 34, 56}, 1);
        assertEquals(1, message.getLength());
        assertEquals(1, message.getMessage().length);
        assertEquals(0, message.getData().length);
       
        try {
            message.setMessage(new byte[] {-1, 34, 56}, 4);
            fail("InvalidMidiDataException expected");
        } catch (InvalidMidiDataException e) {}
        try {
            message.setMessage(new byte[] {-9, 34, 56}, 4);
            fail("IndexOutOfBoundsException expected");
        } catch (IndexOutOfBoundsException e) {}
        try {
            message.setMessage(new byte[] {-9, 34, 56}, -1);
            fail("IndexOutOfBoundsException expected");
        } catch (IndexOutOfBoundsException e) {}
       
        try {
            message.setMessage(new byte[0], 0);
            fail("ArrayIndexOutOfBoundsException expected");
        } catch (ArrayIndexOutOfBoundsException e) {}
       
        try {
            message.setMessage(null, 0);
            fail("NullPointerException expected");
        } catch (NullPointerException e) {}
       
        message.setMessage(new byte[] {-9, 3, 4}, 0);
        assertEquals(0, message.getLength());
        assertEquals(0, message.getStatus());
        assertEquals(0, message.getMessage().length);
        try {
            message.getData();
            fail("NegativeArraySizeException expected");
        } catch (NegativeArraySizeException e) {}
    }
   
    /**
     * test method setMessage(int, byte[], int)
     *
     */
    public void test_setMessage2() throws Exception {
        SysexMessage message = new SysexMessage();
        try {
            message.setMessage(34, new byte[] {1, 2}, 2);
            fail("InvalidMidiDataException expected");
        } catch (InvalidMidiDataException e) {}
       
        /*
         * it's all right
         */
        message.setMessage(240, new byte[] {1, 2}, 2);
        message.setMessage(247, new byte[] {34, -42}, 2);
       
        assertEquals(3, message.getLength());
        assertEquals(247, message.getStatus());
        assertEquals(3, message.getMessage().length);
        assertEquals(-9, message.getMessage()[0]);
        assertEquals(34, message.getMessage()[1]);
        assertEquals(-42, message.getMessage()[2]);
        assertEquals(2, message.getData().length);
        assertEquals(34, message.getData()[0]);
        assertEquals(-42, message.getData()[1]);
       
        message.setMessage(240, new byte[] {12, 47, -9}, 1);
        assertEquals(2, message.getLength());
        assertEquals(240, message.getStatus());
        assertEquals(2, message.getMessage().length);
        assertEquals(-16, message.getMessage()[0]);
        assertEquals(12, message.getMessage()[1]);
        assertEquals(1, message.getData().length);
        assertEquals(12, message.getData()[0]);
       
        message.setMessage(240, new byte[] {12, 4, 9}, 0);
        assertEquals(1, message.getLength());
        assertEquals(240, message.getStatus());
        assertEquals(1, message.getMessage().length);
        assertEquals(-16, message.getMessage()[0]);
        assertEquals(0, message.getData().length);
       
        try {
            message.setMessage(247, new byte[] {1, 2, 3}, 4);
            fail("IndexOutOfBoundsException expected");
        } catch (IndexOutOfBoundsException e) {}
       
        try {
            message.setMessage(247, new byte[] {1, 2, 3}, -1);
            fail("IndexOutOfBoundsException expected");
        } catch (IndexOutOfBoundsException e) {}
       
        message.setMessage(247, new byte[0], 0);
        assertEquals(1, message.getLength());
        assertEquals(247, message.getStatus());
        assertEquals(1, message.getMessage().length);
        assertEquals(-9, message.getMessage()[0]);
        assertEquals(0, message.getData().length);
       
        try {
            message.setMessage(247, null, 0);
            fail("NullPointerException expected");
        } catch (NullPointerException e) {}
    }
   
    /**
     * Test method clone() of class SysexMessage.
     */
    public void test_clone1() {
        SysexMessage message = new SysexMessage();
        assertTrue(message.clone() != message);
        assertEquals(message.clone().getClass(), message.getClass());
        SysexMessage tmessage;
        tmessage = (SysexMessage) message.clone();
        assertEquals(message.getLength(), tmessage.getLength());
        assertEquals(message.getMessage().length, tmessage.getMessage().length);
        assertEquals(message.getData().length, tmessage.getData().length);
        if (message.getData().length != 0) {
            for (int i = 0; i < message.getData().length; i++) {
                assertEquals(message.getData()[i], tmessage.getData()[i]);
            }
        }
        if (message.getMessage().length != 0) {
            for (int i = 0; i < message.getMessage().length; i++) {
                assertEquals(message.getMessage()[i], tmessage.getMessage()[i]);
            }
        }
    }

    /**
     * Test method clone() of class SysexMessage.
     */
    public void test_clone2() throws Exception {
        SysexMessage message = new SysexMessage();

        message.setMessage(240, new byte[] { 23, 45, -90 }, 2);

        assertTrue(message.clone() != message);
        assertEquals(message.clone().getClass(), message.getClass());
        SysexMessage tmessage;
        tmessage = (SysexMessage) message.clone();
        assertEquals(message.getLength(), tmessage.getLength());
        assertEquals(message.getMessage().length, tmessage.getMessage().length);
        assertEquals(message.getData().length, tmessage.getData().length);
        if (message.getData().length != 0) {
            for (int i = 0; i < message.getData().length; i++) {
                assertEquals(message.getData()[i], tmessage.getData()[i]);
            }
        }
        if (message.getMessage().length != 0) {
            for (int i = 0; i < message.getMessage().length; i++) {
                assertEquals(message.getMessage()[i], tmessage.getMessage()[i]);
            }
        }
    }
   
    public void test_clone3() throws Exception {
        byte[] bt = new byte[] {1, 2, 3, 4};
        SysexMessage1 message = new SysexMessage1(bt);
        assertTrue(message.clone() != message);
       
        SysexMessage tmessage;
        tmessage = (SysexMessage) message.clone();
        bt[0] = 34;
        bt[1] = 15;
        bt[2] = 89;
        bt[3] = 1;
        assertEquals(message.getLength(), tmessage.getLength());
        assertEquals(message.getMessage().length, tmessage.getMessage().length);
        assertEquals(message.getData().length, tmessage.getData().length);
        /*
         * 'real' SysexMessage change, but 'clone' not
         */
        //'real'
        assertEquals(15, message.getData()[0]);
        assertEquals(89, message.getData()[1]);
        assertEquals(1, message.getData()[2]);
        assertEquals(34, message.getMessage()[0]);
        assertEquals(15, message.getMessage()[1]);
        assertEquals(89, message.getMessage()[2]);
        assertEquals(1, message.getMessage()[3]);
        //'clone'
        assertEquals(2, tmessage.getData()[0]);
        assertEquals(3, tmessage.getData()[1]);
        assertEquals(4, tmessage.getData()[2]);
        assertEquals(1, tmessage.getMessage()[0]);
        assertEquals(2, tmessage.getMessage()[1]);
        assertEquals(3, tmessage.getMessage()[2]);
        assertEquals(4, tmessage.getMessage()[3]);
    }
   
    static class SysexMessage1 extends SysexMessage {
        SysexMessage1() {
            super();
        }
       
        SysexMessage1(byte[] data) {
            super(data);
        }
    }
}
TOP

Related Classes of org.apache.harmony.sound.tests.javax.sound.midi.SysexMessageTest$SysexMessage1

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.