From: <rab...@us...> - 2007-04-22 14:05:39
|
Revision: 8020 http://svn.sourceforge.net/rosegarden/?rev=8020&view=rev Author: raboofje Date: 2007-04-22 07:05:38 -0700 (Sun, 22 Apr 2007) Log Message: ----------- some simple unittest-ish tests for accidental-resolving Modified Paths: -------------- trunk/rosegarden/src/base/test/Makefile trunk/rosegarden/src/base/test/transpose.cpp Added Paths: ----------- trunk/rosegarden/src/base/test/accidentals.cpp Modified: trunk/rosegarden/src/base/test/Makefile =================================================================== --- trunk/rosegarden/src/base/test/Makefile 2007-04-22 14:04:24 UTC (rev 8019) +++ trunk/rosegarden/src/base/test/Makefile 2007-04-22 14:05:38 UTC (rev 8020) @@ -9,10 +9,10 @@ SRCS := test.C pitch.C -default: test utf8 colour transpose +default: test utf8 colour transpose accidentals clean: - rm -f test test.o pitch pitch.o utf8 utf8.o colour colour.o transpose.o transpose + rm -f test test.o pitch pitch.o utf8 utf8.o colour colour.o transpose.o transpose accidentals.o accidentals %.o: %.cpp $(CXX) $(CPPFLAGS) -c $< $(INCPATH) -o $@ @@ -32,7 +32,10 @@ transpose: transpose.o $(CXX) $< $(LIBBASE) -o $@ +accidentals: accidentals.o + $(CXX) $< $(LIBBASE) -o $@ + depend: makedepend $(INCPATH) -- $(CPPFLAGS) -- $(SRCS) @@ -51,3 +54,4 @@ pitch.o: ../XmlExportable.h #../StringHash.h transpose.o: ../NotationTypes.h +accidentals.o: ../NotationTypes.h Added: trunk/rosegarden/src/base/test/accidentals.cpp =================================================================== --- trunk/rosegarden/src/base/test/accidentals.cpp (rev 0) +++ trunk/rosegarden/src/base/test/accidentals.cpp 2007-04-22 14:05:38 UTC (rev 8020) @@ -0,0 +1,60 @@ +// -*- c-basic-offset: 4 -*- + +#include "NotationTypes.h" + +using namespace Rosegarden; +using std::cout; + +// Unit test-ish tests for resolving accidentals +// +// Returns -1 (or crashes :)) on error, 0 on success +void assertHasAccidental(Pitch &pitch, + const Accidental& accidental, const Key& key) +{ + Accidental calculatedAccidental = + pitch.getAccidental(key); + + std::cout << "Got " << calculatedAccidental << " for pitch " << pitch.getPerformancePitch() << " in key " << key.getName() << std::endl; + + if (calculatedAccidental != accidental) + { + std::cout << "Expected " << accidental << std::endl; + exit(-1); + } +} + +void testBInEMinor() +{ + // a B, also in E minor, has no accidental + Pitch testPitch(59 % 12); + assertHasAccidental(testPitch, + Accidentals::NoAccidental, Key("E minor")); +} + +/** + * + */ +void testFInBMinor() +{ + Pitch testPitch(77); + assertHasAccidental(testPitch, + Accidentals::NoAccidental, Key("B minor")); +} + +void testInvalidSuggestion() +{ + // If we specify an invalid suggestion, + // getAccidental() should be robust against that. + Pitch testPitch = Pitch(59, Accidentals::Sharp); + assertHasAccidental(testPitch, + Accidentals::NoAccidental, Key("E minor")); +} + +int main(int argc, char **argv) +{ + testBInEMinor(); + testFInBMinor(); + testInvalidSuggestion(); + std::cout << "Success" << std::endl; + exit(0); +} Modified: trunk/rosegarden/src/base/test/transpose.cpp =================================================================== --- trunk/rosegarden/src/base/test/transpose.cpp 2007-04-22 14:04:24 UTC (rev 8019) +++ trunk/rosegarden/src/base/test/transpose.cpp 2007-04-22 14:05:38 UTC (rev 8020) @@ -9,6 +9,21 @@ // // Returns -1 (or crashes :)) on error, 0 on success +/** + * should be in Pitch eventually + */ +void testAisDisplayAccidentalInCmaj() +{ + Pitch ais(70, Accidentals::Sharp); + Key cmaj ("C major"); + Accidental accidental = ais.getDisplayAccidental(cmaj); + if (accidental != Accidentals::Sharp) + { + std::cout << "Accidental for A# in Cmaj was " << accidental << " instead of expected Sharp" << std::endl; + exit(-1); + } +} + /** * transpose an A# up by a major second, should * yield a B# (as C would be a minor triad) @@ -17,15 +32,15 @@ { std::cout << "Testing transposing A# to B#... "; Pitch ais(70, Accidentals::Sharp); - Key* cmaj = new Key(); + Key cmaj ("C major"); - Pitch result = ais.transpose(*cmaj, 2, 1); + Pitch result = ais.transpose(cmaj, 2, 1); - Accidental resultAccidental = result.getAccidental(*cmaj); + Accidental resultAccidental = result.getAccidental(cmaj); int resultPitch = result.getPerformancePitch(); if (resultAccidental != Accidentals::Sharp || resultPitch != 72) { - std::cout << "Transposing A# up by a major second didn't yield B#, but " << result.getNoteName(*cmaj) << resultAccidental << std::endl; + std::cout << "Transposing A# up by a major second didn't yield B#, but " << result.getNoteName(cmaj) << resultAccidental << std::endl; exit(-1); } std::cout << "Success" << std::endl; @@ -44,7 +59,7 @@ Accidental resultAccidental = result.getAccidental(*dmaj); int resultPitch = result.getPerformancePitch(); - if (resultAccidental != Accidentals::Natural || resultPitch != 74) + if (resultAccidental != Accidentals::NoAccidental || resultPitch != 74) { std::cout << "Transposing G up by a fifth didn't yield D, but " << result.getNoteName(*dmaj) << resultAccidental << std::endl; exit(-1); @@ -59,6 +74,7 @@ int main(int argc, char **argv) { + testAisDisplayAccidentalInCmaj(); testAisToBis(); testGToD(); testKeyTransposition(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |