summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2010-11-05 08:23:14 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2010-11-05 08:23:14 (GMT)
commit334347669839844468d19a297ed780c3e8fdcfa5 (patch)
treedbad5ab92ec900fc143ab054538adff95f01c492 /tests
parentc791b300b288635ed018d50c5e6e28859b374b5e (diff)
parentc32ec4e928895a85aa10ce47a73c2bd439e7fc89 (diff)
downloadQt-334347669839844468d19a297ed780c3e8fdcfa5.zip
Qt-334347669839844468d19a297ed780c3e8fdcfa5.tar.gz
Qt-334347669839844468d19a297ed780c3e8fdcfa5.tar.bz2
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2: More fix for QTBUG-14640:oci performance problem with qlonglong Doc: Fixing typo Fixed grabWidget sometimes returning uninitialized memory. Fix Malayalam Rendering - 'Ra' is PreBase Update .def files for QtGui and QtOpenVG Use 32bit textures for alpha textures after all. One more fix for dithering. Doc: Fixing typo Fix QTBUG-14640:oci performance problem with qlonglong 32bit => 16bit conversion has 4byte-aligned output. Fix gcc bug in qReallocAligned Prevented threading related crash in OpenGL module. Fix possible crash in QStaticText and QDeclarativeTextLayout Fix QTBUG-14132 oracle (xe) stored procedures with bind variables get errors
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qgl/tst_qgl.cpp118
-rw-r--r--tests/auto/qpixmap/tst_qpixmap.cpp2
-rw-r--r--tests/auto/qsqldatabase/tst_databases.h2
-rw-r--r--tests/auto/qsqlquery/tst_qsqlquery.cpp131
4 files changed, 250 insertions, 3 deletions
diff --git a/tests/auto/qgl/tst_qgl.cpp b/tests/auto/qgl/tst_qgl.cpp
index e411508..4220b45 100644
--- a/tests/auto/qgl/tst_qgl.cpp
+++ b/tests/auto/qgl/tst_qgl.cpp
@@ -96,6 +96,7 @@ private slots:
void shareRegister();
void qglContextDefaultBindTexture();
void textureCleanup();
+ void threadImages();
};
tst_QGL::tst_QGL()
@@ -2253,6 +2254,123 @@ void tst_QGL::textureCleanup()
#endif
}
+namespace ThreadImages {
+
+class Producer : public QObject
+{
+ Q_OBJECT
+public:
+ Producer()
+ {
+ startTimer(20);
+
+ QThread *thread = new QThread;
+ thread->start();
+
+ connect(this, SIGNAL(destroyed()), thread, SLOT(quit()));
+
+ moveToThread(thread);
+ connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
+ }
+
+signals:
+ void imageReady(const QImage &image);
+
+protected:
+ void timerEvent(QTimerEvent *)
+ {
+ QImage image(256, 256, QImage::Format_RGB32);
+ QLinearGradient g(0, 0, 0, 256);
+ g.setColorAt(0, QColor(255, 180, 180));
+ g.setColorAt(1, Qt::white);
+ g.setSpread(QGradient::ReflectSpread);
+
+ QBrush brush(g);
+ brush.setTransform(QTransform::fromTranslate(0, delta));
+ delta += 10;
+
+ QPainter p(&image);
+ p.fillRect(image.rect(), brush);
+
+ if (images.size() > 10)
+ images.removeFirst();
+
+ images.append(image);
+
+ emit imageReady(image);
+ }
+
+private:
+ QList<QImage> images;
+ int delta;
+};
+
+
+class DisplayWidget : public QGLWidget
+{
+ Q_OBJECT
+public:
+ DisplayWidget(QWidget *parent) : QGLWidget(parent) {}
+ void paintEvent(QPaintEvent *)
+ {
+ QPainter p(this);
+ p.drawImage(rect(), m_image);
+ }
+
+public slots:
+ void setImage(const QImage &image)
+ {
+ m_image = image;
+ update();
+ }
+
+private:
+ QImage m_image;
+};
+
+class Widget : public QWidget
+{
+ Q_OBJECT
+public:
+ Widget()
+ : iterations(0)
+ , display(0)
+ {
+ startTimer(400);
+ }
+
+ int iterations;
+
+protected:
+ void timerEvent(QTimerEvent *)
+ {
+ ++iterations;
+
+ delete display;
+ display = new DisplayWidget(this);
+ connect(&producer, SIGNAL(imageReady(const QImage &)), display, SLOT(setImage(const QImage &)));
+
+ display->setGeometry(rect());
+ display->show();
+ }
+
+private:
+ Producer producer;
+ DisplayWidget *display;
+};
+
+}
+
+void tst_QGL::threadImages()
+{
+ ThreadImages::Widget *widget = new ThreadImages::Widget;
+ widget->show();
+
+ while (widget->iterations <= 5) {
+ qApp->processEvents();
+ }
+}
+
class tst_QGLDummy : public QObject
{
Q_OBJECT
diff --git a/tests/auto/qpixmap/tst_qpixmap.cpp b/tests/auto/qpixmap/tst_qpixmap.cpp
index fdf8311..a733d56 100644
--- a/tests/auto/qpixmap/tst_qpixmap.cpp
+++ b/tests/auto/qpixmap/tst_qpixmap.cpp
@@ -817,7 +817,7 @@ void tst_QPixmap::grabWidget()
for (int row = 0; row < image.height(); ++row) {
QRgb *line = reinterpret_cast<QRgb *>(image.scanLine(row));
for (int col = 0; col < image.width(); ++col)
- line[col] = qRgb(rand() & 255, row, col);
+ line[col] = qRgba(rand() & 255, row, col, 127);
}
QPalette pal = widget.palette();
diff --git a/tests/auto/qsqldatabase/tst_databases.h b/tests/auto/qsqldatabase/tst_databases.h
index 5837719..80535df 100644
--- a/tests/auto/qsqldatabase/tst_databases.h
+++ b/tests/auto/qsqldatabase/tst_databases.h
@@ -208,7 +208,7 @@ public:
// addDb( "QOCI8", "//horsehead.nokia.troll.no:1521/ustest.troll.no", "scott", "tiger", "" ); // Oracle 9i on horsehead
// addDb( "QOCI8", "//iceblink.nokia.troll.no:1521/ice.troll.no", "scott", "tiger", "" ); // Oracle 8 on iceblink (not currently working)
// addDb( "QOCI", "//silence.nokia.troll.no:1521/testdb", "scott", "tiger" ); // Oracle 10g on silence
-// addDb( "QOCI", "//oracle10g-nokia.trolltech.com.au:1521/XE", "scott", "tiger" ); // Oracle 10gexpress on xen
+// addDb( "QOCI", "//bq-oracle10g.apac.nokia.com:1521/XE", "scott", "tiger" ); // Oracle 10gexpress
// This requires a local ODBC data source to be configured( pointing to a MySql database )
// addDb( "QODBC", "mysqlodbc", "troll", "trond" );
diff --git a/tests/auto/qsqlquery/tst_qsqlquery.cpp b/tests/auto/qsqlquery/tst_qsqlquery.cpp
index c7a61a5..b4a3e08 100644
--- a/tests/auto/qsqlquery/tst_qsqlquery.cpp
+++ b/tests/auto/qsqlquery/tst_qsqlquery.cpp
@@ -139,6 +139,8 @@ private slots:
void oraClob();
void oraLong_data() { generic_data("QOCI"); }
void oraLong();
+ void oraOCINumber_data() { generic_data("QOCI"); }
+ void oraOCINumber();
void outValuesDB2_data() { generic_data("QDB2"); }
void outValuesDB2();
void storedProceduresIBase_data() {generic_data("QIBASE"); }
@@ -209,6 +211,9 @@ private slots:
void QTBUG_6852();
void QTBUG_5765_data() { generic_data("QMYSQL"); }
void QTBUG_5765();
+ void QTBUG_14132_data() { generic_data("QOCI"); }
+ void QTBUG_14132();
+
void sqlite_constraint_data() { generic_data("QSQLITE"); }
void sqlite_constraint();
@@ -327,7 +332,8 @@ void tst_QSqlQuery::dropTestTables( QSqlDatabase db )
<< qTableName( "Planet", __FILE__ )
<< qTableName( "task_250026", __FILE__ )
<< qTableName( "task_234422", __FILE__ )
- << qTableName("test141895", __FILE__);
+ << qTableName("test141895", __FILE__)
+ << qTableName("qtest_oraOCINumber", __FILE__);
if ( db.driverName().startsWith("QPSQL") )
tablenames << qTableName("task_233829", __FILE__);
@@ -2933,6 +2939,25 @@ void tst_QSqlQuery::QTBUG_551()
QCOMPARE(res_outLst[2].toString(), QLatin1String("3. Value is 2"));
}
+void tst_QSqlQuery::QTBUG_14132()
+{
+ QFETCH( QString, dbName );
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+ QSqlQuery q(db);
+ const QString procedureName(qTableName("procedure", __FILE__));
+ QVERIFY_SQL(q, exec("CREATE OR REPLACE PROCEDURE "+ procedureName + " (outStr OUT varchar2) \n\
+ is \n\
+ begin \n\
+ outStr := 'OUTSTRING'; \n\
+ end;"));
+ QString placeholder = "XXXXXXXXX";
+ QVERIFY(q.prepare("CALL "+procedureName+"(?)"));
+ q.addBindValue(placeholder, QSql::Out);
+ QVERIFY_SQL(q, exec());
+ QCOMPARE(q.boundValue(0).toString(), QLatin1String("OUTSTRING"));
+}
+
void tst_QSqlQuery::QTBUG_5251()
{
QFETCH( QString, dbName );
@@ -3080,6 +3105,110 @@ void tst_QSqlQuery::QTBUG_5765()
QCOMPARE(q.value(0).toInt(), 123);
}
+void tst_QSqlQuery::oraOCINumber()
+{
+ QFETCH( QString, dbName );
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+ const QString qtest_oraOCINumber(qTableName("qtest_oraOCINumber", __FILE__));
+
+ QSqlQuery q( db );
+ q.setForwardOnly( true );
+ QVERIFY_SQL( q, exec( "create table " + qtest_oraOCINumber +
+ " (col1 number(20), col2 number(20))" ) );
+ QVERIFY(q.prepare("insert into " + qtest_oraOCINumber + " values (?, ?)"));
+ QVariantList col1Values;
+ QVariantList col2Values;
+ col1Values << (qulonglong)(1)
+ << (qulonglong)(0)
+ << (qulonglong)(INT_MAX)
+ << (qulonglong)(UINT_MAX)
+ << (qulonglong)(LONG_MAX)
+ << (qulonglong)(ULONG_MAX)
+ << (qulonglong)(LLONG_MAX)
+ << (qulonglong)(ULLONG_MAX);
+
+ col2Values << (qlonglong)(1)
+ << (qlonglong)(0)
+ << (qlonglong)(-1)
+ << (qlonglong)(LONG_MAX)
+ << (qlonglong)(LONG_MIN)
+ << (qlonglong)(ULONG_MAX)
+ << (qlonglong)(LLONG_MAX)
+ << (qlonglong)(LLONG_MIN);
+
+ q.addBindValue(col1Values);
+ q.addBindValue(col2Values);
+ QVERIFY(q.execBatch());
+ QString sqlStr = "select * from " + qtest_oraOCINumber + " where col1 = :bindValue0 AND col2 = :bindValue1";
+ QVERIFY(q.prepare(sqlStr));
+
+ q.bindValue(":bindValue0", (qulonglong)(1), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(1), QSql::InOut);
+
+ QVERIFY_SQL( q, exec() );
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), qulonglong(1));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(1));
+
+ q.bindValue(":bindValue0", (qulonglong)(0), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(0), QSql::InOut);
+ QVERIFY_SQL( q, exec() );
+
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), (qulonglong)(0));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(0));
+
+ q.bindValue(":bindValue0", (qulonglong)(INT_MAX), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(-1), QSql::InOut);
+ QVERIFY_SQL( q, exec() );
+
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), (qulonglong)(INT_MAX));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(-1));
+
+ q.bindValue(":bindValue0", (qulonglong)(UINT_MAX), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(LONG_MAX), QSql::InOut);
+ QVERIFY_SQL( q, exec() );
+
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), (qulonglong)(UINT_MAX));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(LONG_MAX));
+
+ q.bindValue(":bindValue0", (qulonglong)(LONG_MAX), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(LONG_MIN), QSql::InOut);
+ QVERIFY_SQL( q, exec() );
+
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), (qulonglong)(LONG_MAX));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(LONG_MIN));
+
+ q.bindValue(":bindValue0", (qulonglong)(ULONG_MAX), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(ULONG_MAX), QSql::InOut);
+ QVERIFY_SQL( q, exec() );
+
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), (qulonglong)(ULONG_MAX));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(ULONG_MAX));
+
+ q.bindValue(":bindValue0", (qulonglong)(LLONG_MAX), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(LLONG_MAX), QSql::InOut);
+ QVERIFY_SQL( q, exec() );
+
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), (qulonglong)(LLONG_MAX));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(LLONG_MAX));
+
+ q.bindValue(":bindValue0", (qulonglong)(ULLONG_MAX), QSql::InOut);
+ q.bindValue(":bindValue1", (qlonglong)(LLONG_MIN), QSql::InOut);
+ QVERIFY_SQL( q, exec() );
+
+ QVERIFY( q.next() );
+ QCOMPARE(q.boundValue( 0 ).toULongLong(), (qulonglong)(ULLONG_MAX));
+ QCOMPARE(q.boundValue( 1 ).toLongLong(), (qlonglong)(LLONG_MIN));
+
+}
+
void tst_QSqlQuery::sqlite_constraint()
{
QFETCH( QString, dbName );