/*
    Copyright 2004  Frerich Raabe <raabe@kde.org>

    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
    published by the Free Software Foundation; either version 2 of
    the License, or (at your option) version 3.

    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 General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#include "kaccelgen.h"

#include <QtCore/QStringList>

#include <iostream>

using std::cout;
using std::endl;

void check( const QString &what, const QStringList &expected, const QStringList &received )
{
    cout << "Testing " << qPrintable( what ) << ": ";
    if ( expected == received ) {
        cout << "ok" << endl;
    } else {
        cout << "ERROR!" << endl;
        cout << "Expected: " << qPrintable( expected.join( "," ) ) << endl;
        cout << "Received: " << qPrintable( received.join( "," ) ) << endl;
    }
}

int main()
{
    QStringList input;
    input << "foo" << "bar item" << "&baz" << "bif" << "boz" << "boz 2"
	      << "yoyo && dyne";

    QStringList expected;
    expected << "&foo" << "bar &item" << "&baz" << "bif" << "b&oz" << "boz &2"
	         << "&yoyo && dyne";

    QStringList output;
    KAccelGen::generate( input, output );
    check( "QStringList value generation", expected, output );

    QMap<QString,QString> map;
    for (QStringList::ConstIterator it = input.begin(); it != input.end(); ++it) {
        map.insert(*it, *it);
    }
    input.sort();
    expected.clear();
    KAccelGen::generate( input, expected );

    output.clear();
    KAccelGen::generateFromValues( map, output );
    check( "map value generation", expected, output );

    output.clear();
    KAccelGen::generateFromKeys( map, output );
    check( "map key generation", expected, output );
}
