[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdb] autotests: Add autotest for some KDb::* functions
From:       Jaroslaw Staniek <staniek () kde ! org>
Date:       2015-06-30 22:09:08
Message-ID: E1ZA3iG-00042Q-Ca () scm ! kde ! org
[Download RAW message or body]

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ław Staniek <staniek@kde.org>
+
+   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 License
+   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 <KDb>
+#include <KDbVersionInfo>
+
+#include <QTest>
+
+QTEST_GUILESS_MAIN(KDbTest)
+
+Q_DECLARE_METATYPE(KDbField::TypeGroup)
+Q_DECLARE_METATYPE(KDbField::Type)
+Q_DECLARE_METATYPE(KDb::Signedness)
+Q_DECLARE_METATYPE(QList<KDbField::Type>)
+
+void KDbTest::initTestCase()
+{
+}
+
+void KDbTest::testVersionInfo()
+{
+    KDbVersionInfo info = 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<KDbField::TypeGroup>("typeGroup");
+    QTest::addColumn<QList<KDbField::Type>>("types");
+
+    QTest::newRow("invalid") << KDbField::InvalidGroup
+        << (QList<KDbField::Type>() << KDbField::InvalidType);
+    QTest::newRow("text") << KDbField::TextGroup << (QList<KDbField::Type>()
+        << KDbField::Text << KDbField::LongText);
+    QTest::newRow("integer") << KDbField::IntegerGroup
+        << (QList<KDbField::Type>()
+        << KDbField::Byte << KDbField::ShortInteger << KDbField::Integer << KDbField::BigInteger);
+    QTest::newRow("float") << KDbField::FloatGroup
+        << (QList<KDbField::Type>() << KDbField::Float << KDbField::Double);
+    QTest::newRow("boolean") << KDbField::BooleanGroup
+        << (QList<KDbField::Type>() << KDbField::Boolean);
+    QTest::newRow("datetime") << KDbField::DateTimeGroup
+        << (QList<KDbField::Type>() << KDbField::Date << KDbField::DateTime << KDbField::Time);
+    QTest::newRow("blob") << KDbField::BLOBGroup
+        << (QList<KDbField::Type>() << KDbField::BLOB);
+}
+
+void KDbTest::testFieldTypesForGroup()
+{
+    QFETCH(KDbField::TypeGroup, typeGroup);
+    QFETCH(QList<KDbField::Type>, types);
+    QCOMPARE(KDb::fieldTypesForGroup(typeGroup), types);
+}
+
+void KDbTest::testFieldTypeNamesAndStringsForGroup_data()
+{
+    QTest::addColumn<KDbField::TypeGroup>("typeGroup");
+    QTest::addColumn<QList<QByteArray>>("typeNames");
+    QTest::addColumn<QStringList>("typeStrings");
+
+    QTest::newRow("invalid") << KDbField::InvalidGroup
+        << (QList<QByteArray>() << "Invalid Type")
+        << (QStringList() << "InvalidType");
+    QTest::newRow("text") << KDbField::TextGroup << (QList<QByteArray>()
+        << "Text" << "Long Text")
+        << (QStringList() << "Text" << "LongText");
+    QTest::newRow("integer") << KDbField::IntegerGroup
+        << (QList<QByteArray>()
+        << "Byte" << "Short Integer Number" << "Integer Number" << "Big Integer Number")
+        << (QStringList() << "Byte" << "ShortInteger" << "Integer" << "BigInteger");
+    QTest::newRow("float") << KDbField::FloatGroup
+        << (QList<QByteArray>() << "Single Precision Number" << "Double Precision Number")
+        << (QStringList() << "Float" << "Double");
+    QTest::newRow("boolean") << KDbField::BooleanGroup
+        << (QList<QByteArray>() << "Yes/No Value")
+        << (QStringList() << "Boolean");
+    QTest::newRow("datetime") << KDbField::DateTimeGroup
+        << (QList<QByteArray>() << "Date" << "Date and Time" << "Time")
+        << (QStringList() << "Date" << "DateTime" << "Time");
+    QTest::newRow("blob") << KDbField::BLOBGroup
+        << (QList<QByteArray>() << "Object")
+        << (QStringList() << "BLOB");
+}
+
+void KDbTest::testFieldTypeNamesAndStringsForGroup()
+{
+    QFETCH(KDbField::TypeGroup, typeGroup);
+    QFETCH(QList<QByteArray>, 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), KDbField::InvalidType);
+    QCOMPARE(KDb::defaultFieldTypeForGroup(KDbField::TextGroup), KDbField::Text);
+    QCOMPARE(KDb::defaultFieldTypeForGroup(KDbField::IntegerGroup), KDbField::Integer);
+    QCOMPARE(KDb::defaultFieldTypeForGroup(KDbField::FloatGroup), KDbField::Double);
+    QCOMPARE(KDb::defaultFieldTypeForGroup(KDbField::BooleanGroup), KDbField::Boolean);
+    QCOMPARE(KDb::defaultFieldTypeForGroup(KDbField::DateTimeGroup), KDbField::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("Number"));
+    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("Date/Time"));
+    QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::DateTime), QObject::tr("Date/Time"));
+    QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Time), QObject::tr("Date/Time"));
+    QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Float), QObject::tr("Number"));
+    QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Double), QObject::tr("Number"));
+    QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Text), QObject::tr("Text"));
+    QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::LongText), QObject::tr("Text"));
+    QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::BLOB), QObject::tr("Image"));
+    QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Null), QObject::tr("Invalid Group"));
+    QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Asterisk), QObject::tr("Invalid Group"));
+    QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Enum), QObject::tr("Invalid Group"));
+    QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Map), QObject::tr("Invalid Group"));
+    QCOMPARE(KDb::simplifiedFieldTypeName(KDbField::Tuple), QObject::tr("Invalid Group"));
+}
+
+void KDbTest::testCstringToVariant_data()
+{
+    QTest::addColumn<QString>("data"); // QString() -> 0, QString("") -> empty string ""
+    QTest::addColumn<KDbField::Type>("type");
+    QTest::addColumn<int>("length");
+    QTest::addColumn<QVariant>("variant");
+    QTest::addColumn<KDb::Signedness>("signedness");
+    QTest::addColumn<bool>("okResult");
+
+    QTest::newRow("invalid1") << QString() << KDbField::InvalidType << -1 << QVariant() << KDb::Signed \
<< false; +    QTest::newRow("invalid2") << "" << KDbField::InvalidType << -1 << QVariant() << \
KDb::Signed << false; +    QTest::newRow("invalid3") << "abc" << KDbField::InvalidType << 3 << QVariant() \
<< 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(129) << \
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 << \
QVariant(-123) << KDb::Signed << true; +    QTest::newRow("short2") << "942" << KDbField::ShortInteger << \
-1 << QVariant(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::Integer << -1 << QVariant(0x07FFFFFFF) << KDb::Signed << true; +    QTest::newRow("uint1") << \
QString::number(0x07FFFFFFF) << KDbField::Integer << -1 << QVariant(0x07FFFFFFF) << KDb::Unsigned << \
true; +    QTest::newRow("int2") << QString::number(-0x07FFFFFFF) << KDbField::Integer << -1 << \
QVariant(-0x07FFFFFFF) << KDb::Signed << true; +    QTest::newRow("uint2") << \
QString::number(-0x07FFFFFFF) << KDbField::Integer << -1 << QVariant() << KDb::Unsigned << false; +    \
QTest::newRow("int3") << QString::number(-0x080000000) << KDbField::Integer << -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 << QVariant() \
<< KDb::Unsigned << false; +    QTest::newRow("bigint4") << "-1" << KDbField::BigInteger << -1 << \
QVariant(-1) << KDb::Signed << true; +    QTest::newRow("bool0") << "0" << KDbField::Boolean << -1 << \
QVariant(false) << KDb::Signed << true; +    QTest::newRow("bool1") << "1" << KDbField::Boolean << -1 << \
QVariant(true) << KDb::Signed << true; +    QTest::newRow("bool-") << "-" << KDbField::Boolean << -1 << \
QVariant(true) << KDb::Signed << true; +    QTest::newRow("bool5") << "5" << KDbField::Boolean << -1 << \
QVariant(true) << KDb::Signed << true; +    QTest::newRow("bool false") << "false" << KDbField::Boolean \
<< -1 << QVariant(false) << KDb::Signed << true; +    QTest::newRow("bool False") << "False" << \
KDbField::Boolean << -1 << QVariant(false) << KDb::Signed << true; +    QTest::newRow("bool TRUE") << \
"TRUE" << KDbField::Boolean << -1 << QVariant(true) << KDb::Signed << true; +    QTest::newRow("bool \
true") << "true" << KDbField::Boolean << -1 << QVariant(true) << KDb::Signed << true; +    \
QTest::newRow("bool no") << "no" << KDbField::Boolean << -1 << QVariant(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 << QVariant() << KDb::Signed << false;
+    QTest::newRow("Enum") << " " << KDbField::Enum << -1 << QVariant() << KDb::Signed << false;
+    QTest::newRow("Map") << " " << KDbField::Map << -1 << QVariant() << KDb::Signed << false;
+    QTest::newRow("Tuple") << " " << KDbField::Tuple << -1 << QVariant() << KDb::Signed << false;
+
+#if 0
+    TODO: support:
+    Date = 6,        /*!< */
+    DateTime = 7,    /*!< */
+    Time = 8,        /*!< */
+    Float = 9,       /*!< 4 bytes */
+    Double = 10,     /*!< 8 bytes */
+    Text = 11,       /*!< Other name: Varchar */
+    LongText = 12,   /*!< Other name: Memo */
+    BLOB = 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 = 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 \
== 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), QVariant()); // a case where data \
== 0 +    QVERIFY(!ok);
+    if (type != KDbField::Boolean) {
+        QCOMPARE(KDb::cstringToVariant(realData, type, &ok, 0, signedness), QVariant()); // a case where \
length == 0 +        QVERIFY(!ok);
+    }
+    if (KDbField::isTextType(type)) { // a case where data == ""
+        QCOMPARE(KDb::cstringToVariant("", type, &ok, length, signedness), QVariant(""));
+        QVERIFY(ok);
+    }
+    else if (type != 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 QString& keyval);
+KDB_EXPORT bool deleteRecord(KDbConnection* conn, const QString &tableName,
+                                          const QString &keyname, const QString &keyval);
+KDB_EXPORT bool deleteRecord(KDbConnection* conn, KDbTableSchema *table,
+                                          const QString& keyname, int keyval);
+KDB_EXPORT bool deleteRecord(KDbConnection* conn, const QString &tableName,
+                                          const QString &keyname, int keyval);
+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::Type keytype1, const QVariant& \
keyval1, +                                    const QString &keyname2, KDbField::Type keytype2, const \
QVariant& keyval2, +                                    const QString &keyname3, KDbField::Type keytype3, \
const QVariant& keyval3); +
+KDB_EXPORT void getHTMLErrorMesage(const KDbResultable& resultable, QString *msg, QString *details);
+KDB_EXPORT void getHTMLErrorMesage(const KDbResultable& resultable, QString *msg);
+KDB_EXPORT void getHTMLErrorMesage(const KDbResultable& resultable, KDbResultInfo *info);
+KDB_EXPORT KDbEscapedString sqlWhere(KDbDriver *drv, KDbField::Type t,
+                                        const QString& fieldName, const QVariant& 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<QVariant>& params = QList<QVariant>());
+KDB_EXPORT int recordCount(KDbTableOrQuerySchema* tableOrQuery,
+                           const QList<QVariant>& params = QList<QVariant>());
+KDB_EXPORT int fieldCount(KDbTableOrQuerySchema* tableOrQuery);
+KDB_EXPORT void connectionTestDialog(QWidget* parent, const KDbConnectionData& data,
+        KDbMessageHandler* msgHandler);
+KDB_EXPORT bool splitToTableAndFieldParts(const QString& string,
+        QString *tableName, QString *fieldName,
+        SplitToTableAndFieldPartsOptions option = FailIfNoTableOrFieldName);
+KDB_EXPORT void getProperties(const KDbLookupFieldSchema *lookup, QMap<QByteArray, QVariant> *values);
+KDB_EXPORT void getFieldProperties(const KDbField &field, QMap<QByteArray, QVariant> *values);
+KDB_EXPORT bool setFieldProperties(KDbField *field, const QMap<QByteArray, QVariant>& values);
+KDB_EXPORT bool setFieldProperty(KDbField *field, const QByteArray& propertyName,
+                                       const QVariant& value);
+KDB_EXPORT QVariant loadPropertyValueFromDom(const QDomNode& node, bool *ok);
+KDB_EXPORT int loadIntPropertyValueFromDom(const QDomNode& node, bool* ok);
+KDB_EXPORT QString loadStringPropertyValueFromDom(const QDomNode& node, bool* ok);
+KDB_EXPORT QDomElement saveNumberElementToDom(QDomDocument *doc, QDomElement *parentEl,
+        const QString& elementName, int value);
+KDB_EXPORT QDomElement saveBooleanElementToDom(QDomDocument *doc, QDomElement *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(AlterTableActionDebugGUIHandler handler);
+KDB_EXPORT void alterTableActionDebugGUI(const QString& text, int nestingLevel = 0);
+#endif
+
+// -- not requiring a connection:
+KDB_EXPORT bool supportsVisibleDecimalPlacesProperty(KDbField::Type type);
+KDB_EXPORT QString formatNumberForVisibleDecimalPlaces(double value, int decimalPlaces);
+KDB_EXPORT bool isBuiltinTableFieldProperty(const QByteArray& propertyName);
+KDB_EXPORT bool isExtendedTableFieldProperty(const QByteArray& propertyName);
+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 type);
+KDB_EXPORT QByteArray pgsqlByteaToByteArray(const char* data, int length);
+KDB_EXPORT QList<int> stringListToIntList(const QStringList &list, bool *ok);
+KDB_EXPORT QString serializeList(const QStringList &list);
+KDB_EXPORT QStringList deserializeList(const QString &data);
+KDB_EXPORT QList<int> 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, KDbField::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<typename T>
+T iifNotEmpty(const T &string, const T &stringIfEmpty)
+{
+    return string.isEmpty() ? stringIfEmpty : string;
+}
+template<typename T>
+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<typename T>
+T iif(bool ok, const T &value);
+KDB_EXPORT QStringList libraryPaths();
+KDB_EXPORT QString sqlite3ProgramPath();
+KDB_EXPORT bool importSqliteFile(const QString &inputFileName, const QString &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ław Staniek <staniek@kde.org>
+
+   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 License
+   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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic