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

Source Code of org.apache.harmony.sound.tests.javax.sound.midi.ShortMessageTest$ShortMessage1

/*
*  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.
*/

/**
* @author Evgeny S. Sidorenko
*/

package org.apache.harmony.sound.tests.javax.sound.midi;

import javax.sound.midi.InvalidMidiDataException;
import javax.sound.midi.ShortMessage;

import junit.framework.TestCase;

public class ShortMessageTest extends TestCase {

    /**
     * test constants
     *
     */
    public void test_constants() {
        assertEquals(254, ShortMessage.ACTIVE_SENSING);
        assertEquals(208, ShortMessage.CHANNEL_PRESSURE);
        assertEquals(251, ShortMessage.CONTINUE);
        assertEquals(176, ShortMessage.CONTROL_CHANGE);
        assertEquals(247, ShortMessage.END_OF_EXCLUSIVE);
        assertEquals(241, ShortMessage.MIDI_TIME_CODE);
        assertEquals(128, ShortMessage.NOTE_OFF);
        assertEquals(144, ShortMessage.NOTE_ON);
        assertEquals(224, ShortMessage.PITCH_BEND);
        assertEquals(160, ShortMessage.POLY_PRESSURE);
        assertEquals(192, ShortMessage.PROGRAM_CHANGE);
        assertEquals(242, ShortMessage.SONG_POSITION_POINTER);
        assertEquals(243, ShortMessage.SONG_SELECT);
        assertEquals(250, ShortMessage.START);
        assertEquals(252, ShortMessage.STOP);
        assertEquals(255, ShortMessage.SYSTEM_RESET);
        assertEquals(248, ShortMessage.TIMING_CLOCK);
        assertEquals(246, ShortMessage.TUNE_REQUEST);
    }

    /**
     * test constructors
     *
     */
    public void test_constructor_ShortMessage1() {
        ShortMessage1 message = new ShortMessage1();
        assertEquals(0, message.getChannel());
        assertEquals(144, message.getCommand());
        assertEquals(64, message.getData1());
        assertEquals(127, message.getData2());
        assertEquals(3, message.getLength());
        assertEquals(144, message.getStatus());
        assertEquals(3, message.getMessage().length);
        assertEquals(-112, message.getMessage()[0]);
        assertEquals(64, message.getMessage()[1]);
        assertEquals(127, message.getMessage()[2]);

        byte[] bt = new byte[] { -95, -5, 9, 56, -18 };
        ShortMessage1 message1 = new ShortMessage1(bt);
        assertEquals(1, message1.getChannel());
        assertEquals(160, message1.getCommand());
        assertEquals(251, message1.getData1());
        assertEquals(9, message1.getData2());
        assertEquals(5, message1.getLength());
        assertEquals(161, message1.getStatus());
        assertEquals(5, message1.getMessage().length);
        assertEquals(-95, message1.getMessage()[0]);
        assertEquals(-5, message1.getMessage()[1]);
        assertEquals(9, message1.getMessage()[2]);
        assertEquals(56, message1.getMessage()[3]);
        assertEquals(-18, message1.getMessage()[4]);
        bt[0] = 1;
        bt[1] = 2;
        bt[2] = 3;
        bt[3] = 4;
        bt[4] = 5;
        /*
         * values change
         */
        assertEquals(1, message1.getChannel());
        assertEquals(0, message1.getCommand());
        assertEquals(2, message1.getData1());
        assertEquals(3, message1.getData2());
        assertEquals(5, message1.getLength());
        assertEquals(1, message1.getStatus());
        assertEquals(1, message1.getMessage()[0]);
        assertEquals(2, message1.getMessage()[1]);
        assertEquals(3, message1.getMessage()[2]);
        assertEquals(4, message1.getMessage()[3]);
        assertEquals(5, message1.getMessage()[4]);

        ShortMessage1 message2 = new ShortMessage1(new byte[] { 95, 14 });
        assertEquals(15, message2.getChannel());
        assertEquals(80, message2.getCommand());
        assertEquals(14, message2.getData1());
        assertEquals(0, message2.getData2());
        assertEquals(2, message2.getLength());
        assertEquals(95, message2.getStatus());
        assertEquals(2, message2.getMessage().length);

        ShortMessage1 message3 = new ShortMessage1(null);
        assertEquals(0, message3.getChannel());
        assertEquals(0, message3.getCommand());
        assertEquals(0, message3.getData1());
        assertEquals(0, message3.getData2());
        assertEquals(0, message3.getLength());
        assertEquals(0, message3.getStatus());
        try {
            message3.getMessage();
            fail("NullPointerException expected");
        } catch (NullPointerException e) {}

        ShortMessage1 message4 = new ShortMessage1(new byte[] {0});
        assertEquals(0, message4.getChannel());
        assertEquals(0, message4.getCommand());
        assertEquals(0, message4.getData1());
        assertEquals(0, message4.getData2());
        assertEquals(1, message4.getLength());
        assertEquals(0, message4.getStatus());
        assertEquals(1, message4.getMessage().length);
       
        ShortMessage1 message5 = new ShortMessage1(new byte[0]);
        assertEquals(0, message5.getChannel());
        assertEquals(0, message5.getCommand());
        assertEquals(0, message5.getData1());
        assertEquals(0, message5.getData2());
        assertEquals(0, message5.getLength());
        assertEquals(0, message5.getStatus());
        assertEquals(0, message5.getMessage().length);
    }

