Improve testPrintD

Summary:
 - swap out manual management for a PrintDHelper class that allocates
   an action and MessageBoxHelper, runs the script, and checks the
   result.
 - use _data() to run the helper with different data; this improves
   observability as well.

Test Plan:  - Run tests, see same results as before

Subscribers: okular-devel

Tags: #okular

Differential Revision: https://phabricator.kde.org/D23164
remotes/origin/more-conventional-sidebar
Adriaan de Groot 7 years ago committed by Albert Astals Cid
parent a7845890b3
commit 1c1a073c34
  1. 98
      autotests/kjsfunctionstest.cpp

@ -90,6 +90,7 @@ private slots:
void cleanupTestCase(); void cleanupTestCase();
void testAlert(); void testAlert();
void testPrintD(); void testPrintD();
void testPrintD_data();
#endif #endif
private: private:
Okular::Document *m_document; Okular::Document *m_document;
@ -310,53 +311,68 @@ void KJSFunctionsTest::testAlert()
delete action; delete action;
} }
void KJSFunctionsTest::testPrintD() /** @brief Checks a single JS action against an expected result
*
* Runs an action with the given @p script and checks that it
* does pop-up a messagebox with the given @p result text.
*/
class PrintDHelper
{ {
Okular::ScriptAction *action = new Okular::ScriptAction( Okular::JavaScript, public:
QStringLiteral( "var date = new Date( 2010, 0, 5, 11, 10, 32, 1 );\ PrintDHelper( Okular::Document* document, const QString& script, const QString& result ) :
ret = app.alert( util.printd( \"mm\\\\yyyy\", date ) );" ) ); action( new Okular::ScriptAction( Okular::JavaScript, script ) ),
QScopedPointer< MessageBoxHelper > messageBoxHelper; box( new MessageBoxHelper( QMessageBox::Ok, result, QMessageBox::Critical, QStringLiteral( "Okular" ), false ) )
messageBoxHelper.reset( new MessageBoxHelper( QMessageBox::Ok, QStringLiteral( "01\\2010" ), QMessageBox::Critical, QStringLiteral( "Okular" ), false ) ); {
m_document->processAction( action ); document->processAction( action.get() );
delete action; }
private:
action = new Okular::ScriptAction( Okular::JavaScript, QStringLiteral( "ret = app.alert( util.printd( \"m\\\\yy\", date ) );" ) ); QScopedPointer< Okular::ScriptAction > action;
messageBoxHelper.reset( new MessageBoxHelper( QMessageBox::Ok, QStringLiteral( "1\\10" ), QMessageBox::Critical, QStringLiteral( "Okular" ), false ) ); QScopedPointer< MessageBoxHelper > box;
m_document->processAction( action ); } ;
delete action;
action = new Okular::ScriptAction( Okular::JavaScript, QStringLiteral( "ret = app.alert( util.printd( \"dd\\\\mm HH:MM\", date ) );" ) );
messageBoxHelper.reset( new MessageBoxHelper( QMessageBox::Ok, QStringLiteral( "05\\01 11:10" ), QMessageBox::Critical, QStringLiteral( "Okular" ), false ) );
m_document->processAction( action );
delete action;
action = new Okular::ScriptAction( Okular::JavaScript, QStringLiteral( "ret = app.alert( util.printd( \"dd\\\\mm HH:MM:ss\", date ) );" ) );
messageBoxHelper.reset( new MessageBoxHelper( QMessageBox::Ok, QStringLiteral( "05\\01 11:10:32" ), QMessageBox::Critical, QStringLiteral( "Okular" ), false ) );
m_document->processAction( action );
delete action;
action = new Okular::ScriptAction( Okular::JavaScript, QStringLiteral( "ret = app.alert( util.printd( \"yyyy\\\\mm HH:MM:ss\", date ) );" ) );
messageBoxHelper.reset( new MessageBoxHelper( QMessageBox::Ok, QStringLiteral( "2010\\01 11:10:32" ), QMessageBox::Critical, QStringLiteral( "Okular" ), false ) );
m_document->processAction( action );
delete action;
action = new Okular::ScriptAction( Okular::JavaScript, QStringLiteral( "ret = app.alert( util.printd( 0, date ) );" ) );
messageBoxHelper.reset( new MessageBoxHelper( QMessageBox::Ok, QStringLiteral( "D:20100105111032" ), QMessageBox::Critical, QStringLiteral( "Okular" ), false ) );
m_document->processAction( action );
delete action;
action = new Okular::ScriptAction( Okular::JavaScript, QStringLiteral( "ret = app.alert( util.printd( 1, date ) );" ) ); void KJSFunctionsTest::testPrintD_data()
messageBoxHelper.reset( new MessageBoxHelper( QMessageBox::Ok, QStringLiteral( "2010.01.05 11:10:32" ), QMessageBox::Critical, QStringLiteral( "Okular" ), false ) ); {
m_document->processAction( action ); QTest::addColumn<QString>("script");
delete action; QTest::addColumn<QString>("result");
QTest::newRow("mmyyy")
<< QStringLiteral( "var date = new Date( 2010, 0, 5, 11, 10, 32, 1 );\
ret = app.alert( util.printd( \"mm\\\\yyyy\", date ) );" )
<< QStringLiteral( "01\\2010" );
QTest::newRow("myy")
<< QStringLiteral( "ret = app.alert( util.printd( \"m\\\\yy\", date ) );" )
<< QStringLiteral( "1\\10" );
QTest::newRow("ddmmHHMM")
<< QStringLiteral( "ret = app.alert( util.printd( \"dd\\\\mm HH:MM\", date ) );" )
<< QStringLiteral( "05\\01 11:10" );
QTest::newRow("ddmmHHMMss")
<< QStringLiteral( "ret = app.alert( util.printd( \"dd\\\\mm HH:MM:ss\", date ) );" )
<< QStringLiteral( "05\\01 11:10:32" );
QTest::newRow("yyyymmHHMMss")
<< QStringLiteral( "ret = app.alert( util.printd( \"yyyy\\\\mm HH:MM:ss\", date ) );" )
<< QStringLiteral( "2010\\01 11:10:32" );
QTest::newRow("0")
<< QStringLiteral( "ret = app.alert( util.printd( 0, date ) );" )
<< QStringLiteral( "D:20100105111032" );
QTest::newRow("1")
<< QStringLiteral( "ret = app.alert( util.printd( 1, date ) );" )
<< QStringLiteral( "2010.01.05 11:10:32" );
action = new Okular::ScriptAction( Okular::JavaScript, QStringLiteral( "ret = app.alert( util.printd( 2, date ) );" ) );
QLocale locale = QLocale::system(); QLocale locale = QLocale::system();
QDate date( 2010, 1, 5 ); QDate date( 2010, 1, 5 );
messageBoxHelper.reset( new MessageBoxHelper( QMessageBox::Ok, date.toString( locale.dateFormat( QLocale::ShortFormat ) ) + QStringLiteral( " 11:10:32" ), QMessageBox::Critical, QTest::newRow("2")
QStringLiteral( "Okular" ), false ) ); << QStringLiteral( "ret = app.alert( util.printd( 2, date ) );" )
m_document->processAction( action ); << QString( date.toString( locale.dateFormat( QLocale::ShortFormat ) ) + QStringLiteral( " 11:10:32" ) );
delete action; }
void KJSFunctionsTest::testPrintD()
{
QFETCH(QString, script);
QFETCH(QString, result);
QVERIFY( script.contains( "printd" ) );
PrintDHelper test( m_document, script, result );
} }
void KJSFunctionsTest::cleanupTestCase() void KJSFunctionsTest::cleanupTestCase()

Loading…
Cancel
Save