/*
* Catroid: An on-device visual programming system for Android devices
* Copyright (C) 2010-2016 The Catrobat Team
* (<http://developer.catrobat.org/credits>)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* An additional term exception under section 7 of the GNU Affero
* General Public License, version 3, is available at
* http://developer.catrobat.org/license_additional_term
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.catrobat.catroid.test.pocketmusic.note;
import android.test.AndroidTestCase;
import org.catrobat.catroid.pocketmusic.note.MusicalKey;
import org.catrobat.catroid.pocketmusic.note.NoteName;
public class NoteNameTest extends AndroidTestCase {
public void testMidi() {
NoteName[] noteNames = new NoteName[] { NoteName.C1, NoteName.C2, NoteName.C3, NoteName.C4,
NoteName.C5, NoteName.C6, NoteName.C7, NoteName.C8, };
int startMidi = 24;
int increment = 12;
for (int i = 0; i < noteNames.length; i++) {
int midi = startMidi + i * increment;
assertEquals("Midi test failed", midi, noteNames[i].getMidi());
}
}
public void testNext1() {
NoteName noteName = NoteName.B0;
NoteName nextNoteName = NoteName.C1;
assertEquals("Next note not valid", nextNoteName, noteName.next());
}
public void testNext2() {
NoteName lastNoteName = NoteName.C8;
assertEquals("Next note not valid", lastNoteName, lastNoteName.next());
}
public void testPrevious1() {
NoteName noteName = NoteName.C1;
NoteName previousNoteName = NoteName.B0;
assertEquals("Previous note not valid", previousNoteName, noteName.previous());
}
public void testPrevious2() {
NoteName firstNoteName = NoteName.A0;
assertEquals("Previous note not valid", firstNoteName, firstNoteName.previous());
}
public void testIsSigned1() {
NoteName noteName = NoteName.C1;
assertFalse("Note not signed correctly", noteName.isSigned());
}
public void testIsSigned2() {
NoteName noteName = NoteName.C1S;
assertTrue("Note not signed correctly", noteName.isSigned());
}
public void testGetNoteNameFromMidiValue1() {
NoteName expectedNoteName = NoteName.A0;
int midiValue = expectedNoteName.getMidi();
NoteName actualNoteName = NoteName.getNoteNameFromMidiValue(midiValue);
assertEquals("Invalid Note name", actualNoteName, expectedNoteName);
}
public void testGetNoteNameFromMidiValue2() {
NoteName expectedNoteName = NoteName.C8;
int midiValue = expectedNoteName.getMidi();
NoteName actualNoteName = NoteName.getNoteNameFromMidiValue(midiValue);
assertEquals("Invalid Note name", actualNoteName, expectedNoteName);
}
public void testGetNoteNameFromMidiValue3() {
NoteName expectedNoteName = NoteName.C4;
int midiValue = expectedNoteName.getMidi();
NoteName actualNoteName = NoteName.getNoteNameFromMidiValue(midiValue);
assertEquals("Invalid Note name", actualNoteName, expectedNoteName);
}
public void testGetNoteNameFromMidiValue4() {
NoteName expectedNoteName = NoteName.C4;
NoteName actualNoteName = NoteName.getNoteNameFromMidiValue(1337);
assertEquals("Invalid Note name", actualNoteName, expectedNoteName);
}
public void testCalculateDistanceCountingNoneSignedNotesOnly1() {
NoteName noteName1 = NoteName.D1;
NoteName noteName2 = NoteName.C1S;
int expectedDistance = 1;
assertEquals("Failed to calculate distance", expectedDistance, NoteName
.calculateDistanceCountingNoneSignedNotesOnly(noteName1, noteName2));
}
public void testCalculateDistanceCountingNoneSignedNotesOnly2() {
NoteName noteName1 = NoteName.C1;
NoteName noteName2 = NoteName.C1S;
int expectedDistance = 0;
assertEquals("Failed to calculate distance", expectedDistance, NoteName.calculateDistanceCountingNoneSignedNotesOnly(noteName1, noteName2));
}
public void testCalculateDistanceCountingNoneSignedNotesOnly3() {
NoteName noteName1 = NoteName.D3;
NoteName noteName2 = NoteName.B3;
int expectedDistance = -5;
assertEquals("Failed to calculate distance", expectedDistance, NoteName.calculateDistanceCountingNoneSignedNotesOnly(noteName1, noteName2));
}
public void testCalculateDistanceToMiddleLineCountingSignedNotesOnly1() {
NoteName noteName = NoteName.B4;
MusicalKey key = MusicalKey.VIOLIN;
int expectedDistance = 0;
assertEquals("Failed to calculate distance", expectedDistance, NoteName
.calculateDistanceToMiddleLineCountingSignedNotesOnly(key, noteName));
}
public void testCalculateDistanceToMiddleLineCountingSignedNotesOnly2() {
NoteName noteName = NoteName.C5;
MusicalKey key = MusicalKey.VIOLIN;
int expectedDistance = -1;
assertEquals("Failed to calculate distance", expectedDistance, NoteName
.calculateDistanceToMiddleLineCountingSignedNotesOnly(key, noteName));
}
public void testCalculateDistanceToMiddleLineCountingSignedNotesOnly3() {
NoteName noteName = NoteName.A4;
MusicalKey key = MusicalKey.VIOLIN;
int expectedDistance = 1;
assertEquals("Failed to calculate distance", expectedDistance, NoteName
.calculateDistanceToMiddleLineCountingSignedNotesOnly(key, noteName));
}
}