    /**
     * test method setMessage(int) of class ShortMessage
     */
    public void test_setMessage1() throws Exception {
        ShortMessage1 message = new ShortMessage1();
        /*
         * value of variable status is more or equals 246 and
         * less or equals 255
         */
        try {
            message.setMessage(245);
            fail("InvalidMidiDataException expected");
        } catch (InvalidMidiDataException e) {}

        try {
            message.setMessage(256);
            fail("InvalidMidiDataException expected");
        } catch (InvalidMidiDataException e) {}
       
        message.setMessage(250);
        /*
         * channel change from 0 up to 15, and
         * channel + command == status, so
         * the value of command divisible by 16
         */
        assertEquals(10, message.getChannel());
        assertEquals(240, message.getCommand());
        assertEquals(0, message.getData1());
        assertEquals(0, message.getData2());
        assertEquals(1, message.getLength());
        assertEquals(250, message.getStatus());
        assertEquals(1, message.getMessage().length);
    }

    /**
     * test method setMessage(int, int, int) of
     * class ShortMessage
     */
    public void test_setMessage2() throws Exception {
        ShortMessage1 message = new ShortMessage1();
        /*
         * value of variable status is more or equals 246 and
         * less or equals 255
         */
        try {
            message.setMessage(245, 34, 56);
            fail("InvalidMidiDataException expected");
        } catch (InvalidMidiDataException e) {}
        try {
            message.setMessage(256, 34, 56);
            fail("InvalidMidiDataException expected");
        } catch (InvalidMidiDataException e) {}
       
        message.setMessage(250, 34, 56);
        /*
         * channel change from 0 up to 15, and
         * channel + command == status, so
         * the value of command divisible by 16.
         */
        assertEquals(10, message.getChannel());
        assertEquals(240, message.getCommand());
        assertEquals(0, message.getData1());
        assertEquals(0, message.getData2());
        assertEquals(1, message.getLength());
        assertEquals(250, message.getStatus());
        assertEquals(1, message.getMessage().length);
    }

    /**
     * test method setMessage(int, int, int, int) of
     * class ShortMessage
     */
    public void test_setMessage3() throws Exception {
        ShortMessage1 message = new ShortMessage1();
        /*
         * value of variable command is more or equals 128 and
         * less or equals 239
         */
        try {
            message.setMessage(127, 10, 34, 56);
            fail("InvalidMidiDataException expected");
        } catch (InvalidMidiDataException e) {}
        try {
            message.setMessage(240, 34, 56, 13);
            fail("InvalidMidiDataException expected");
        } catch (InvalidMidiDataException e) {}

        /*
         * value of variable channel is more or equals 0 and
         * less or equals 15
         */
        try {
            message.setMessage(200, -1, 34, 56);
            fail("InvalidMidiDataException expected");
        } catch (InvalidMidiDataException e) {}
        try {
            message.setMessage(200, 16, 34, 56);
            fail("InvalidMidiDataException expected");
        } catch (InvalidMidiDataException e) {}

        /*
         * value of data1 and data2 is more or equals 0 and
         * less or equals 127, but when command more or
         * equals 192 and less or equals 223 the second data,
         * data2, is unused, because getDataLength(int) return 1
         * in this case, and in other cases it return 2
         */
        try {
            message.setMessage(200, 12, -1, 56);
            fail("InvalidMidiDataException expected");
        } catch (InvalidMidiDataException e) {}

        try {
            message.setMessage(225, 8, 34, 456);
            fail("InvalidMidiDataException expected");
        } catch (InvalidMidiDataException e) {}
       
        /*
         * it's all right
         */
        message.setMessage(200, 8, 34, 456);

        message.setMessage(200, 9, 34, 56);
        /*
         * channel change from 0 up to 15
         * command must to divisible by 16, and so it less or
         * equals parameter command
         * status is sum of channel and command
         */
        assertEquals(9, message.getChannel());
        assertEquals(192, message.getCommand());
        assertEquals(34, message.getData1());
        assertEquals(0, message.getData2());
        assertEquals(2, message.getLength());
        assertEquals(201, message.getStatus());
        assertEquals(2, message.getMessage().length);

        message.setMessage(148, 9, 34, 56);
        assertEquals(9, message.getChannel());
        assertEquals(144, message.getCommand());
        assertEquals(34, message.getData1());
        assertEquals(56, message.getData2());
        assertEquals(3, message.getLength());
        assertEquals(153, message.getStatus());
        assertEquals(3, message.getMessage().length);
    }

