From: Max Waterman Date: Fri, 16 Apr 2010 08:30:09 +0000 (+0300) Subject: Changes: added routes with transfers (only displays first bus) and version 0.4 X-Git-Url: http://vcs.maemo.org/git/?p=ptas;a=commitdiff_plain;h=1b2829989f74c2445a5388a5d95a734e48a95352 Changes: added routes with transfers (only displays first bus) and version 0.4 --- diff --git a/zouba/debian/changelog b/zouba/debian/changelog index 17873fb..ddef629 100644 --- a/zouba/debian/changelog +++ b/zouba/debian/changelog @@ -1,3 +1,10 @@ +zouba (0.4) unstable; urgency=low + + * Fix for routes with bus changes (only displays first bus) + * Added and cleaned up ut_route + + -- Max Waterman Fri, 16 Apr 2010 11:28:00 +0200 + zouba (0.3) unstable; urgency=low * Fix for app manager icon diff --git a/zouba/src/route_p.cpp b/zouba/src/route_p.cpp index 8cb2c7f..b9783ab 100644 --- a/zouba/src/route_p.cpp +++ b/zouba/src/route_p.cpp @@ -4,6 +4,7 @@ #include #include #include +#include RoutePrivate::RoutePrivate( QObject *parent ) : m_fromValid(false), @@ -21,54 +22,68 @@ RoutePrivate::~RoutePrivate() QList RoutePrivate::parseReply( const QByteArray &reply ) { qDebug() << "parsing route"; + QFile file( "/home/user/route.txt" ); + if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { + QTextStream out(&file); + out << reply; + file.close(); + } else { + qDebug() << "Could not open /home/user/route.txt"; + } + QList retVal; RouteData routeData; QXmlStreamReader xml( reply ); - bool haveLine = false; - bool haveTime = false; + QHash in; + QHash have; + + have[ "LINE" ] = false; + have[ "TIME" ] = false; + + in[ "ROUTE" ] = false; + in[ "LINE" ] = false; + in[ "STOP" ] = false; - bool inLine = false; - bool inStop = false; while ( !xml.atEnd() ) { xml.readNext(); - if ( xml.isStartElement() && xml.name() == "LINE" ) { + if ( xml.isStartElement() ) { + in[ xml.name().toString() ] = true; + + if ( xml.name() == "ROUTE" ) { + have[ "TIME" ] = false; + have[ "LINE" ] = false; + } + } + + if ( xml.isEndElement() ) { + in[ xml.name().toString() ] = false; + } + + if ( !have[ "LINE" ] && in[ "ROUTE" ] && xml.isStartElement() && xml.name() == "LINE" ) { QString lineCode( xml.attributes().value("code").toString() ); routeData.lineCode = parseJORECode( lineCode ); - haveLine = true; - - inLine = true; - } else - if ( inLine && xml.name() == "STOP" ) { - inStop = true; - } else - if ( inLine && inStop && xml.name() == "ARRIVAL" ) { - QString arrivalTime( xml.attributes().value("time").toString() ); + have[ "LINE" ] = true; - routeData.arrivalTime = arrivalTime.rightJustified(4).insert(2,":"); - haveTime = true; - - inLine = false; - } else - if ( xml.isEndElement() && xml.name() == "STOP" ) { - inStop = false; - haveTime = false; - } else - if ( xml.isEndElement() && xml.name() == "LINE" ) { - inLine = false; - haveLine = false; + if ( have[ "LINE" ] && have[ "TIME" ] ) { + retVal.append( routeData ); + } } - if ( haveLine && haveTime ) { - retVal.append( routeData ); + if ( !have[ "TIME" ] && in[ "ROUTE" ] && in[ "LINE" ] && in[ "STOP" ] && xml.name() == "ARRIVAL" ) { + QString arrivalTime( xml.attributes().value("time").toString() ); - // only want first STOP per LINE - haveTime = false; - haveLine = false; + routeData.arrivalTime = arrivalTime.rightJustified(4).insert(2,":"); + have[ "TIME" ] = true; + + if ( have[ "LINE" ] && have[ "TIME" ] ) { + retVal.append( routeData ); + } } + } if ( xml.hasError() ) { diff --git a/zouba/src/routedata.h b/zouba/src/routedata.h index a2abd31..8600b2b 100644 --- a/zouba/src/routedata.h +++ b/zouba/src/routedata.h @@ -5,6 +5,18 @@ struct RouteData { + RouteData(): + lineCode(), + arrivalTime() + { + }; + + RouteData( QString lineCode, QString arrivalTime ): + lineCode(lineCode), + arrivalTime(arrivalTime) + { + }; + QString lineCode; QString arrivalTime; }; diff --git a/zouba/tests/ut_route/ut_route.cpp b/zouba/tests/ut_route/ut_route.cpp index bb34092..ed4cb45 100644 --- a/zouba/tests/ut_route/ut_route.cpp +++ b/zouba/tests/ut_route/ut_route.cpp @@ -3,340 +3,7 @@ #include #include "ut_route.h" -QByteArray sampleInput( -"\ -\ -\ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ - \ -\ -" -); +#include "ut_sampleinput.h" void Ut_Route::init() { @@ -359,15 +26,41 @@ void Ut_Route::cleanupTestCase() void Ut_Route::testParseReply() { - QList routeData = m_subject->parseReply( sampleInput ); + QFETCH(QByteArray, xmlInput); + QFETCH(QList, expectedResults); - QVERIFY( routeData.count()==3 ); - QCOMPARE( routeData.at(0).lineCode, QString( "65A" ) ); - QCOMPARE( routeData.at(0).arrivalTime, QString( "18:20" ) ); - QCOMPARE( routeData.at(1).lineCode, QString( "102T" ) ); - QCOMPARE( routeData.at(1).arrivalTime, QString( "18:26" ) ); - QCOMPARE( routeData.at(2).lineCode, QString( "110T" ) ); - QCOMPARE( routeData.at(2).arrivalTime, QString( "18:34" ) ); + QList routeData = m_subject->parseReply( xmlInput ); + + QCOMPARE( routeData.count(), expectedResults.count() ); + + for( int index=0; index("xmlInput"); + QTest::addColumn< QList >("expectedResults"); + + QTest::newRow("single route") + << sampleInput[0] + << ( QList() + << RouteData( "65A", "18:20" ) + << RouteData( "102T", "18:26" ) + << RouteData( "110T", "18:34" ) + ); + + QTest::newRow("route with bus change") + << sampleInput[1] + << ( QList() + << RouteData( "111", "08:18" ) + << RouteData( "111", "08:33" ) + << RouteData( "111T", "08:34" ) + << RouteData( "111", "08:50" ) + << RouteData( "111", "09:07" ) + ); } void Ut_Route::testSetFromLocation() diff --git a/zouba/tests/ut_route/ut_route.h b/zouba/tests/ut_route/ut_route.h index 8571d3b..a444405 100644 --- a/zouba/tests/ut_route/ut_route.h +++ b/zouba/tests/ut_route/ut_route.h @@ -7,6 +7,7 @@ #include Q_DECLARE_METATYPE(RoutePrivate*); +Q_DECLARE_METATYPE(QList); class Ut_Route : public QObject { @@ -20,6 +21,7 @@ private slots: void initTestCase(); void cleanupTestCase(); void testParseReply(); + void testParseReply_data(); void testSetFromLocation(); void testSetToLocation(); diff --git a/zouba/tests/ut_route/ut_sampleinput.h b/zouba/tests/ut_route/ut_sampleinput.h new file mode 100644 index 0000000..ec38afe --- /dev/null +++ b/zouba/tests/ut_route/ut_sampleinput.h @@ -0,0 +1,1238 @@ + +QByteArray sampleInput[2] = { +"\ +\ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ +\ +", + +"\ +\ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ +\ +" +}; +