wip: fix same type
This commit is contained in:
parent
c30870ef1f
commit
1fb87d6a03
|
|
@ -131,13 +131,13 @@ QString MySqlGenerator::escapeValue(const QVariant &v) const
|
|||
return v.toBool() ? QStringLiteral("1") : QStringLiteral("0");
|
||||
|
||||
if (v.type() == QVariant::Time)
|
||||
return v.toTime().toString(QStringLiteral("'HH:mm:ss'"));
|
||||
return v.toTime().toString(QStringLiteral("''HH:mm:ss''"));
|
||||
|
||||
if (v.type() == QVariant::Date)
|
||||
return v.toDate().toString(QStringLiteral("'yyyy-MM-dd'"));
|
||||
return v.toDate().toString(QStringLiteral("''yyyy-MM-dd''"));
|
||||
|
||||
if (v.type() == QVariant::DateTime)
|
||||
return v.toDateTime().toString(QStringLiteral("'yyyy-MM-dd HH:mm:ss'"));
|
||||
return v.toDateTime().toString(QStringLiteral("''yyyy-MM-dd HH:mm:ss''"));
|
||||
|
||||
//#ifdef QT_GUI_LIB
|
||||
// if (v.type() == QVariant::Polygon) {
|
||||
|
|
|
|||
|
|
@ -213,13 +213,13 @@ QString PostgreSqlGenerator::diff(FieldModel *oldField, FieldModel *newField)
|
|||
QString PostgreSqlGenerator::escapeValue(const QVariant &v) const
|
||||
{
|
||||
if (v.type() == QVariant::Time)
|
||||
return v.toTime().toString(QStringLiteral("'HH:mm:ss'"));
|
||||
return v.toTime().toString(QStringLiteral("''HH:mm:ss''"));
|
||||
|
||||
if (v.type() == QVariant::Date)
|
||||
return v.toDate().toString(QStringLiteral("'yyyy-MM-dd'"));
|
||||
return v.toDate().toString(QStringLiteral("''yyyy-MM-dd''"));
|
||||
|
||||
if (v.type() == QVariant::DateTime)
|
||||
return v.toDateTime().toString(QStringLiteral("'yyyy-MM-dd HH:mm:ss'"));
|
||||
return v.toDateTime().toString(QStringLiteral("''yyyy-MM-dd HH:mm:ss''"));
|
||||
|
||||
if (v.type() == QVariant::StringList)
|
||||
return QStringLiteral("'{")
|
||||
|
|
|
|||
|
|
@ -302,13 +302,13 @@ QString SqliteGenerator::createConditionalPhrase(const PhraseData *d) const
|
|||
QString SqliteGenerator::escapeValue(const QVariant &v) const
|
||||
{
|
||||
if (v.type() == QVariant::Time)
|
||||
return v.toTime().toString(QStringLiteral("'HH:mm:ss'"));
|
||||
return v.toTime().toString(QStringLiteral("''HH:mm:ss''"));
|
||||
|
||||
if (v.type() == QVariant::Date)
|
||||
return v.toDate().toString(QStringLiteral("'yyyy-MM-dd'"));
|
||||
return v.toDate().toString(QStringLiteral("''yyyy-MM-dd''"));
|
||||
|
||||
if (v.type() == QVariant::DateTime)
|
||||
return v.toDateTime().toString(QStringLiteral("'yyyy-MM-dd HH:mm:ss'"));
|
||||
return v.toDateTime().toString(QStringLiteral("''yyyy-MM-dd HH:mm:ss''"));
|
||||
|
||||
return SqlGeneratorBase::escapeValue(v);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -184,13 +184,13 @@ QString SqlServerGenerator::escapeValue(const QVariant &v) const
|
|||
// }
|
||||
|
||||
case QVariant::Time:
|
||||
return v.toTime().toString(QStringLiteral("'HH:mm:ss'"));
|
||||
return v.toTime().toString(QStringLiteral("''HH:mm:ss''"));
|
||||
|
||||
case QVariant::Date:
|
||||
return v.toDate().toString(QStringLiteral("'yyyy-MM-dd'"));
|
||||
return v.toDate().toString(QStringLiteral("''yyyy-MM-dd''"));
|
||||
|
||||
case QVariant::DateTime:
|
||||
return v.toDateTime().toString(QStringLiteral("'yyyy-MM-dd HH:mm:ss'"));
|
||||
return v.toDateTime().toString(QStringLiteral("''yyyy-MM-dd HH:mm:ss''"));
|
||||
|
||||
default:
|
||||
return SqlGeneratorBase::escapeValue(v);
|
||||
|
|
|
|||
|
|
@ -389,7 +389,7 @@ Q_OUTOFLINE_TEMPLATE int Query<T>::count()
|
|||
Q_D(Query);
|
||||
|
||||
d->joins.prepend(d->tableName);
|
||||
d->select = "COUNT(*)";
|
||||
d->select = QStringLiteral("COUNT(*)");
|
||||
d->sql = d->database->sqlGenerator()->selectCommand(
|
||||
d->tableName,
|
||||
SqlGeneratorBase::Count,
|
||||
|
|
|
|||
|
|
@ -9,7 +9,8 @@ SUBDIRS += \
|
|||
tst_generators \
|
||||
tst_upgrades \
|
||||
tst_json \
|
||||
tst_datetime
|
||||
tst_datetime \
|
||||
tst_sametype
|
||||
|
||||
cmake.CONFIG += no_run-tests_target
|
||||
prepareRecursiveTarget(run-tests)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,10 @@
|
|||
#ifndef DATABASE_CONSTS_H
|
||||
#define DATABASE_CONSTS_H
|
||||
|
||||
#define DRIVER QStringLiteral("QMYSQL")
|
||||
#define DATABASE QStringLiteral("nut_test_%1_db").arg(metaObject()->className()).toLower())
|
||||
#define HOST QString()
|
||||
#define USERNAME QString()
|
||||
#define PASSWORD QString()
|
||||
|
||||
#endif // DATABASE_CONSTS_H
|
||||
|
|
@ -1,7 +1,60 @@
|
|||
contains(debug_and_release, CONFIG): message(debug_and_release)
|
||||
|
||||
debug_and_release:!ReleaseBuild:!DebugBuild {
|
||||
runtarget.target = run-tests
|
||||
runtarget.CONFIG = recursive
|
||||
runtarget.recurse_target = run-tests
|
||||
QMAKE_EXTRA_TARGETS += runtarget
|
||||
} else {
|
||||
oneshell.target = .ONESHELL
|
||||
QMAKE_EXTRA_TARGETS += oneshell
|
||||
|
||||
win32:!win32-g++ {
|
||||
CONFIG(debug, debug|release): outdir_helper = debug
|
||||
CONFIG(release, debug|release): outdir_helper = release
|
||||
runtarget.target = run-tests
|
||||
!compat_test: runtarget.depends += $(DESTDIR_TARGET)
|
||||
runtarget.commands += set PATH=$$shell_path($$shadowed($$dirname(_QMAKE_CONF_))/bin);$$shell_path($$[QT_INSTALL_BINS]);$(PATH)
|
||||
runtarget.commands += $$escape_expand(\\n\\t)set QT_PLUGIN_PATH=$$shadowed($$dirname(_QMAKE_CONF_))/plugins;$$[QT_INSTALL_PLUGINS];$(QT_PLUGIN_PATH)
|
||||
runtarget.commands += $$escape_expand(\\n\\t)set QML2_IMPORT_PATH=$$shadowed($$dirname(_QMAKE_CONF_))/qml;$$[QT_INSTALL_QML];$(QML2_IMPORT_PATH)
|
||||
!isEmpty(LOGGING_RULES): runtarget.commands += $$escape_expand(\\n\\t)set \"QT_LOGGING_RULES=$$LOGGING_RULES\"
|
||||
runtarget.commands += $$escape_expand(\\n\\t)if exist $${outdir_helper}\\fail del $${outdir_helper}\\fail
|
||||
runtarget.commands += $$escape_expand(\\n\\t)start /w call $(DESTDIR_TARGET) ^> $${outdir_helper}\\test.log ^|^| echo FAIL ^> $${outdir_helper}\\fail ^& exit 0
|
||||
runtarget.commands += $$escape_expand(\\n\\t)type $${outdir_helper}\\test.log
|
||||
runtarget.commands += $$escape_expand(\\n\\t)if exist $${outdir_helper}\\fail exit 42
|
||||
QMAKE_EXTRA_TARGETS += runtarget
|
||||
} else {
|
||||
win32-g++: QMAKE_DIRLIST_SEP = ";"
|
||||
runtarget.commands += export PATH=\"$$shell_path($$shadowed($$dirname(_QMAKE_CONF_))/bin):$$shell_path($$[QT_INSTALL_BINS]):$${LITERAL_DOLLAR}$${LITERAL_DOLLAR}PATH\"
|
||||
runtarget.commands += $$escape_expand(\\n\\t)export QT_PLUGIN_PATH=\"$$shadowed($$dirname(_QMAKE_CONF_))/plugins$${QMAKE_DIRLIST_SEP}$$[QT_INSTALL_PLUGINS]$${QMAKE_DIRLIST_SEP}$(QT_PLUGIN_PATH)\"
|
||||
runtarget.commands += $$escape_expand(\\n\\t)export QML2_IMPORT_PATH=\"$$shadowed($$dirname(_QMAKE_CONF_))/qml$${QMAKE_DIRLIST_SEP}$$[QT_INSTALL_QML]$${QMAKE_DIRLIST_SEP}$(QML2_IMPORT_PATH)\"
|
||||
!isEmpty(LOGGING_RULES): runtarget.commands += $$escape_expand(\\n\\t)export QT_LOGGING_RULES=\"$$LOGGING_RULES\"
|
||||
win32-g++: QMAKE_DIRLIST_SEP = ":"
|
||||
|
||||
linux|win32-g++ {
|
||||
runtarget.commands += $$escape_expand(\\n\\t)export LD_LIBRARY_PATH=\"$$shadowed($$dirname(_QMAKE_CONF_))/lib$${QMAKE_DIRLIST_SEP}$$[QT_INSTALL_LIBS]$${QMAKE_DIRLIST_SEP}$(LD_LIBRARY_PATH)\"
|
||||
runtarget.commands += $$escape_expand(\\n\\t)export QT_QPA_PLATFORM=minimal
|
||||
} else:mac {
|
||||
runtarget.commands += $$escape_expand(\\n\\t)export DYLD_LIBRARY_PATH=\"$$shadowed($$dirname(_QMAKE_CONF_))/lib:$$[QT_INSTALL_LIBS]:$(DYLD_LIBRARY_PATH)\"
|
||||
runtarget.commands += $$escape_expand(\\n\\t)export DYLD_FRAMEWORK_PATH=\"$$shadowed($$dirname(_QMAKE_CONF_))/lib:$$[QT_INSTALL_LIBS]:$(DYLD_FRAMEWORK_PATH)\"
|
||||
}
|
||||
|
||||
runtarget.target = run-tests
|
||||
win32-g++ {
|
||||
!compat_test: runtarget.depends += $(DESTDIR_TARGET)
|
||||
runtarget.commands += $$escape_expand(\\n\\t)./$(DESTDIR_TARGET)
|
||||
} else {
|
||||
!compat_test: runtarget.depends += $(TARGET)
|
||||
runtarget.commands += $$escape_expand(\\n\\t)./$(TARGET)
|
||||
}
|
||||
QMAKE_EXTRA_TARGETS += runtarget
|
||||
}
|
||||
}
|
||||
|
||||
win32 {
|
||||
CONFIG(debug,debug|release): LIBDIR = $$absolute_path($$OUT_PWD/../../../src/nut/debug)
|
||||
CONFIG(release,debug|release): LIBDIR = $$absolute_path($$OUT_PWD/../../../src/nut/release)
|
||||
LIBS += -L$$LIBDIR -lnut
|
||||
# LIBS += -L$$LIBDIR -lnut
|
||||
} else {
|
||||
LIBDIR = $$absolute_path($$OUT_PWD/../../../lib)
|
||||
android: {
|
||||
|
|
@ -19,7 +72,7 @@ win32 {
|
|||
LIBS += -L$$LIBDIR -lnut_x86_64
|
||||
}
|
||||
} else {
|
||||
# LIBS += -L$$LIBDIR -lnut
|
||||
# LIBS += -L$$LIBDIR
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -27,6 +80,7 @@ win32 {
|
|||
INCLUDEPATH += $$PWD/../common
|
||||
|
||||
QT += nut
|
||||
CONFIG += testcase
|
||||
|
||||
DEFINES += NUT_SHARED_POINTER
|
||||
DEFINES += NUT_PATH=\\\"$$PWD/../../\\\"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,10 @@
|
|||
#ifndef DATABASE_CONSTS_H
|
||||
#define DATABASE_CONSTS_H
|
||||
|
||||
#define DRIVER QStringLiteral("QPSQL")
|
||||
#define DATABASE QStringLiteral("nut_test_%1_db").arg(metaObject()->className()).toLower())
|
||||
#define HOST QString()
|
||||
#define USERNAME QStringLiteral("postgres")
|
||||
#define PASSWORD QStringLiteral("root")
|
||||
|
||||
#endif // DATABASE_CONSTS_H
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
#ifndef DATABASE_CONSTS_H
|
||||
#define DATABASE_CONSTS_H
|
||||
|
||||
#define DRIVER QStringLiteral("QSQLITE")
|
||||
#define DATABASE QStringLiteral("nut_test_%1_db").arg(metaObject()->className()).toLower())
|
||||
#define HOST QString()
|
||||
#define USERNAME QString()
|
||||
#define PASSWORD QString()
|
||||
|
||||
#endif // DATABASE_CONSTS_H
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef DATABASE_CONSTS_H
|
||||
#define DATABASE_CONSTS_H
|
||||
|
||||
#define DRIVER "QODBC"
|
||||
#define DATABASE QString("DRIVER={SQL Server};Server=.;Database=%1;Uid=sa;Port=1433;Pwd=qwe123!@#;WSID=.") \
|
||||
.arg(QString("nut_test_%1_db").arg(metaObject()->className()).toLower())
|
||||
#define HOST QStringLiteral(".")
|
||||
#define USERNAME QString()
|
||||
#define PASSWORD QString()
|
||||
|
||||
#endif // DATABASE_CONSTS_H
|
||||
|
|
@ -170,10 +170,15 @@ void BasicTest::selectPosts()
|
|||
|
||||
void BasicTest::selectScoreAverage()
|
||||
{
|
||||
auto avg = db.scores()->query()
|
||||
bool ok;
|
||||
auto avg = db.scores()
|
||||
->query()
|
||||
->join<Post>()
|
||||
->setWhere(Post::idField() == 1)
|
||||
->average(Score::scoreField());
|
||||
->where(Post::idField() == postId)
|
||||
->average(Score::scoreField())
|
||||
.toInt(&ok);
|
||||
|
||||
QTEST_ASSERT(ok);
|
||||
QCOMPARE(avg, 2);
|
||||
}
|
||||
|
||||
|
|
@ -210,7 +215,7 @@ void BasicTest::selectPostIds()
|
|||
{
|
||||
auto q = db.posts()->query();
|
||||
auto ids = q->select(Post::idField());
|
||||
qDebug() << ids.count();
|
||||
|
||||
QTEST_ASSERT(ids.count() == 2);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,73 @@
|
|||
# This file is used to ignore files which are generated
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
*~
|
||||
*.autosave
|
||||
*.a
|
||||
*.core
|
||||
*.moc
|
||||
*.o
|
||||
*.obj
|
||||
*.orig
|
||||
*.rej
|
||||
*.so
|
||||
*.so.*
|
||||
*_pch.h.cpp
|
||||
*_resource.rc
|
||||
*.qm
|
||||
.#*
|
||||
*.*#
|
||||
core
|
||||
!core/
|
||||
tags
|
||||
.DS_Store
|
||||
.directory
|
||||
*.debug
|
||||
Makefile*
|
||||
*.prl
|
||||
*.app
|
||||
moc_*.cpp
|
||||
ui_*.h
|
||||
qrc_*.cpp
|
||||
Thumbs.db
|
||||
*.res
|
||||
*.rc
|
||||
/.qmake.cache
|
||||
/.qmake.stash
|
||||
|
||||
# qtcreator generated files
|
||||
*.pro.user*
|
||||
|
||||
# xemacs temporary files
|
||||
*.flc
|
||||
|
||||
# Vim temporary files
|
||||
.*.swp
|
||||
|
||||
# Visual Studio generated files
|
||||
*.ib_pdb_index
|
||||
*.idb
|
||||
*.ilk
|
||||
*.pdb
|
||||
*.sln
|
||||
*.suo
|
||||
*.vcproj
|
||||
*vcproj.*.*.user
|
||||
*.ncb
|
||||
*.sdf
|
||||
*.opensdf
|
||||
*.vcxproj
|
||||
*vcxproj.*
|
||||
|
||||
# MinGW generated files
|
||||
*.Debug
|
||||
*.Release
|
||||
|
||||
# Python byte code
|
||||
*.pyc
|
||||
|
||||
# Binaries
|
||||
# --------
|
||||
*.dll
|
||||
*.exe
|
||||
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
#include "db.h"
|
||||
#include "sampletable.h"
|
||||
|
||||
DB::DB() : Nut::Database()
|
||||
, m_users1(new Nut::TableSet<SampleTable>(this))
|
||||
, m_users2(new Nut::TableSet<SampleTable>(this))
|
||||
, m_users3(new Nut::TableSet<SampleTable>(this))
|
||||
{
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
#ifndef DB1_H
|
||||
#define DB1_H
|
||||
|
||||
#include "database.h"
|
||||
|
||||
class SampleTable;
|
||||
class DB : public Nut::Database
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
NUT_DB_VERSION(1)
|
||||
|
||||
NUT_DECLARE_TABLE(SampleTable, users1)
|
||||
NUT_DECLARE_TABLE(SampleTable, users2)
|
||||
NUT_DECLARE_TABLE(SampleTable, users3)
|
||||
|
||||
public:
|
||||
DB();
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(DB*)
|
||||
|
||||
#endif // DB1_H
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
#include "sampletable.h"
|
||||
|
||||
|
||||
SampleTable::SampleTable(QObject *parent) : Nut::Table (parent)
|
||||
{
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
#ifndef TABLE1_H
|
||||
#define TABLE1_H
|
||||
|
||||
#include "table.h"
|
||||
|
||||
class SampleTable : public Nut::Table
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
NUT_PRIMARY_AUTO_INCREMENT(id)
|
||||
NUT_DECLARE_FIELD(int, id, id, setId)
|
||||
|
||||
NUT_DECLARE_FIELD(QString, name, name, setName)
|
||||
NUT_DECLARE_FIELD(QString, password, password, setPassword)
|
||||
|
||||
public:
|
||||
Q_INVOKABLE SampleTable(QObject *parent = Q_NULLPTR);
|
||||
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(SampleTable*)
|
||||
|
||||
#endif // TABLE1_H
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
QT += testlib sql
|
||||
|
||||
TARGET = tst_upgrades
|
||||
TEMPLATE = app
|
||||
CONFIG += warn_on c++11
|
||||
|
||||
include(../common/nut-lib.pri)
|
||||
|
||||
SOURCES += \
|
||||
db.cpp \
|
||||
sampletable.cpp \
|
||||
tst_sametypes.cpp
|
||||
|
||||
HEADERS += \
|
||||
db.h \
|
||||
sampletable.h \
|
||||
tst_sametypes.h
|
||||
|
||||
|
|
@ -0,0 +1,148 @@
|
|||
#include <QtTest>
|
||||
|
||||
#include "db.h"
|
||||
#include "sampletable.h"
|
||||
#include "query.h"
|
||||
|
||||
#include "tst_sametypes.h"
|
||||
#include "consts.h"
|
||||
|
||||
SameTypes::SameTypes()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
SameTypes::~SameTypes()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
void SameTypes::initTestCase()
|
||||
{
|
||||
REGISTER(DB);
|
||||
REGISTER(SampleTable);
|
||||
|
||||
db.setDriver(DRIVER);
|
||||
db.setHostName(HOST);
|
||||
db.setDatabaseName(DATABASE);
|
||||
db.setUserName(USERNAME);
|
||||
db.setPassword(PASSWORD);
|
||||
|
||||
db.open();
|
||||
}
|
||||
|
||||
void SameTypes::insert()
|
||||
{
|
||||
insertOnList(1, "1");
|
||||
insertOnList(2, "2");
|
||||
insertOnList(3, "3");
|
||||
}
|
||||
|
||||
void SameTypes::counts()
|
||||
{
|
||||
for (int i = 1; i < 4; ++i) {
|
||||
auto t = query(i);
|
||||
|
||||
QTEST_ASSERT(t != nullptr);
|
||||
QCOMPARE(t->toList().count(), 1);
|
||||
}
|
||||
}
|
||||
|
||||
void SameTypes::read()
|
||||
{
|
||||
QCOMPARE(readPassword(1), "1");
|
||||
QCOMPARE(readPassword(2), "2");
|
||||
QCOMPARE(readPassword(3), "3");
|
||||
}
|
||||
|
||||
void SameTypes::insertOnList(char no, const QString &password)
|
||||
{
|
||||
Nut::TableSet<SampleTable> *tableSet;
|
||||
|
||||
switch (no) {
|
||||
case 1:
|
||||
tableSet = db.users1();
|
||||
break;
|
||||
|
||||
case 2:
|
||||
tableSet = db.users2();
|
||||
break;
|
||||
|
||||
case 3:
|
||||
tableSet = db.users3();
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
bool ok;
|
||||
auto q = tableSet->query();
|
||||
int n = q->insert((SampleTable::nameField() = "user")
|
||||
& (SampleTable::passwordField() = password))
|
||||
.toInt(&ok);
|
||||
|
||||
qDebug() << q->sqlCommand();
|
||||
QTEST_ASSERT(ok);
|
||||
|
||||
QTEST_ASSERT(n != 0);
|
||||
}
|
||||
|
||||
QString SameTypes::readPassword(char no)
|
||||
{
|
||||
Nut::TableSet<SampleTable> *tableSet;
|
||||
|
||||
switch (no) {
|
||||
case 1:
|
||||
tableSet = db.users1();
|
||||
break;
|
||||
|
||||
case 2:
|
||||
tableSet = db.users2();
|
||||
break;
|
||||
|
||||
case 3:
|
||||
tableSet = db.users3();
|
||||
break;
|
||||
|
||||
default:
|
||||
return QString();
|
||||
}
|
||||
|
||||
bool ok;
|
||||
auto q = tableSet->query();
|
||||
QStringList passwordList = q->where(SampleTable::nameField() == "user")
|
||||
->select(SampleTable::passwordField());
|
||||
|
||||
|
||||
qDebug() << q->sqlCommand();
|
||||
QTEST_ASSERT(passwordList.size() == 1);
|
||||
|
||||
return passwordList.first();
|
||||
}
|
||||
|
||||
Nut::Query<SampleTable> *SameTypes::query(int n)
|
||||
{
|
||||
switch (n) {
|
||||
case 1:
|
||||
return db.users1()->query();
|
||||
break;
|
||||
|
||||
case 2:
|
||||
return db.users2()->query();
|
||||
break;
|
||||
|
||||
case 3:
|
||||
return db.users3()->query();
|
||||
break;
|
||||
|
||||
default:
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
QTEST_APPLESS_MAIN(SameTypes)
|
||||
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
#ifndef TST_UPGRADES_H
|
||||
#define TST_UPGRADES_H
|
||||
|
||||
#include <QObject>
|
||||
#include "db.h"
|
||||
|
||||
|
||||
namespace Nut {
|
||||
class Database;
|
||||
template<class T>
|
||||
class Query;
|
||||
}
|
||||
class SameTypes : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
DB db;
|
||||
|
||||
void insertOnList(char no, const QString &password);
|
||||
QString readPassword(char no);
|
||||
Nut::Query<SampleTable> *query(int n);
|
||||
|
||||
public:
|
||||
SameTypes();
|
||||
~SameTypes();
|
||||
|
||||
private slots:
|
||||
void initTestCase();
|
||||
|
||||
void insert();
|
||||
void counts();
|
||||
void read();
|
||||
|
||||
};
|
||||
|
||||
#endif // TST_UPGRADES_H
|
||||
Loading…
Reference in New Issue