    /**
     * test method getChannel() of class ShortMessage
     *
     */
    public void test_getChannel() throws Exception {
        ShortMessage message = new ShortMessage();
        assertEquals(0, message.getChannel());

        byte[] bt = new byte[] {23, 16, 35};
        ShortMessage1 message1 = new ShortMessage1(bt);
        assertEquals(7, message1.getChannel());
        bt[0] = 15;
        /*
         * value change
         */
        assertEquals(15, message1.getChannel());
       
        ShortMessage1 message2 = new ShortMessage1(null);
        assertEquals(0, message2.getChannel());

        message.setMessage(249);
        assertEquals(9, message.getChannel());

        message.setMessage(250, 14, 62);
        assertEquals(10, message.getChannel());

        message.setMessage(234, 15, 14, 62);
        assertEquals(15, message.getChannel());

    }

    /**
     * test method getCommand() of class ShortMessage
     *
     */
    public void test_getCommand() throws Exception {
        ShortMessage message = new ShortMessage();
        assertEquals(144, message.getCommand());

        byte[] bt = new byte[] {23, 16, 35};
        ShortMessage1 message1 = new ShortMessage1(bt);
        assertEquals(16, message1.getCommand());
        bt[0] = 4;
        /*
         * value change
         */
        assertEquals(0, message1.getCommand());

        ShortMessage1 message2 = new ShortMessage1(null);
        assertEquals(0, message2.getCommand());

        message.setMessage(249);
        assertEquals(240, message.getCommand());

        message.setMessage(250, 14, 62);
        assertEquals(240, message.getCommand());

        message.setMessage(234, 15, 14, 62);
        assertEquals(224, message.getCommand());
    }

    /**
     * test method getLength() of class ShortMessage
     *
     */
    public void test_getLength() throws Exception {
        ShortMessage message = new ShortMessage();
        assertEquals(3, message.getLength());

        ShortMessage1 message1 = new ShortMessage1(new byte[] {23, 16, 35});
        assertEquals(3, message1.getLength());

        ShortMessage1 message2 = new ShortMessage1(null);
        assertEquals(0, message2.getLength());

        message.setMessage(249);
        assertEquals(1, message.getLength());

        message.setMessage(250, 14, 62);
        assertEquals(1, message.getLength());

        message.setMessage(234, 15, 14, 62);
        assertEquals(3, message.getLength());

        message.setMessage(214, 15, 14, 62);
        assertEquals(2, message.getLength());
    }

    /**
     * test method getStatus() of class ShortMessage
     *
     */
    public void test_getStatus() throws Exception {
        ShortMessage message = new ShortMessage();
        assertEquals(144, message.getStatus());

        byte[] bt = new byte[] {23, 16, 35};
        ShortMessage1 message1 = new ShortMessage1(bt);
        assertEquals(23, message1.getStatus());
        bt[0] = 84;
        /*
         * value change
         */
        assertEquals(84, message1.getStatus());

        ShortMessage1 message2 = new ShortMessage1(null);
        assertEquals(0, message2.getStatus());

        message.setMessage(249);
        assertEquals(249, message.getStatus());

        message.setMessage(250, 14, 62);
        assertEquals(250, message.getStatus());

        message.setMessage(234, 15, 14, 62);
        assertEquals(239, message.getStatus());
    }

