From kde-commits Tue Jun 30 22:09:08 2015 From: Jaroslaw Staniek Date: Tue, 30 Jun 2015 22:09:08 +0000 To: kde-commits Subject: [kdb] autotests: Add autotest for some KDb::* functions Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=143570216111545 Git commit ffaaabbc62d59bb42fbd0f34c1f2ee71940729df by Jaroslaw Staniek. Committed on 30/06/2015 at 16:51. Pushed by staniek into branch 'master'. Add autotest for some KDb::* functions - KDbVersionInfo - field types - fieldTypesForGroup - fieldTypeNamesForGroup - fieldTypeStringsForGroup - defaultFieldTypeForGroup - simplifiedFieldTypeName - cstringToVariant (much more is a TODO) M +1 -0 autotests/CMakeLists.txt A +378 -0 autotests/KDbTest.cpp [License: LGPL (v2+)] A +45 -0 autotests/KDbTest.h [License: LGPL (v2+)] http://commits.kde.org/kdb/ffaaabbc62d59bb42fbd0f34c1f2ee71940729df diff --git a/autotests/CMakeLists.txt b/autotests/CMakeLists.txt index f38826a..d0eef66 100644 --- a/autotests/CMakeLists.txt +++ b/autotests/CMakeLists.txt @@ -33,6 +33,7 @@ ecm_add_tests( ConnectionTest.cpp DriverTest.cpp ExpressionsTest.cpp + KDbTest.cpp = LINK_LIBRARIES Qt5::Test diff --git a/autotests/KDbTest.cpp b/autotests/KDbTest.cpp new file mode 100644 index 0000000..aff0f98 --- /dev/null +++ b/autotests/KDbTest.cpp @@ -0,0 +1,378 @@ +/* This file is part of the KDE project + Copyright (C) 2015 Jaros=C5=82aw Staniek + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public Licen= se + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. +*/ + +#include "KDbTest.h" + +#include +#include + +#include + +QTEST_GUILESS_MAIN(KDbTest) + +Q_DECLARE_METATYPE(KDbField::TypeGroup) +Q_DECLARE_METATYPE(KDbField::Type) +Q_DECLARE_METATYPE(KDb::Signedness) +Q_DECLARE_METATYPE(QList) + +void KDbTest::initTestCase() +{ +} + +void KDbTest::testVersionInfo() +{ + KDbVersionInfo info =3D KDb::version(); + KDbVersionInfo info2(KDb::version()); + QCOMPARE(info, info2); + KDbVersionInfo info3(info.major(), info.minor(), info.release()); + QCOMPARE(info, info3); + QVERIFY(KDbVersionInfo(0, 0, 0).isNull()); + QVERIFY(!info.isNull()); + QVERIFY(!info2.isNull()); + QVERIFY(!info3.isNull()); +} + +void KDbTest::testFieldTypes() +{ + QCOMPARE(KDbField::FirstType, KDbField::Byte); + QCOMPARE(KDbField::LastType, KDbField::BLOB); + QVERIFY(KDbField::FirstType < KDbField::LastType); +} + +void KDbTest::testFieldTypesForGroup_data() +{ + QTest::addColumn("typeGroup"); + QTest::addColumn>("types"); + + QTest::newRow("invalid") << KDbField::InvalidGroup + << (QList() << KDbField::InvalidType); + QTest::newRow("text") << KDbField::TextGroup << (QList= () + << KDbField::Text << KDbField::LongText); + QTest::newRow("integer") << KDbField::IntegerGroup + << (QList() + << KDbField::Byte << KDbField::ShortInteger << KDbField::Integer <= < KDbField::BigInteger); + QTest::newRow("float") << KDbField::FloatGroup + << (QList() << KDbField::Float << KDbField::Double= ); + QTest::newRow("boolean") << KDbField::BooleanGroup + << (QList() << KDbField::Boolean); + QTest::newRow("datetime") << KDbField::DateTimeGroup + << (QList() << KDbField::Date << KDbField::DateTim= e << KDbField::Time); + QTest::newRow("blob") << KDbField::BLOBGroup + << (QList() << KDbField::BLOB); +} + +void KDbTest::testFieldTypesForGroup() +{ + QFETCH(KDbField::TypeGroup, typeGroup); + QFETCH(QList, types); + QCOMPARE(KDb::fieldTypesForGroup(typeGroup), types); +} + +void KDbTest::testFieldTypeNamesAndStringsForGroup_data() +{ + QTest::addColumn("typeGroup"); + QTest::addColumn>("typeNames"); + QTest::addColumn("typeStrings"); + + QTest::newRow("invalid") << KDbField::InvalidGroup + << (QList() << "Invalid Type") + << (QStringList() << "InvalidType"); + QTest::newRow("text") << KDbField::TextGroup << (QList() + << "Text" << "Long Text") + << (QStringList() << "Text" << "LongText"); + QTest::newRow("integer") << KDbField::IntegerGroup + << (QList() + << "Byte" << "Short Integer Number" << "Integer Number" << "Big In= teger Number") + << (QStringList() << "Byte" << "ShortInteger" << "Integer" << "Big= Integer"); + QTest::newRow("float") << KDbField::FloatGroup + << (QList() << "Single Precision Number" << "Double Pr= ecision Number") + << (QStringList() << "Float" << "Double"); + QTest::newRow("boolean") << KDbField::BooleanGroup + << (QList() << "Yes/No Value") + << (QStringList() << "Boolean"); + QTest::newRow("datetime") << KDbField::DateTimeGroup + << (QList() << "Date" << "Date and Time" << "Time") + << (QStringList() << "Date" << "DateTime" << "Time"); + QTest::newRow("blob") << KDbField::BLOBGroup + << (QList() << "Object") + << (QStringList() << "BLOB"); +} + +void KDbTest::testFieldTypeNamesAndStringsForGroup() +{ + QFETCH(KDbField::TypeGroup, typeGroup); + QFETCH(QList, typeNames); + QFETCH(QStringList, typeStrings); + QStringList translatedNames; + foreach(const QByteArray &name, typeNames) { + translatedNames.append(QObject::tr(name.constData())); + } + QCOMPARE(KDb::fieldTypeNamesForGroup(typeGroup), translatedNames); + QCOMPARE(KDb::fieldTypeStringsForGroup(typeGroup), typeStrings); +} + +void KDbTest::testDefaultFieldTypeForGroup() +{ + QCOMPARE(KDb::defaultFieldTypeForGroup(KDbField::InvalidGroup), KDbFie= ld::InvalidType); + QCOMPARE(KDb::defaultFieldTypeForGroup(KDbField::TextGroup), KDbField:= :Text); + QCOMPARE(KDb::defaultFieldTypeForGroup(KDbField::IntegerGroup), KDbFie= ld::Integer); + QCOMPARE(KDb::defaultFieldTypeForGroup(KDbField::FloatGroup), KDbField= ::Double); + QCOMPARE(KDb::defaultFieldTypeForGroup(KDbField::BooleanGroup), KDbFie= ld::Boolean); + QCOMPARE(KDb::defaultFieldTypeForGroup(KDbField::DateTimeGroup), KDbFi= eld::Date); + QCOMPARE(KDb::defaultFieldTypeForGroup(KDbField::BLOBGroup), KDbField:= :BLOB); +} + +void KDbTest::testSimplifiedFieldTypeName() +{ + QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::InvalidType), QObject:= :tr("Invalid Group")); + QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Byte), QObject::tr("Nu= mber")); + QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::ShortInteger), QObject= ::tr("Number")); + QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Integer), QObject::tr(= "Number")); + QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::BigInteger), QObject::= tr("Number")); + QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Boolean), QObject::tr(= "Yes/No")); + QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Date), QObject::tr("Da= te/Time")); + QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::DateTime), QObject::tr= ("Date/Time")); + QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Time), QObject::tr("Da= te/Time")); + QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Float), QObject::tr("N= umber")); + QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Double), QObject::tr("= Number")); + QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Text), QObject::tr("Te= xt")); + QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::LongText), QObject::tr= ("Text")); + QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::BLOB), QObject::tr("Im= age")); + QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Null), QObject::tr("In= valid Group")); + QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Asterisk), QObject::tr= ("Invalid Group")); + QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Enum), QObject::tr("In= valid Group")); + QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Map), QObject::tr("Inv= alid Group")); + QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Tuple), QObject::tr("I= nvalid Group")); +} + +void KDbTest::testCstringToVariant_data() +{ + QTest::addColumn("data"); // QString() -> 0, QString("") -> e= mpty string "" + QTest::addColumn("type"); + QTest::addColumn("length"); + QTest::addColumn("variant"); + QTest::addColumn("signedness"); + QTest::addColumn("okResult"); + + QTest::newRow("invalid1") << QString() << KDbField::InvalidType << -1 = << QVariant() << KDb::Signed << false; + QTest::newRow("invalid2") << "" << KDbField::InvalidType << -1 << QVar= iant() << KDb::Signed << false; + QTest::newRow("invalid3") << "abc" << KDbField::InvalidType << 3 << QV= ariant() << KDb::Signed << false; + QTest::newRow("byte1") << "0" << KDbField::Byte << 1 << QVariant(0) <<= KDb::Signed << true; + QTest::newRow("ubyte1") << "0" << KDbField::Byte << 1 << QVariant(0) <= < KDb::Unsigned << true; + QTest::newRow("byte2") << "42" << KDbField::Byte << -1 << QVariant(42)= << KDb::Signed << true; + QTest::newRow("ubyte2") << "42" << KDbField::Byte << -1 << QVariant(42= ) << KDb::Unsigned << true; + QTest::newRow("byte3") << "129" << KDbField::Byte << -1 << QVariant() = << KDb::Signed << false; + QTest::newRow("ubyte3") << "129" << KDbField::Byte << -1 << QVariant(1= 29) << KDb::Unsigned << true; + QTest::newRow("byte4") << "-128" << KDbField::Byte << -1 << QVariant(-= 128) << KDb::Signed << true; + QTest::newRow("ubyte4") << "-128" << KDbField::Byte << -1 << QVariant(= ) << KDb::Unsigned << false; + QTest::newRow("short1") << "-123" << KDbField::ShortInteger << -1 << Q= Variant(-123) << KDb::Signed << true; + QTest::newRow("short2") << "942" << KDbField::ShortInteger << -1 << QV= ariant(942) << KDb::Signed << true; + QTest::newRow("short3") << "32767" << KDbField::ShortInteger << -1 << = QVariant(32767) << KDb::Signed << true; + QTest::newRow("short4") << "32768" << KDbField::ShortInteger << -1 << = QVariant() << KDb::Signed << false; + QTest::newRow("ushort4") << "32768" << KDbField::ShortInteger << -1 <<= QVariant(32768) << KDb::Unsigned << true; + QTest::newRow("short5") << "-32768" << KDbField::ShortInteger << -1 <<= QVariant(-32768) << KDb::Signed << true; + QTest::newRow("ushort5") << "-32768" << KDbField::ShortInteger << -1 <= < QVariant() << KDb::Unsigned << false; + QTest::newRow("int1") << QString::number(0x07FFFFFFF) << KDbField::Int= eger << -1 << QVariant(0x07FFFFFFF) << KDb::Signed << true; + QTest::newRow("uint1") << QString::number(0x07FFFFFFF) << KDbField::In= teger << -1 << QVariant(0x07FFFFFFF) << KDb::Unsigned << true; + QTest::newRow("int2") << QString::number(-0x07FFFFFFF) << KDbField::In= teger << -1 << QVariant(-0x07FFFFFFF) << KDb::Signed << true; + QTest::newRow("uint2") << QString::number(-0x07FFFFFFF) << KDbField::I= nteger << -1 << QVariant() << KDb::Unsigned << false; + QTest::newRow("int3") << QString::number(-0x080000000) << KDbField::In= teger << -1 << QVariant() << KDb::Signed << false; + QTest::newRow("uint4") << "-1" << KDbField::Integer << -1 << QVariant(= ) << KDb::Unsigned << false; + QTest::newRow("int4") << "-1" << KDbField::Integer << -1 << QVariant(-= 1) << KDb::Signed << true; + //!< @todo cannot be larger? + QTest::newRow("bigint1") << QString::number(0x07FFFFFFF) << KDbField::= BigInteger << -1 << QVariant(0x07FFFFFFF) << KDb::Signed << true; + QTest::newRow("ubigint1") << QString::number(0x07FFFFFFF) << KDbField:= :BigInteger << -1 << QVariant(0x07FFFFFFF) << KDb::Unsigned << true; + QTest::newRow("bigint2") << QString::number(-0x07FFFFFFF) << KDbField:= :BigInteger << -1 << QVariant(-0x07FFFFFFF) << KDb::Signed << true; + QTest::newRow("ubigint2") << QString::number(-0x07FFFFFFF) << KDbField= ::BigInteger << -1 << QVariant() << KDb::Unsigned << false; + QTest::newRow("bigint3") << QString::number(-0x080000000) << KDbField:= :BigInteger << -1 << QVariant() << KDb::Signed << false; + QTest::newRow("ubigint4") << "-1" << KDbField::BigInteger << -1 << QVa= riant() << KDb::Unsigned << false; + QTest::newRow("bigint4") << "-1" << KDbField::BigInteger << -1 << QVar= iant(-1) << KDb::Signed << true; + QTest::newRow("bool0") << "0" << KDbField::Boolean << -1 << QVariant(f= alse) << KDb::Signed << true; + QTest::newRow("bool1") << "1" << KDbField::Boolean << -1 << QVariant(t= rue) << KDb::Signed << true; + QTest::newRow("bool-") << "-" << KDbField::Boolean << -1 << QVariant(t= rue) << KDb::Signed << true; + QTest::newRow("bool5") << "5" << KDbField::Boolean << -1 << QVariant(t= rue) << KDb::Signed << true; + QTest::newRow("bool false") << "false" << KDbField::Boolean << -1 << Q= Variant(false) << KDb::Signed << true; + QTest::newRow("bool False") << "False" << KDbField::Boolean << -1 << Q= Variant(false) << KDb::Signed << true; + QTest::newRow("bool TRUE") << "TRUE" << KDbField::Boolean << -1 << QVa= riant(true) << KDb::Signed << true; + QTest::newRow("bool true") << "true" << KDbField::Boolean << -1 << QVa= riant(true) << KDb::Signed << true; + QTest::newRow("bool no") << "no" << KDbField::Boolean << -1 << QVarian= t(true) << KDb::Signed << true; // surprised? See docs for QVariant::toBool= (). + + QTest::newRow("Null") << " " << KDbField::Null << -1 << QVariant() << = KDb::Signed << false; + QTest::newRow("Asterisk") << " " << KDbField::Asterisk << -1 << QVaria= nt() << KDb::Signed << false; + QTest::newRow("Enum") << " " << KDbField::Enum << -1 << QVariant() << = KDb::Signed << false; + QTest::newRow("Map") << " " << KDbField::Map << -1 << QVariant() << KD= b::Signed << false; + QTest::newRow("Tuple") << " " << KDbField::Tuple << -1 << QVariant() <= < KDb::Signed << false; + +#if 0 + TODO: support: + Date =3D 6, /*!< */ + DateTime =3D 7, /*!< */ + Time =3D 8, /*!< */ + Float =3D 9, /*!< 4 bytes */ + Double =3D 10, /*!< 8 bytes */ + Text =3D 11, /*!< Other name: Varchar */ + LongText =3D 12, /*!< Other name: Memo */ + BLOB =3D 13, /*!< Large binary object */ +#endif +} + +void KDbTest::testCstringToVariant() +{ + QFETCH(QString, data); + QFETCH(KDbField::Type, type); + QFETCH(int, length); + QFETCH(QVariant, variant); + QFETCH(KDb::Signedness, signedness); + QFETCH(bool, okResult); + bool ok; + const QByteArray ba(data.toUtf8()); // to avoid pointer to temp. + const char *realData =3D ba.isNull() ? 0 : ba.constData(); + QCOMPARE(KDb::cstringToVariant(realData, type, &ok, length, signedness= ), variant); + QCOMPARE(ok, okResult); + QCOMPARE(KDb::cstringToVariant(realData, type, 0, length, signedness),= variant); // a case where ok =3D=3D 0 + if (realData) { + QCOMPARE(KDb::cstringToVariant(realData, type, &ok, data.length(),= signedness), variant); // a case where length is set + QCOMPARE(ok, okResult); + } + QCOMPARE(KDb::cstringToVariant(0, type, &ok, length, signedness), QVar= iant()); // a case where data =3D=3D 0 + QVERIFY(!ok); + if (type !=3D KDbField::Boolean) { + QCOMPARE(KDb::cstringToVariant(realData, type, &ok, 0, signedness)= , QVariant()); // a case where length =3D=3D 0 + QVERIFY(!ok); + } + if (KDbField::isTextType(type)) { // a case where data =3D=3D "" + QCOMPARE(KDb::cstringToVariant("", type, &ok, length, signedness),= QVariant("")); + QVERIFY(ok); + } + else if (type !=3D KDbField::Boolean) { + QCOMPARE(KDb::cstringToVariant("", type, &ok, length, signedness),= QVariant()); + QVERIFY(!ok); + } +} + +#if 0 +TODO: +// -- requiring a connection: +KDB_EXPORT bool deleteRecord(KDbConnection* conn, KDbTableSchema *table, + const QString &keyname, const QS= tring& keyval); +KDB_EXPORT bool deleteRecord(KDbConnection* conn, const QString &tableName, + const QString &keyname, const QS= tring &keyval); +KDB_EXPORT bool deleteRecord(KDbConnection* conn, KDbTableSchema *table, + const QString& keyname, int keyv= al); +KDB_EXPORT bool deleteRecord(KDbConnection* conn, const QString &tableName, + const QString &keyname, int keyv= al); +KDB_EXPORT bool deleteRecord(KDbConnection* conn, const QString &tableName, + const QString &keyname1, KDbField::Type= keytype1, const QVariant& keyval1, + const QString &keyname2, KDbField::Type= keytype2, const QVariant& keyval2); +KDB_EXPORT bool deleteRecord(KDbConnection* conn, const QString &tableName, + const QString &keyname1, KDbField::Typ= e keytype1, const QVariant& keyval1, + const QString &keyname2, KDbField::Typ= e keytype2, const QVariant& keyval2, + const QString &keyname3, KDbField::Typ= e keytype3, const QVariant& keyval3); + +KDB_EXPORT void getHTMLErrorMesage(const KDbResultable& resultable, QStrin= g *msg, QString *details); +KDB_EXPORT void getHTMLErrorMesage(const KDbResultable& resultable, QStrin= g *msg); +KDB_EXPORT void getHTMLErrorMesage(const KDbResultable& resultable, KDbRes= ultInfo *info); +KDB_EXPORT KDbEscapedString sqlWhere(KDbDriver *drv, KDbField::Type t, + const QString& fieldName, const QV= ariant& value); +KDB_EXPORT int idForObjectName(KDbConnection* conn, const QString& objName= , int objType); +int recordCount(KDbConnection* conn, const KDbEscapedString& sql); +KDB_EXPORT int recordCount(const KDbTableSchema& tableSchema); +KDB_EXPORT int recordCount(KDbQuerySchema* querySchema, + const QList& params =3D QList()); +KDB_EXPORT int recordCount(KDbTableOrQuerySchema* tableOrQuery, + const QList& params =3D QList()); +KDB_EXPORT int fieldCount(KDbTableOrQuerySchema* tableOrQuery); +KDB_EXPORT void connectionTestDialog(QWidget* parent, const KDbConnectionD= ata& data, + KDbMessageHandler* msgHandler); +KDB_EXPORT bool splitToTableAndFieldParts(const QString& string, + QString *tableName, QString *fieldName, + SplitToTableAndFieldPartsOptions option =3D FailIfNoTableOrFieldNa= me); +KDB_EXPORT void getProperties(const KDbLookupFieldSchema *lookup, QMap *values); +KDB_EXPORT void getFieldProperties(const KDbField &field, QMap *values); +KDB_EXPORT bool setFieldProperties(KDbField *field, const QMap& values); +KDB_EXPORT bool setFieldProperty(KDbField *field, const QByteArray& proper= tyName, + const QVariant& value); +KDB_EXPORT QVariant loadPropertyValueFromDom(const QDomNode& node, bool *o= k); +KDB_EXPORT int loadIntPropertyValueFromDom(const QDomNode& node, bool* ok); +KDB_EXPORT QString loadStringPropertyValueFromDom(const QDomNode& node, bo= ol* ok); +KDB_EXPORT QDomElement saveNumberElementToDom(QDomDocument *doc, QDomEleme= nt *parentEl, + const QString& elementName, int value); +KDB_EXPORT QDomElement saveBooleanElementToDom(QDomDocument *doc, QDomElem= ent *parentEl, + const QString& elementName, bool value); +KDB_EXPORT bool isDefaultValueAllowed(KDbField* field); +KDB_EXPORT QString temporaryTableName(KDbConnection *conn, const QString &= baseName); +#ifdef KDB_DEBUG_GUI +typedef void(*DebugGUIHandler)(const QString&); +KDB_EXPORT void setDebugGUIHandler(DebugGUIHandler handler); +KDB_EXPORT void debugGUI(const QString& text); +KDB_EXPORT void setAlterTableActionDebugHandler(AlterTableActionDebugGUIHa= ndler handler); +KDB_EXPORT void alterTableActionDebugGUI(const QString& text, int nestingL= evel =3D 0); +#endif + +// -- not requiring a connection: +KDB_EXPORT bool supportsVisibleDecimalPlacesProperty(KDbField::Type type); +KDB_EXPORT QString formatNumberForVisibleDecimalPlaces(double value, int d= ecimalPlaces); +KDB_EXPORT bool isBuiltinTableFieldProperty(const QByteArray& propertyName= ); +KDB_EXPORT bool isExtendedTableFieldProperty(const QByteArray& propertyNam= e); +KDB_EXPORT bool isLookupFieldSchemaProperty(const QByteArray& propertyName= ); +KDB_EXPORT KDbField::Type intToFieldType(int type); +KDB_EXPORT KDbField::TypeGroup intToFieldTypeGroup(int typeGroup); +KDB_EXPORT QVariant emptyValueForFieldType(KDbField::Type type); +KDB_EXPORT QVariant notEmptyValueForFieldType(KDbField::Type type); +KDB_EXPORT bool isKDbSQLKeyword(const QByteArray& word); +KDB_EXPORT QString escapeString(const QString& string); +KDB_EXPORT QString escapeBLOB(const QByteArray& array, BLOBEscapingType ty= pe); +KDB_EXPORT QByteArray pgsqlByteaToByteArray(const char* data, int length); +KDB_EXPORT QList stringListToIntList(const QStringList &list, bool *o= k); +KDB_EXPORT QString serializeList(const QStringList &list); +KDB_EXPORT QStringList deserializeList(const QString &data); +KDB_EXPORT QList deserializeIntList(const QString &data, bool *ok); +KDB_EXPORT QString variantToString(const QVariant& v); +KDB_EXPORT QVariant stringToVariant(const QString& s, QVariant::Type type,= bool* ok); + +KDB_EXPORT void getLimitsForFieldType(KDbField::Type type, int *minValue, = int *maxValue); +KDB_EXPORT KDbField::Type maximumForIntegerFieldTypes(KDbField::Type t1, K= DbField::Type t2); +KDB_EXPORT QString defaultFileBasedDriverMimeType(); +KDB_EXPORT QString defaultFileBasedDriverId(); +KDB_EXPORT KDbEscapedString valueToSQL(uint ftype, const QVariant& v); +KDB_EXPORT KDbEscapedString dateTimeToSQL(const QDateTime& v); +template +T iifNotEmpty(const T &string, const T &stringIfEmpty) +{ + return string.isEmpty() ? stringIfEmpty : string; +} +template +T iifNotEmpty(const QByteArray &string, const T &stringIfEmpty) +{ + return iifNotEmpty(QString(string), stringIfEmpty); +} +T iifNotEmpty(const T &string, const QByteArray &stringIfEmpty) +{ + return iifNotEmpty(string, QString(stringIfEmpty)); +} +template +T iif(bool ok, const T &value); +KDB_EXPORT QStringList libraryPaths(); +KDB_EXPORT QString sqlite3ProgramPath(); +KDB_EXPORT bool importSqliteFile(const QString &inputFileName, const QStri= ng &outputFileName); +#endif + +void KDbTest::cleanupTestCase() +{ +} diff --git a/autotests/KDbTest.h b/autotests/KDbTest.h new file mode 100644 index 0000000..1d48d6a --- /dev/null +++ b/autotests/KDbTest.h @@ -0,0 +1,45 @@ +/* This file is part of the KDE project + Copyright (C) 2015 Jaros=C5=82aw Staniek + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public Licen= se + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. +*/ + +#ifndef KDBTEST_H +#define KDBTEST_H + +#include "KDbTestUtils.h" + +class KDbTest : public QObject +{ + Q_OBJECT +private Q_SLOTS: + void initTestCase(); + void testVersionInfo(); + void testFieldTypes(); + void testFieldTypesForGroup_data(); + void testFieldTypesForGroup(); + void testFieldTypeNamesAndStringsForGroup_data(); + void testFieldTypeNamesAndStringsForGroup(); + void testDefaultFieldTypeForGroup(); + void testSimplifiedFieldTypeName(); + void testCstringToVariant_data(); + void testCstringToVariant(); + void cleanupTestCase(); +private: + KDbTestUtils utils; +}; + +#endif