mirror of
https://github.com/nextcloud/desktop.git
synced 2024-12-13 06:52:39 +03:00
f427955512
Remove all configure_files: - Move all tests to cpp files - Use the QTEST_MAIN macro instead of a generated main.cpp - Include test*.moc in the cpp to let CMAKE_AUTOMOC call moc - Pass info through add_definitions instead of generating oc_bin.h with them This makes sure that build errors points to the original test source file instead of the generated one in the build directory to be able to jump and fix errors directly from the IDE's error pane.
153 lines
3.8 KiB
C++
153 lines
3.8 KiB
C++
/*
|
|
* This software is in the public domain, furnished "as is", without technical
|
|
* support, and with no warranty, express or implied, as to its usefulness for
|
|
* any purpose.
|
|
* */
|
|
|
|
#include <QtTest>
|
|
|
|
#include <sqlite3.h>
|
|
|
|
#include "ownsql.h"
|
|
|
|
using namespace OCC;
|
|
|
|
namespace {
|
|
|
|
const char testdbC[] = "/tmp/testdb.sqlite";
|
|
}
|
|
|
|
class TestOwnSql : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
private slots:
|
|
void initTestCase() {
|
|
QFileInfo fi( testdbC );
|
|
|
|
if( fi.exists() ) {
|
|
QFile::remove(testdbC);
|
|
}
|
|
fi.refresh();
|
|
QVERIFY(!fi.exists());
|
|
}
|
|
|
|
void cleanupTestCase() {
|
|
// QFile::remove(testdbC);
|
|
}
|
|
|
|
void testOpenDb() {
|
|
QFileInfo fi( testdbC );
|
|
QVERIFY( !fi.exists() ); // must not exist
|
|
_db.openOrCreateReadWrite(testdbC);
|
|
fi.refresh();
|
|
QVERIFY(fi.exists());
|
|
|
|
}
|
|
|
|
void testCreate() {
|
|
const char *sql = "CREATE TABLE addresses ( id INTEGER, name VARCHAR(4096), "
|
|
"address VARCHAR(4096), entered INTEGER(8), PRIMARY KEY(id));";
|
|
|
|
SqlQuery q(_db);
|
|
q.prepare(sql);
|
|
QVERIFY(q.exec());
|
|
}
|
|
|
|
void testIsSelect() {
|
|
SqlQuery q(_db);
|
|
q.prepare("SELECT id FROM addresses;");
|
|
QVERIFY( q.isSelect() );
|
|
|
|
q.prepare("UPDATE addresses SET id = 1;");
|
|
QVERIFY( !q.isSelect());
|
|
}
|
|
|
|
void testInsert() {
|
|
const char *sql = "INSERT INTO addresses (id, name, address, entered) VALUES "
|
|
"(1, 'Gonzo Alberto', 'Moriabata 24, Palermo', 1403100844);";
|
|
SqlQuery q(_db);
|
|
q.prepare(sql);
|
|
QVERIFY(q.exec());
|
|
}
|
|
|
|
void testInsert2() {
|
|
const char *sql = "INSERT INTO addresses (id, name, address, entered) VALUES "
|
|
"(?1, ?2, ?3, ?4);";
|
|
SqlQuery q(_db);
|
|
q.prepare(sql);
|
|
q.bindValue(1, 2);
|
|
q.bindValue(2, "Brucely Lafayette");
|
|
q.bindValue(3, "Nurderway5, New York");
|
|
q.bindValue(4, 1403101224);
|
|
QVERIFY(q.exec());
|
|
}
|
|
|
|
void testSelect() {
|
|
const char *sql = "SELECT * FROM addresses;";
|
|
|
|
SqlQuery q(_db);
|
|
q.prepare(sql);
|
|
|
|
q.exec();
|
|
while( q.next() ) {
|
|
qDebug() << "Name: " << q.stringValue(1);
|
|
qDebug() << "Address: " << q.stringValue(2);
|
|
}
|
|
}
|
|
|
|
void testSelect2() {
|
|
const char *sql = "SELECT * FROM addresses WHERE id=?1";
|
|
SqlQuery q(_db);
|
|
q.prepare(sql);
|
|
q.bindValue(1, 2);
|
|
q.exec();
|
|
if( q.next() ) {
|
|
qDebug() << "Name:" << q.stringValue(1);
|
|
qDebug() << "Address:" << q.stringValue(2);
|
|
}
|
|
}
|
|
|
|
void testPragma() {
|
|
const char *sql = "PRAGMA table_info(addresses)";
|
|
|
|
SqlQuery q(_db);
|
|
int rc = q.prepare(sql);
|
|
qDebug() << "Pragma:" << rc;
|
|
q.exec();
|
|
if( q.next() ) {
|
|
qDebug() << "P:" << q.stringValue(1);
|
|
}
|
|
}
|
|
|
|
void testUnicode() {
|
|
const char *sql = "INSERT INTO addresses (id, name, address, entered) VALUES "
|
|
"(?1, ?2, ?3, ?4);";
|
|
SqlQuery q(_db);
|
|
q.prepare(sql);
|
|
q.bindValue(1, 3);
|
|
q.bindValue(2, QString::fromUtf8("пятницы"));
|
|
q.bindValue(3, QString::fromUtf8("проспект"));
|
|
q.bindValue(4, 1403002224);
|
|
QVERIFY(q.exec());
|
|
}
|
|
|
|
void testReadUnicode() {
|
|
const char *sql = "SELECT * FROM addresses WHERE id=3;";
|
|
SqlQuery q(_db);
|
|
q.prepare(sql);
|
|
|
|
if(q.next()) {
|
|
QString name = q.stringValue(1);
|
|
QString address = q.stringValue(2);
|
|
QVERIFY( name == QString::fromUtf8("пятницы") );
|
|
QVERIFY( address == QString::fromUtf8("проспект"));
|
|
}
|
|
}
|
|
|
|
private:
|
|
SqlDatabase _db;
|
|
};
|
|
|
|
QTEST_MAIN(TestOwnSql)
|
|
#include "testownsql.moc"
|