    /**
     * test methods getData1() and getData2() of
     * class ShortMessage
     *
     */
    public void test_getData1_2() throws Exception {
        ShortMessage message = new ShortMessage();
        assertEquals(64, message.getData1());
        assertEquals(127, message.getData2());

        byte[] bt = new byte[] { 23, 16, 35 };
        ShortMessage1 message1 = new ShortMessage1(bt);
        assertEquals(16, message1.getData1());
        assertEquals(35, message1.getData2());
        bt[1] = 84;
        bt[2] = -16;
        /*
         * values change
         */
        assertEquals(84, message1.getData1());
        assertEquals(240, message1.getData2());

        ShortMessage1 message11 = new ShortMessage1(new byte[] { 23, 16 });
        assertEquals(16, message11.getData1());
        assertEquals(0, message11.getData2());

        ShortMessage1 message12 = new ShortMessage1(new byte[] { 23 });
        assertEquals(0, message12.getData1());
        assertEquals(0, message12.getData2());

        ShortMessage1 message2 = new ShortMessage1(null);
        assertEquals(0, message2.getData1());
        assertEquals(0, message2.getData2());

        message.setMessage(249);
        assertEquals(0, message.getData1());
        assertEquals(0, message.getData2());

        message.setMessage(250, 14, 62);
        assertEquals(0, message.getData1());
        assertEquals(0, message.getData2());

        message.setMessage(234, 15, 14, 62);
        assertEquals(14, message.getData1());
        assertEquals(62, message.getData2());

        message.setMessage(198, 15, 14, 62);
        assertEquals(14, message.getData1());
        assertEquals(0, message.getData2());
       
        ShortMessage1 message15 = new ShortMessage1(new byte[] {-16, 16, 35});
        assertEquals(16, message15.getData1());
        assertEquals(35, message15.getData2());
    }

    /**
     * test method getDataLength() of class ShortMessage
     *
     */
    public void test_getDataLength() throws Exception {
        ShortMessage1 message = new ShortMessage1();

        /*
         * I have some question about this method. I didn't understand how
         * should to work this method, but some results I get by
         * experimental method.
         * From 0 up to 127, from 256 up to 383 and so on this method throw
         * out exception, i.e. after 256 begin cycle with some small
         * differences in the first lap, from 0 up to 255. From the second
         * lap and so on this method, getDataLength(int), throw out
         * exception with value of status from 496 up to 511, from 752 up to
         * 767 and so on, i.e. on the last 16 number of 256-lap.
         * And now differences in the first lap. This method don't throw out
         * exception with value of status from 240 up to 255. It has next
         * behavior:
         * - value of status equals 240 -- throw out exception;
         * - 241 -- return 1;
         * - 242 -- return 2;
         * - 243 -- return 1;
         * - from 244 up to 245 -- throw out exception;
         * - from 246 up to 255 -- return 0;
         */
        try {
            message.getDataLength1(-1);
            fail("InvalidMidiDataException expected");
        } catch (InvalidMidiDataException e) {}

        try {
            message.getDataLength1(56);
            fail("InvalidMidiDataException expected");
        } catch (InvalidMidiDataException e) {}

        try {
            message.getDataLength1(127);
            fail("InvalidMidiDataException expected");
        } catch (InvalidMidiDataException e) {}

        try {
            message.getDataLength1(240);
            fail("InvalidMidiDataException expected");
        } catch (InvalidMidiDataException e) {}

        try {
            message.getDataLength1(244);
            fail("InvalidMidiDataException expected");
        } catch (InvalidMidiDataException e) {}

        try {
            message.getDataLength1(245);
            fail("InvalidMidiDataException expected");
        } catch (InvalidMidiDataException e) {}

        try {
            message.getDataLength1(256);
            fail("InvalidMidiDataException expected");
        } catch (InvalidMidiDataException e) {}

        try {
            message.getDataLength1(519);
            fail("InvalidMidiDataException expected");
        } catch (InvalidMidiDataException e) {}

        assertEquals(2, message.getDataLength1(128));
        assertEquals(1, message.getDataLength1(200));
        assertEquals(2, message.getDataLength1(230));
        assertEquals(1, message.getDataLength1(241));
        assertEquals(2, message.getDataLength1(242));
        assertEquals(1, message.getDataLength1(243));
        assertEquals(0, message.getDataLength1(250));
        assertEquals(2, message.getDataLength1(647));
    }

