mirror of
https://github.com/silverqx/TinyORM.git
synced 2026-04-30 21:49:46 -05:00
added tests, refactored project structure
- TinyOrm is shared library now in src/ folder - added tests/ folder as subdirs project - some init tests for QueryBuilder and DatabaseConnection - renamed MANGO_DEBUG_SQL to TINYORM_DEBUG_SQL
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
TINYORM_SOURCE_TREE = $$PWD
|
||||
TINYORM_BUILD_TREE = $$shadowed($$PWD)
|
||||
@@ -62,3 +62,31 @@ struct RelationMethods
|
||||
|
||||
tmp notes:
|
||||
----------
|
||||
|
||||
message(-------)
|
||||
message(XXX config.pri)
|
||||
message(PWD: $$PWD)
|
||||
message(OUT_PWD: $$OUT_PWD)
|
||||
message(_PRO_FILE_PWD_: $$_PRO_FILE_PWD_)
|
||||
message(INCLUDEPATH: $$INCLUDEPATH)
|
||||
message(-------)
|
||||
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
#include <qt_windows.h>
|
||||
|
||||
#include "testorm.h"
|
||||
|
||||
int main(int, char *[])
|
||||
{
|
||||
// SetConsoleOutputCP(CP_UTF8);
|
||||
SetConsoleOutputCP(1250);
|
||||
|
||||
qDebug() << "";
|
||||
|
||||
TestOrm testOrm;
|
||||
testOrm.run();
|
||||
|
||||
qDebug() << "\n";
|
||||
}
|
||||
|
||||
+5
-113
@@ -1,115 +1,7 @@
|
||||
QT -= gui
|
||||
QT += sql
|
||||
TEMPLATE = subdirs
|
||||
|
||||
# Configuration
|
||||
# ---
|
||||
CONFIG += c++2a strict_c++ console silent
|
||||
CONFIG -= c++11 app_bundle
|
||||
SUBDIRS += \
|
||||
src \
|
||||
tests \
|
||||
|
||||
# Some info output
|
||||
# ---
|
||||
CONFIG(debug, debug|release): message( "Project is built in DEBUG mode." )
|
||||
CONFIG(release, debug|release): message( "Project is built in RELEASE mode." )
|
||||
|
||||
# Disable debug output in release mode
|
||||
CONFIG(release, debug|release) {
|
||||
message( "Disabling debug output." )
|
||||
DEFINES += QT_NO_DEBUG_OUTPUT
|
||||
}
|
||||
|
||||
# TinyOrm defines
|
||||
# ---
|
||||
DEFINES += PROJECT_TINYORM
|
||||
# Log queries with time measurement
|
||||
DEFINES += MANGO_DEBUG_SQL
|
||||
|
||||
# Qt defines
|
||||
# ---
|
||||
|
||||
# The following define makes your compiler emit warnings if you use
|
||||
# any Qt feature that has been marked 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 it uses 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
|
||||
|
||||
#DEFINES += QT_NO_CAST_FROM_ASCII
|
||||
#DEFINES += QT_RESTRICTED_CAST_FROM_ASCII
|
||||
DEFINES += QT_NO_CAST_TO_ASCII
|
||||
DEFINES += QT_NO_CAST_FROM_BYTEARRAY
|
||||
DEFINES += QT_USE_QSTRINGBUILDER
|
||||
DEFINES += QT_STRICT_ITERATORS
|
||||
|
||||
# WinApi
|
||||
# ---
|
||||
# Windows 10 1903 "19H1" - 0x0A000007
|
||||
DEFINES += NTDDI_VERSION=0x0A000007
|
||||
# Windows 10 - 0x0A00
|
||||
DEFINES += _WIN32_WINNT=0x0A00
|
||||
DEFINES += _WIN32_IE=0x0A00
|
||||
DEFINES += UNICODE
|
||||
DEFINES += _UNICODE
|
||||
DEFINES += WIN32
|
||||
DEFINES += _WIN32
|
||||
DEFINES += WIN32_LEAN_AND_MEAN
|
||||
DEFINES += NOMINMAX
|
||||
|
||||
win32-msvc* {
|
||||
# I don't use -MP flag, because using jom
|
||||
QMAKE_CXXFLAGS += -guard:cf -permissive- -Zc:ternary
|
||||
QMAKE_LFLAGS += /guard:cf
|
||||
QMAKE_LFLAGS_RELEASE += /OPT:REF /OPT:ICF=5
|
||||
}
|
||||
|
||||
win32-g++* {
|
||||
}
|
||||
else:win32-msvc* {
|
||||
# MySQL C library is used by ORM and it uses mysql_ping()
|
||||
INCLUDEPATH += $$quote(C:/Program Files/MySQL/MySQL Server 8.0/include)
|
||||
# range-v3
|
||||
INCLUDEPATH += $$quote(E:/c/qMedia/vcpkg/installed/x64-windows/include)
|
||||
# boost
|
||||
INCLUDEPATH += $$quote(E:/c_libs/boost/boost_latest)
|
||||
|
||||
LIBS += $$quote(-LC:/Program Files/MySQL/MySQL Server 8.0/lib)
|
||||
|
||||
LIBS += libmysql.lib
|
||||
}
|
||||
|
||||
# File version and windows manifest
|
||||
# ---
|
||||
win32:VERSION = 0.1.0.0
|
||||
else:VERSION = 0.1.0
|
||||
|
||||
win32-msvc* {
|
||||
QMAKE_TARGET_PRODUCT = TinyOrm
|
||||
QMAKE_TARGET_DESCRIPTION = TinyOrm user friendly ORM
|
||||
QMAKE_TARGET_COMPANY = Crystal Studio
|
||||
QMAKE_TARGET_COPYRIGHT = Copyright (©) 2020 Crystal Studio
|
||||
# RC_ICONS = images/qMedia.ico
|
||||
RC_LANG = 1033
|
||||
}
|
||||
|
||||
# Use Precompiled headers (PCH)
|
||||
# ---
|
||||
|
||||
INCLUDEPATH += $$PWD
|
||||
|
||||
PRECOMPILED_HEADER = pch.h
|
||||
|
||||
precompile_header:!isEmpty(PRECOMPILED_HEADER) {
|
||||
DEFINES += USING_PCH
|
||||
}
|
||||
|
||||
HEADERS += pch.h
|
||||
|
||||
# Application source files
|
||||
# ---
|
||||
|
||||
SOURCES += main.cpp
|
||||
|
||||
include(src/src.pri)
|
||||
tests.depends = src
|
||||
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
# Configuration
|
||||
# ---
|
||||
|
||||
CONFIG *= c++2a strict_c++ silent warn_on
|
||||
CONFIG -= c++11 app_bundle
|
||||
|
||||
# Qt defines
|
||||
# ---
|
||||
|
||||
# The following define makes your compiler emit warnings if you use
|
||||
# any Qt feature that has been marked 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 it uses 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
|
||||
|
||||
#DEFINES += QT_NO_CAST_FROM_ASCII
|
||||
#DEFINES += QT_RESTRICTED_CAST_FROM_ASCII
|
||||
DEFINES += QT_NO_CAST_TO_ASCII
|
||||
DEFINES += QT_NO_CAST_FROM_BYTEARRAY
|
||||
DEFINES += QT_USE_QSTRINGBUILDER
|
||||
DEFINES += QT_STRICT_ITERATORS
|
||||
|
||||
# WinApi
|
||||
# ---
|
||||
|
||||
# Windows 10 1903 "19H1" - 0x0A000007
|
||||
DEFINES += NTDDI_VERSION=0x0A000007
|
||||
# Windows 10 - 0x0A00
|
||||
DEFINES += _WIN32_WINNT=0x0A00
|
||||
DEFINES += _WIN32_IE=0x0A00
|
||||
DEFINES += UNICODE
|
||||
DEFINES += _UNICODE
|
||||
DEFINES += WIN32
|
||||
DEFINES += _WIN32
|
||||
DEFINES += WIN32_LEAN_AND_MEAN
|
||||
DEFINES += NOMINMAX
|
||||
|
||||
# Compilers
|
||||
# ---
|
||||
|
||||
win32-msvc* {
|
||||
# I don't use -MP flag, because using jom
|
||||
QMAKE_CXXFLAGS += -guard:cf -permissive- -Zc:ternary
|
||||
QMAKE_LFLAGS += /guard:cf
|
||||
QMAKE_LFLAGS_RELEASE += /OPT:REF /OPT:ICF=5
|
||||
}
|
||||
|
||||
# TinyOrm library headers
|
||||
# ---
|
||||
|
||||
INCLUDEPATH += $$PWD/src
|
||||
|
||||
# Use Precompiled headers (PCH)
|
||||
# ---
|
||||
|
||||
PRECOMPILED_HEADER = $$quote($$PWD/src/pch.h)
|
||||
|
||||
precompile_header:!isEmpty(PRECOMPILED_HEADER) {
|
||||
DEFINES += USING_PCH
|
||||
}
|
||||
|
||||
HEADERS += $$quote($$PWD/src/pch.h)
|
||||
@@ -1,18 +0,0 @@
|
||||
#include <QDebug>
|
||||
|
||||
#include <qt_windows.h>
|
||||
|
||||
#include "testorm.h"
|
||||
|
||||
int main(int, char *[])
|
||||
{
|
||||
// SetConsoleOutputCP(CP_UTF8);
|
||||
SetConsoleOutputCP(1250);
|
||||
|
||||
qDebug() << "";
|
||||
|
||||
TestOrm testOrm;
|
||||
testOrm.run();
|
||||
|
||||
qDebug() << "\n";
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
#ifndef TINYORM_EXPORT_H
|
||||
#define TINYORM_EXPORT_H
|
||||
|
||||
#if defined(_MSC_VER) || defined(WIN64) || defined(_WIN64) || defined(__WIN64__) || defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
|
||||
# define TINY_DECL_EXPORT __declspec(dllexport)
|
||||
# define TINY_DECL_IMPORT __declspec(dllimport)
|
||||
#else
|
||||
# define TINY_DECL_EXPORT __attribute__((visibility("default")))
|
||||
# define TINY_DECL_IMPORT __attribute__((visibility("default")))
|
||||
#endif
|
||||
|
||||
#if defined(TINYORM_BUILDING_SHARED)
|
||||
# define SHAREDLIB_EXPORT TINY_DECL_EXPORT
|
||||
#else
|
||||
# define SHAREDLIB_EXPORT TINY_DECL_IMPORT
|
||||
#endif
|
||||
|
||||
#endif // TINYORM_EXPORT_H
|
||||
@@ -265,7 +265,7 @@ DatabaseConnection::statement(const QString &queryString,
|
||||
{
|
||||
auto query = prepareQuery(queryString, bindings);
|
||||
|
||||
#ifdef MANGO_DEBUG_SQL
|
||||
#ifdef TINYORM_DEBUG_SQL
|
||||
QElapsedTimer timer;
|
||||
timer.start();
|
||||
#endif
|
||||
@@ -274,13 +274,13 @@ DatabaseConnection::statement(const QString &queryString,
|
||||
if (!ok) {
|
||||
qDebug() << "Statement in DatabaseConnection::statement() failed :"
|
||||
<< query.lastError().text();
|
||||
#ifdef MANGO_DEBUG_SQL
|
||||
#ifdef TINYORM_DEBUG_SQL
|
||||
logQuery(query, timer.elapsed());
|
||||
#else
|
||||
logQuery(query);
|
||||
#endif
|
||||
}
|
||||
#ifdef MANGO_DEBUG_SQL
|
||||
#ifdef TINYORM_DEBUG_SQL
|
||||
else
|
||||
logQuery(query, timer.elapsed());
|
||||
#endif
|
||||
@@ -294,7 +294,7 @@ DatabaseConnection::affectingStatement(const QString &queryString,
|
||||
{
|
||||
auto query = prepareQuery(queryString, bindings);
|
||||
|
||||
#ifdef MANGO_DEBUG_SQL
|
||||
#ifdef TINYORM_DEBUG_SQL
|
||||
QElapsedTimer timer;
|
||||
timer.start();
|
||||
#endif
|
||||
@@ -304,13 +304,13 @@ DatabaseConnection::affectingStatement(const QString &queryString,
|
||||
if (!ok) {
|
||||
qDebug() << "Affecting statement in DatabaseConnection::affectingStatement() failed :"
|
||||
<< query.lastError().text();
|
||||
#ifdef MANGO_DEBUG_SQL
|
||||
#ifdef TINYORM_DEBUG_SQL
|
||||
logQuery(query, timer.elapsed());
|
||||
#else
|
||||
logQuery(query);
|
||||
#endif
|
||||
}
|
||||
#ifdef MANGO_DEBUG_SQL
|
||||
#ifdef TINYORM_DEBUG_SQL
|
||||
else
|
||||
logQuery(query, timer.elapsed());
|
||||
#endif
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace MANGO_COMMON_NAMESPACE
|
||||
namespace Orm
|
||||
{
|
||||
|
||||
class DatabaseConnection final
|
||||
class SHAREDLIB_EXPORT DatabaseConnection final
|
||||
{
|
||||
Q_DISABLE_COPY(DatabaseConnection)
|
||||
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ namespace MANGO_COMMON_NAMESPACE
|
||||
namespace Orm
|
||||
{
|
||||
|
||||
class Grammar
|
||||
class SHAREDLIB_EXPORT Grammar
|
||||
{
|
||||
public:
|
||||
/*! Compile a select query into SQL. */
|
||||
|
||||
@@ -6,7 +6,9 @@
|
||||
#include <memory>
|
||||
#include <any>
|
||||
#include <typeindex>
|
||||
#include <optional>
|
||||
|
||||
#include "export.h"
|
||||
#include "orm/tiny/relations/relation.h"
|
||||
|
||||
class Torrent;
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "orm/expression.h"
|
||||
#include "orm/ormtypes.h"
|
||||
|
||||
// TODO now rename mango to tinyorm silverqx
|
||||
#ifdef MANGO_COMMON_NAMESPACE
|
||||
namespace MANGO_COMMON_NAMESPACE
|
||||
{
|
||||
@@ -24,7 +25,8 @@ namespace Orm::Query
|
||||
|
||||
class JoinClause;
|
||||
|
||||
class Builder
|
||||
|
||||
class SHAREDLIB_EXPORT Builder
|
||||
{
|
||||
public:
|
||||
Builder(const DatabaseConnection &db, const Grammar &grammar);
|
||||
|
||||
@@ -442,7 +442,9 @@ namespace Tiny
|
||||
|
||||
template<typename Model, typename ...AllRelations>
|
||||
BaseModel<Model, AllRelations...>::BaseModel(const QVector<AttributeItem> &attributes)
|
||||
#ifdef QT_DEBUG
|
||||
: m_table(&model().u_table)
|
||||
#endif
|
||||
{
|
||||
// Compile time check if a primary key type is supported by a QVariant
|
||||
qMetaTypeId<typename Model::KeyType>();
|
||||
|
||||
@@ -29,6 +29,7 @@ SOURCES += \
|
||||
$$PWD/torrentpreviewablefileproperty.cpp \
|
||||
|
||||
HEADERS += \
|
||||
$$PWD/export.h \
|
||||
$$PWD/orm/databaseconnection.h \
|
||||
$$PWD/orm/entitymanager.h \
|
||||
$$PWD/orm/expression.h \
|
||||
@@ -57,3 +58,6 @@ HEADERS += \
|
||||
$$PWD/torrentpeer.h \
|
||||
$$PWD/torrentpreviewablefile.h \
|
||||
$$PWD/torrentpreviewablefileproperty.h \
|
||||
|
||||
SUBDIRS += \
|
||||
$$PWD/src.pro
|
||||
|
||||
+80
@@ -0,0 +1,80 @@
|
||||
QT *= core sql
|
||||
QT -= gui
|
||||
|
||||
TEMPLATE = lib
|
||||
TARGET = TinyOrm
|
||||
|
||||
# Configuration
|
||||
# ---
|
||||
include($$TINYORM_SOURCE_TREE/config.pri)
|
||||
|
||||
# TinyOrm library specific configuration
|
||||
# ---
|
||||
|
||||
CONFIG *= create_prl
|
||||
#CONFIG *= create_libtool create_pc
|
||||
|
||||
# Some info output
|
||||
# ---
|
||||
|
||||
CONFIG(debug, debug|release): message( "Project is built in DEBUG mode." )
|
||||
CONFIG(release, debug|release): message( "Project is built in RELEASE mode." )
|
||||
|
||||
# Disable debug output in release mode
|
||||
CONFIG(release, debug|release) {
|
||||
message( "Disabling debug output." )
|
||||
DEFINES += QT_NO_DEBUG_OUTPUT
|
||||
}
|
||||
|
||||
# TinyOrm defines
|
||||
# ---
|
||||
DEFINES += PROJECT_TINYORM
|
||||
# Log queries with time measurement
|
||||
DEFINES += TINYORM_DEBUG_SQL
|
||||
|
||||
# Build as shared library
|
||||
DEFINES += TINYORM_BUILDING_SHARED
|
||||
|
||||
# Dependencies include and library paths
|
||||
# ---
|
||||
win32-g++* {
|
||||
}
|
||||
else:win32-msvc* {
|
||||
# MySQL C library is used by ORM and it uses mysql_ping()
|
||||
INCLUDEPATH += $$quote(C:/Program Files/MySQL/MySQL Server 8.0/include)
|
||||
# range-v3
|
||||
INCLUDEPATH += $$quote(E:/c/qMedia/vcpkg/installed/x64-windows/include)
|
||||
# boost
|
||||
# INCLUDEPATH += $$quote(E:/c_libs/boost/boost_latest)
|
||||
|
||||
LIBS += $$quote(-LC:/Program Files/MySQL/MySQL Server 8.0/lib)
|
||||
|
||||
LIBS += libmysql.lib
|
||||
}
|
||||
|
||||
# File version and windows manifest
|
||||
# ---
|
||||
win32:VERSION = 0.1.0.0
|
||||
else:VERSION = 0.1.0
|
||||
|
||||
win32-msvc* {
|
||||
QMAKE_TARGET_PRODUCT = TinyOrm
|
||||
QMAKE_TARGET_DESCRIPTION = TinyOrm user friendly ORM
|
||||
QMAKE_TARGET_COMPANY = Crystal Studio
|
||||
QMAKE_TARGET_COPYRIGHT = Copyright (©) 2020 Crystal Studio
|
||||
# RC_ICONS = images/qMedia.ico
|
||||
RC_LANG = 1033
|
||||
}
|
||||
|
||||
# TinyOrm library source files
|
||||
# ---
|
||||
|
||||
include(src.pri)
|
||||
|
||||
# Default rules for deployment
|
||||
# ---
|
||||
|
||||
release {
|
||||
win32-msvc*: target.path = c:/optx64/$${TARGET}
|
||||
!isEmpty(target.path): INSTALLS += target
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
SUBDIRS = \
|
||||
functional \
|
||||
unit \
|
||||
@@ -0,0 +1,4 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
SUBDIRS = \
|
||||
orm \
|
||||
@@ -0,0 +1,4 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
SUBDIRS = \
|
||||
query \
|
||||
@@ -0,0 +1,4 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
SUBDIRS = \
|
||||
querybuilder
|
||||
@@ -0,0 +1,3 @@
|
||||
include($$TINYORM_SOURCE_TREE/tests/config.pri)
|
||||
|
||||
SOURCES = tst_querybuilder.cpp
|
||||
@@ -0,0 +1,48 @@
|
||||
#include <QtTest>
|
||||
|
||||
#include "orm/databaseconnection.h"
|
||||
#include "orm/grammar.h"
|
||||
#include "orm/query/querybuilder.h"
|
||||
|
||||
class tst_QueryBuilder : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
tst_QueryBuilder();
|
||||
~tst_QueryBuilder();
|
||||
|
||||
private slots:
|
||||
void initTestCase();
|
||||
void cleanupTestCase();
|
||||
|
||||
void test_case1();
|
||||
};
|
||||
|
||||
tst_QueryBuilder::tst_QueryBuilder()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
tst_QueryBuilder::~tst_QueryBuilder()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void tst_QueryBuilder::initTestCase()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void tst_QueryBuilder::cleanupTestCase()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void tst_QueryBuilder::test_case1()
|
||||
{
|
||||
}
|
||||
|
||||
QTEST_APPLESS_MAIN(tst_QueryBuilder)
|
||||
|
||||
#include "tst_querybuilder.moc"
|
||||
@@ -0,0 +1,5 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
SUBDIRS = \
|
||||
orm \
|
||||
query \
|
||||
@@ -0,0 +1,3 @@
|
||||
include($$TINYORM_SOURCE_TREE/tests/config.pri)
|
||||
|
||||
SOURCES = tst_databaseconnection.cpp
|
||||
@@ -0,0 +1,51 @@
|
||||
#include <QtTest>
|
||||
|
||||
#include "orm/databaseconnection.h"
|
||||
|
||||
class tst_DatabaseConnection : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
tst_DatabaseConnection();
|
||||
~tst_DatabaseConnection();
|
||||
|
||||
private slots:
|
||||
void initTestCase();
|
||||
void cleanupTestCase();
|
||||
|
||||
void pingDatabase();
|
||||
};
|
||||
|
||||
tst_DatabaseConnection::tst_DatabaseConnection()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
tst_DatabaseConnection::~tst_DatabaseConnection()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void tst_DatabaseConnection::initTestCase()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void tst_DatabaseConnection::cleanupTestCase()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void tst_DatabaseConnection::pingDatabase()
|
||||
{
|
||||
auto &conn = Orm::DatabaseConnection::instance();
|
||||
|
||||
const auto result = conn.pingDatabase();
|
||||
|
||||
QVERIFY2(result, "Ping database failed.");
|
||||
}
|
||||
|
||||
QTEST_APPLESS_MAIN(tst_DatabaseConnection)
|
||||
|
||||
#include "tst_databaseconnection.moc"
|
||||
@@ -0,0 +1,3 @@
|
||||
include($$TINYORM_SOURCE_TREE/tests/config.pri)
|
||||
|
||||
SOURCES = tst_grammar.cpp
|
||||
@@ -0,0 +1,47 @@
|
||||
#include <QtTest>
|
||||
|
||||
#include "orm/grammar.h"
|
||||
|
||||
class tst_Grammar : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
tst_Grammar();
|
||||
~tst_Grammar();
|
||||
|
||||
private slots:
|
||||
void initTestCase();
|
||||
void cleanupTestCase();
|
||||
|
||||
void test_case1();
|
||||
|
||||
};
|
||||
|
||||
tst_Grammar::tst_Grammar()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
tst_Grammar::~tst_Grammar()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void tst_Grammar::initTestCase()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void tst_Grammar::cleanupTestCase()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void tst_Grammar::test_case1()
|
||||
{
|
||||
}
|
||||
|
||||
QTEST_APPLESS_MAIN(tst_Grammar)
|
||||
|
||||
#include "tst_grammar.moc"
|
||||
@@ -0,0 +1,5 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
SUBDIRS = \
|
||||
databaseconnection \
|
||||
grammar \
|
||||
@@ -0,0 +1,4 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
SUBDIRS = \
|
||||
querybuilder
|
||||
@@ -0,0 +1,3 @@
|
||||
include($$TINYORM_SOURCE_TREE/tests/config.pri)
|
||||
|
||||
SOURCES = tst_querybuilder.cpp
|
||||
@@ -0,0 +1,102 @@
|
||||
#include <QtTest>
|
||||
|
||||
#include "orm/databaseconnection.h"
|
||||
#include "orm/grammar.h"
|
||||
#include "orm/query/querybuilder.h"
|
||||
|
||||
class tst_QueryBuilder : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
tst_QueryBuilder();
|
||||
~tst_QueryBuilder();
|
||||
|
||||
private slots:
|
||||
void initTestCase();
|
||||
void cleanupTestCase();
|
||||
|
||||
void setDistinct();
|
||||
void setTable();
|
||||
void setFrom();
|
||||
};
|
||||
|
||||
tst_QueryBuilder::tst_QueryBuilder()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
tst_QueryBuilder::~tst_QueryBuilder()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void tst_QueryBuilder::initTestCase()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void tst_QueryBuilder::cleanupTestCase()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void tst_QueryBuilder::setDistinct()
|
||||
{
|
||||
Orm::QueryBuilder builder(Orm::DatabaseConnection::instance(),
|
||||
Orm::Grammar());
|
||||
|
||||
auto distinct = builder.getDistinct();
|
||||
QCOMPARE(distinct, false);
|
||||
|
||||
builder.distinct();
|
||||
distinct = builder.getDistinct();
|
||||
|
||||
QCOMPARE(distinct, true);
|
||||
}
|
||||
|
||||
void tst_QueryBuilder::setTable()
|
||||
{
|
||||
Orm::QueryBuilder builder(Orm::DatabaseConnection::instance(),
|
||||
Orm::Grammar());
|
||||
|
||||
auto table = builder.getTable();
|
||||
auto tableFrom = builder.getFrom();
|
||||
const auto &expected = QStringLiteral("");
|
||||
QCOMPARE(table, expected);
|
||||
QCOMPARE(tableFrom, expected);
|
||||
|
||||
const auto &newTableName = QStringLiteral("table_name");
|
||||
builder.table(newTableName);
|
||||
|
||||
table = builder.getTable();
|
||||
tableFrom = builder.getFrom();
|
||||
|
||||
QCOMPARE(table, newTableName);
|
||||
QCOMPARE(tableFrom, newTableName);
|
||||
}
|
||||
|
||||
void tst_QueryBuilder::setFrom()
|
||||
{
|
||||
Orm::QueryBuilder builder(Orm::DatabaseConnection::instance(),
|
||||
Orm::Grammar());
|
||||
|
||||
auto table = builder.getTable();
|
||||
auto tableFrom = builder.getFrom();
|
||||
const auto &expected = QStringLiteral("");
|
||||
QCOMPARE(table, expected);
|
||||
QCOMPARE(tableFrom, expected);
|
||||
|
||||
const auto &newTableName = QStringLiteral("table_name");
|
||||
builder.from(newTableName);
|
||||
|
||||
table = builder.getTable();
|
||||
tableFrom = builder.getFrom();
|
||||
|
||||
QCOMPARE(table, newTableName);
|
||||
QCOMPARE(tableFrom, newTableName);
|
||||
}
|
||||
|
||||
QTEST_APPLESS_MAIN(tst_QueryBuilder)
|
||||
|
||||
#include "tst_querybuilder.moc"
|
||||
@@ -0,0 +1,4 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
SUBDIRS = \
|
||||
orm \
|
||||
@@ -0,0 +1,27 @@
|
||||
QT *= core sql testlib
|
||||
QT -= gui
|
||||
|
||||
TEMPLATE = app
|
||||
|
||||
# Common configuration
|
||||
# ---
|
||||
|
||||
include($$TINYORM_SOURCE_TREE/config.pri)
|
||||
|
||||
# Tests specific configuration
|
||||
# ---
|
||||
|
||||
CONFIG *= qt console testcase link_prl
|
||||
|
||||
# Link against TinyOrm library
|
||||
# ---
|
||||
|
||||
win32:CONFIG(release, debug|release) {
|
||||
LIBS += -L$$TINYORM_BUILD_TREE/src/release/ -lTinyOrm0
|
||||
}
|
||||
else:win32:CONFIG(debug, debug|release) {
|
||||
LIBS += -L$$TINYORM_BUILD_TREE/src/debug/ -lTinyOrm0
|
||||
}
|
||||
else:unix {
|
||||
LIBS += -L$$TINYORM_BUILD_TREE/src/ -lTinyOrm0
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
SUBDIRS = auto
|
||||
Reference in New Issue
Block a user