diff --git a/sqliter.pro b/sqliter.pro new file mode 100644 --- /dev/null +++ b/sqliter.pro @@ -0,0 +1,5 @@ +TEMPLATE = subdirs + +SUBDIRS += \ + sqliter \ + tests diff --git a/sqliter/sqliter.cpp b/sqliter/sqliter.cpp new file mode 100644 --- /dev/null +++ b/sqliter/sqliter.cpp @@ -0,0 +1,6 @@ +#include "sqliter.h" + + +Sqliter::Sqliter() +{ +} diff --git a/sqliter/sqliter.h b/sqliter/sqliter.h new file mode 100644 --- /dev/null +++ b/sqliter/sqliter.h @@ -0,0 +1,13 @@ +#ifndef SQLITER_H +#define SQLITER_H + +#include "sqliter_global.h" + +class SQLITERSHARED_EXPORT Sqliter +{ + +public: + Sqliter(); +}; + +#endif // SQLITER_H diff --git a/sqliter/sqliter.pro b/sqliter/sqliter.pro new file mode 100644 --- /dev/null +++ b/sqliter/sqliter.pro @@ -0,0 +1,35 @@ + #------------------------------------------------- +# +# Project created by QtCreator 2018-03-22T16:38:23 +# +#------------------------------------------------- + +QT -= gui + +TARGET = sqliter +TEMPLATE = lib + +DEFINES += SQLITER_LIBRARY + +# The following define makes your compiler emit warnings if you use +# any feature of Qt which has been marked as deprecated (the exact warnings +# depend on your compiler). Please consult the documentation of the +# deprecated API in order to know how to port your code away from it. +DEFINES += QT_DEPRECATED_WARNINGS + +# You can also make your code fail to compile if you use deprecated APIs. +# In order to do so, uncomment the following line. +# You can also select to disable deprecated APIs only up to a certain version of Qt. +#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 + +SOURCES += \ + sqliter.cpp + +HEADERS += \ + sqliter.h \ + sqliter_global.h + +unix { + target.path = /usr/lib + INSTALLS += target +} diff --git a/sqliter/sqliter_global.h b/sqliter/sqliter_global.h new file mode 100644 --- /dev/null +++ b/sqliter/sqliter_global.h @@ -0,0 +1,12 @@ +#ifndef SQLITER_GLOBAL_H +#define SQLITER_GLOBAL_H + +#include + +#if defined(SQLITER_LIBRARY) +# define SQLITERSHARED_EXPORT Q_DECL_EXPORT +#else +# define SQLITERSHARED_EXPORT Q_DECL_IMPORT +#endif + +#endif // SQLITER_GLOBAL_H diff --git a/tests/sqrtest.cpp b/tests/sqrtest.cpp new file mode 100644 --- /dev/null +++ b/tests/sqrtest.cpp @@ -0,0 +1,100 @@ +#include +#include +#include +#include + +class SqliterTest : public QObject +{ + Q_OBJECT + +public: + SqliterTest() = default; + +private Q_SLOTS: + void initTestCase(); + void testUpperDefault(); + void testLowerDefault(); + void testUpperR(); + void testLowerR(); +}; + +void SqliterTest::initTestCase() +{ + QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); + db.setDatabaseName(":memory:"); + QVERIFY(db.open()); + QSqlQuery q; + QVERIFY(q.exec("CREATE TABLE tt1 (id INTEGER PRIMARY KEY, t TEXT)")); + QVERIFY(db.transaction()); + QVERIFY(q.exec(QStringLiteral("INSERT INTO tt1 (id, t) VALUES (1, 'One')"))); + QVERIFY(q.exec(QStringLiteral("INSERT INTO tt1 (id, t) VALUES (2, 'two')"))); + QVERIFY(q.exec(QStringLiteral("INSERT INTO tt1 (id, t) VALUES (3, 'THREE')"))); + QVERIFY(q.exec(QStringLiteral("INSERT INTO tt1 (id, t) VALUES (4, 'Четыре')"))); + QVERIFY(q.exec(QStringLiteral("INSERT INTO tt1 (id, t) VALUES (5, 'пять')"))); + QVERIFY(q.exec(QStringLiteral("INSERT INTO tt1 (id, t) VALUES (6, 'ШЕСТЬ')"))); + QVERIFY(db.commit()); +} + +void SqliterTest::testUpperDefault() +{ + QStringList list; + QSqlQuery q; + QVERIFY(q.exec("SELECT UPPER(t) FROM tt1 ORDER BY id")); + while (q.next()) + list.append(q.value(0).toString()); + QVERIFY(list[0] == "ONE"); + QVERIFY(list[1] == "TWO"); + QVERIFY(list[2] == "THREE"); + QVERIFY(list[3] == "Четыре"); + QVERIFY(list[4] == "пять"); + QVERIFY(list[5] == "ШЕСТЬ"); +} + +void SqliterTest::testLowerDefault() +{ + QStringList list; + QSqlQuery q; + QVERIFY(q.exec("SELECT LOWER(t) FROM tt1 ORDER BY id")); + while (q.next()) + list.append(q.value(0).toString()); + QVERIFY(list[0] == "one"); + QVERIFY(list[1] == "two"); + QVERIFY(list[2] == "three"); + QVERIFY(list[3] == "Четыре"); + QVERIFY(list[4] == "пять"); + QVERIFY(list[5] == "ШЕСТЬ"); +} + +void SqliterTest::testUpperR() +{ + QStringList list; + QSqlQuery q; + QVERIFY(q.exec("SELECT UPPER(t) FROM tt1 ORDER BY id")); + while (q.next()) + list.append(q.value(0).toString()); + QVERIFY(list[0] == "ONE"); + QVERIFY(list[1] == "TWO"); + QVERIFY(list[2] == "THREE"); + QVERIFY(list[3] == "ЧЕТЫРЕ"); + QVERIFY(list[4] == "ПЯТЬ"); + QVERIFY(list[5] == "ШЕСТЬ"); +} + +void SqliterTest::testLowerR() +{ + QStringList list; + QSqlQuery q; + QVERIFY(q.exec("SELECT LOWER(t) FROM tt1 ORDER BY id")); + while (q.next()) + list.append(q.value(0).toString()); + QVERIFY(list[0] == "one"); + QVERIFY(list[1] == "two"); + QVERIFY(list[2] == "three"); + QVERIFY(list[3] == "четыре"); + QVERIFY(list[4] == "пять"); + QVERIFY(list[5] == "шесть"); +} + +QTEST_APPLESS_MAIN(SqliterTest) + +#include "sqrtest.moc" diff --git a/tests/tests.pro b/tests/tests.pro new file mode 100644 --- /dev/null +++ b/tests/tests.pro @@ -0,0 +1,32 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2018-03-22T16:40:26 +# +#------------------------------------------------- + +TEMPLATE = app +TARGET = sqrtest + +QT += testlib sql +QT -= gui + +CONFIG += console +CONFIG -= app_bundle + + +# The following define makes your compiler emit warnings if you use +# any feature of Qt which has been marked as deprecated (the exact warnings +# depend on your compiler). Please consult the documentation of the +# deprecated API in order to know how to port your code away from it. +DEFINES += QT_DEPRECATED_WARNINGS + +# You can also make your code fail to compile if you use deprecated APIs. +# In order to do so, uncomment the following line. +# You can also select to disable deprecated APIs only up to a certain version of Qt. +#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 + + +SOURCES += \ + sqrtest.cpp + +DEFINES += SRCDIR=\\\"$$PWD/\\\"