    /**
     * tests method clone() of class ShortMessage
     *
     */
    public void test_clone1() {
        ShortMessage message = new ShortMessage();
        assertTrue(message.clone() != message);
        assertEquals(message.clone().getClass(), message.getClass());
        ShortMessage tmessage;
        tmessage = (ShortMessage) message.clone();
        assertEquals(message.getLength(), tmessage.getLength());
        assertEquals(message.getMessage().length, tmessage.getMessage().length);
        assertEquals(message.getData1(), tmessage.getData1());
        assertEquals(message.getData2(), tmessage.getData2());
        assertEquals(message.getChannel(), tmessage.getChannel());
        assertEquals(message.getCommand(), tmessage.getCommand());
        assertEquals(message.getStatus(), tmessage.getStatus());
        if (message.getMessage().length != 0) {
            for (int i = 0; i < message.getMessage().length; i++) {
                assertEquals(message.getMessage()[i], tmessage.getMessage()[i]);
            }
        }
    }
   
    public void test_clone2() {
        byte[] bt = new byte[] {1, 2, 3, 4, 5};
        ShortMessage1 message = new ShortMessage1(bt);
        assertTrue(message.clone() != message);
       
        ShortMessage tmessage;
        tmessage = (ShortMessage) message.clone();
        assertEquals(message.getLength(), tmessage.getLength());
        assertEquals(message.getMessage().length, tmessage.getMessage().length);
        assertEquals(message.getData1(), tmessage.getData1());
        assertEquals(message.getData2(), tmessage.getData2());
        assertEquals(message.getChannel(), tmessage.getChannel());
        assertEquals(message.getCommand(), tmessage.getCommand());
        assertEquals(message.getStatus(), tmessage.getStatus());
        if (message.getMessage().length != 0) {
            for (int i = 0; i < message.getMessage().length; i++) {
                assertEquals(message.getMessage()[i], tmessage.getMessage()[i]);
            }
        }
        bt[0] = 10;
        bt[1] = 20;
        bt[2] = 30;
        bt[3] = 40;
        bt[4] = 50;
        /*
         * 'real' ShortMessage change, but 'clone' not
         */
        //'real'
        assertEquals(10, message.getChannel());
        assertEquals(0, message.getCommand());
        assertEquals(20, message.getData1());
        assertEquals(30, message.getData2());
        assertEquals(10, message.getStatus());
        assertEquals(10, message.getMessage()[0]);
        assertEquals(20, message.getMessage()[1]);
        assertEquals(30, message.getMessage()[2]);
        assertEquals(40, message.getMessage()[3]);
        assertEquals(50, message.getMessage()[4]);
        //'clone'
        assertEquals(1, tmessage.getChannel());
        assertEquals(0, tmessage.getCommand());
        assertEquals(2, tmessage.getData1());
        assertEquals(3, tmessage.getData2());
        assertEquals(1, tmessage.getStatus());
        assertEquals(1, tmessage.getMessage()[0]);
        assertEquals(2, tmessage.getMessage()[1]);
        assertEquals(3, tmessage.getMessage()[2]);
        assertEquals(4, tmessage.getMessage()[3]);
        assertEquals(5, tmessage.getMessage()[4]);
    }
   
    public void test_clone3() throws Exception {
        ShortMessage message = new ShortMessage();
        message.setMessage(150, 14, 45, 60);
        assertTrue(message.clone() != message);
        assertEquals(message.clone().getClass(), message.getClass());
        ShortMessage tmessage;
        tmessage = (ShortMessage) message.clone();
        assertEquals(message.getLength(), tmessage.getLength());
        assertEquals(message.getMessage().length, tmessage.getMessage().length);
        assertEquals(message.getData1(), tmessage.getData1());
        assertEquals(message.getData2(), tmessage.getData2());
        assertEquals(message.getChannel(), tmessage.getChannel());
        assertEquals(message.getCommand(), tmessage.getCommand());
        assertEquals(message.getStatus(), tmessage.getStatus());
        if (message.getMessage().length != 0) {
            for (int i = 0; i < message.getMessage().length; i++) {
                assertEquals(message.getMessage()[i], tmessage.getMessage()[i]);
            }
        }
    }

    /**
     * Subsidiary class in order to use constructor
     * and method getDataLength( int ) of class Instrument,
     * because its declared as protected
     */
    static class ShortMessage1 extends ShortMessage {

        ShortMessage1() {
            super();
        }

        ShortMessage1(byte[] data) {
            super(data);
        }

        public int getDataLength1(int status) throws InvalidMidiDataException {
            return super.getDataLength(status);
        }
    }
}
TOP

Related Classes of org.apache.harmony.sound.tests.javax.sound.midi.ShortMessageTest$ShortMessage1

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.