void testExecute(){
        Sequence sequence( "foo", 1, 4, 4, 500000 );
        Track track( "name", "singer" );
        track.events()->clear();
        Event singer( 0, EventType::SINGER );
        track.events()->add( singer, 1 );
        Event note( 1920, EventType::NOTE );
        note.note = 60;
        track.events()->add( note, 2 );
        *sequence.track(0) = track;

        Event editedNote = note;
        editedNote.note = 61;
        EditEventCommand command( 0, 2, editedNote );
        AbstractCommand *inverseCommand = command.execute( &sequence );

        CPPUNIT_ASSERT_EQUAL(61, sequence.track(0)->events()->findFromId(2)->note);

        AbstractCommand *garbage = inverseCommand->execute( &sequence );
        CPPUNIT_ASSERT_EQUAL(60, sequence.track(0)->events()->findFromId(2)->note);

        delete inverseCommand;
        delete garbage;
    }