Remove Qt3Support code from algorithms autotest
authorJason McDonald <jason.mcdonald@nokia.com>
Thu, 19 May 2011 06:23:00 +0000 (16:23 +1000)
committerJason McDonald <jason.mcdonald@nokia.com>
Fri, 20 May 2011 00:36:16 +0000 (10:36 +1000)
qHeapSort and qBubbleSort were Qt3 functions that were replaced by
qSort.  During modularization, the Qt3Support header containing these
routines (q3tl.h) was moved into the algorithms autotest, presumably
because that was the only thing that still included the header.
However, as these routines are not part of Qt5, they don't need to be
tested anymore.  This commit deletes the q3tl.h header and the test
functions that tested it.

Change-Id: I52eed7b4b4db3bd671dc6dbd752642bc9e783c30
Task-number: QTBUG-19325
Reviewed-by: Rohan McGovern
tests/auto/qalgorithms/q3tl.h [deleted file]
tests/auto/qalgorithms/tst_qalgorithms.cpp

diff --git a/tests/auto/qalgorithms/q3tl.h b/tests/auto/qalgorithms/q3tl.h
deleted file mode 100644 (file)
index c856cbf..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt3Support module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef Q3TL_H
-#define Q3TL_H
-
-#include <QtCore/qalgorithms.h>
-
-QT_BEGIN_HEADER
-
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Qt3SupportLight)
-
-template <typename T, typename LessThan>
-Q_OUTOFLINE_TEMPLATE void qHeapSortPushDown(T *heap, int first, int last, LessThan lessThan)
-{
-    int r = first;
-    while (r <= last / 2) {
-        if (last == 2 * r) {
-            // node r has only one child
-            if (lessThan(heap[2 * r], heap[r]))
-                qSwap(heap[r], heap[2 * r]);
-            r = last;
-        } else {
-            // node r has two children
-            if (lessThan(heap[2 * r], heap[r]) && !lessThan(heap[2 * r + 1], heap[2 * r])) {
-                // swap with left child
-                qSwap(heap[r], heap[2 * r]);
-                r *= 2;
-            } else if (lessThan(heap[2 * r + 1], heap[r])
-                       && lessThan(heap[2 * r + 1], heap[2 * r])) {
-                // swap with right child
-                qSwap(heap[r], heap[2 * r + 1]);
-                r = 2 * r + 1;
-            } else {
-                r = last;
-            }
-        }
-    }
-}
-
-template <typename BiIterator, typename T, typename LessThan>
-Q_OUTOFLINE_TEMPLATE void qHeapSortHelper(BiIterator begin, BiIterator end, const T & /* dummy */, LessThan lessThan)
-{
-    BiIterator it = begin;
-    uint n = 0;
-    while (it != end) {
-        ++n;
-        ++it;
-    }
-    if (n == 0)
-        return;
-
-    // Create the heap
-    BiIterator insert = begin;
-    T *realheap = new T[n];
-    T *heap = realheap - 1;
-    int size = 0;
-    for(; insert != end; ++insert) {
-        heap[++size] = *insert;
-        int i = size;
-        while (i > 1 && lessThan(heap[i], heap[i / 2])) {
-            qSwap(heap[i], heap[i / 2]);
-            i /= 2;
-        }
-    }
-
-    // Now do the sorting
-    for (int i = n; i > 0; i--) {
-        *begin++ = heap[1];
-        if (i > 1) {
-            heap[1] = heap[i];
-            qHeapSortPushDown(heap, 1, i - 1, lessThan);
-        }
-    }
-
-    delete[] realheap;
-}
-
-template <typename BiIterator, typename T>
-inline void qHeapSortHelper(BiIterator begin, BiIterator end, const T &dummy)
-{
-    qHeapSortHelper(begin, end, dummy, qLess<T>());
-}
-
-template <typename BiIterator, typename LessThan>
-inline void qHeapSort(BiIterator begin, BiIterator end, LessThan lessThan)
-{
-    if (begin != end)
-        qHeapSortHelper(begin, end, *begin, lessThan);
-}
-
-template <typename BiIterator>
-inline void qHeapSort(BiIterator begin, BiIterator end)
-{
-    if (begin != end)
-        qHeapSortHelper(begin, end, *begin);
-}
-
-template <typename Container>
-inline void qHeapSort(Container &c)
-{
-#ifdef Q_CC_BOR
-    // Work around Borland 5.5 optimizer bug
-    c.detach();
-#endif
-    if (!c.empty())
-        qHeapSortHelper(c.begin(), c.end(), *c.begin());
-}
-
-
-template <typename BiIterator, typename LessThan>
-void qBubbleSort(BiIterator begin, BiIterator end, LessThan lessThan)
-{
-    // Goto last element;
-    BiIterator last = end;
-
-    // empty list
-    if (begin == end)
-        return;
-
-    --last;
-    // only one element ?
-    if (last == begin)
-        return;
-
-    // So we have at least two elements in here
-    while (begin != last) {
-        bool swapped = false;
-        BiIterator swapPos = begin;
-        BiIterator x = end;
-        BiIterator y = x;
-        y--;
-        do {
-            --x;
-            --y;
-            if (lessThan(*x, *y)) {
-                swapped = true;
-                qSwap(*x, *y);
-                swapPos = y;
-            }
-        } while (y != begin);
-        if (!swapped)
-            return;
-        begin = swapPos;
-        ++begin;
-    }
-}
-
-template <typename BiIterator, typename T>
-void qBubbleSortHelper(BiIterator begin, BiIterator end, T)
-{
-    qBubbleSort(begin, end, qLess<T>());
-}
-
-template <typename BiIterator>
-void qBubbleSort(BiIterator begin, BiIterator end)
-{
-    if (begin != end)
-        qBubbleSortHelper(begin, end, *begin);
-}
-
-template <typename Container>
-inline void qBubbleSort(Container &c)
-{
-    qBubbleSort(c.begin(), c.end());
-}
-
-QT_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif // Q3TL_H
index f14ba1f..75df1fe 100644 (file)
@@ -47,7 +47,6 @@
 #include <sstream>
 #include <algorithm>
 #include <qalgorithms.h>
-#include "q3tl.h"
 #include <QStringList>
 #include <QString>
 #include <QVector>
@@ -71,8 +70,6 @@ public slots:
     void cleanup();
 
 private slots:
-    void qBubbleSort();
-    void qHeapSort();
     void test_qLowerBound_data();
     void test_qLowerBound();
     void test_qUpperBound_data();
@@ -100,13 +97,11 @@ private:
 };
 
 tst_QAlgorithms::tst_QAlgorithms()
-
 {
 }
 
 tst_QAlgorithms::~tst_QAlgorithms()
 {
-
 }
 
 void tst_QAlgorithms::init()
@@ -267,149 +262,6 @@ void testAlgorithm(Algorithm algorithm, QStringList &dataSetTypes)
     }
 }
 #endif
-static bool userFunction1(char ch1, char ch2)
-{
-    return (ch1 ^ 1) < (ch2 ^ 1);
-}
-
-bool userFunction2(const char &ch1, char ch2)
-{
-    return (ch1 ^ 1) < (ch2 ^ 1);
-}
-
-static inline bool userFunction3(char ch1, const char &ch2)
-{
-    return (ch1 ^ 1) < (ch2 ^ 1);
-}
-
-inline bool userFunction4(const char &ch1, const char &ch2)
-{
-    return (ch1 ^ 1) < (ch2 ^ 1);
-}
-
-class UserFunctor1
-{
-public:
-    UserFunctor1(int x = 1) : y(x) {}
-
-    bool operator()(char ch1, char ch2)
-    {
-        return (ch1 ^ y) < (ch2 ^ y);
-    }
-
-    char y;
-};
-
-void tst_QAlgorithms::qHeapSort()
-{
-    char array1[] = "3141592";
-    ::qHeapSort((char *)array1, array1 + strlen(array1));
-    QVERIFY(strcmp(array1, "1123459") == 0);
-
-    ::qHeapSort((char *)array1, array1 + strlen(array1), qGreater<char>());
-    QVERIFY(strcmp(array1, "9543211") == 0);
-
-    ::qHeapSort((char *)array1, array1 + strlen(array1), qLess<char>());
-    QVERIFY(strcmp(array1, "1123459") == 0);
-    {
-        char array2[] = "0123456789@ABCDE";
-        ::qHeapSort((char *)array2, array2 + strlen(array2), userFunction1);
-        QVERIFY(strcmp(array2, "1032547698A@CBED") == 0);
-    }
-
-    {
-        char array2[] = "0123456789@ABCDE";
-        ::qHeapSort((char *)array2, array2 + strlen(array2), userFunction2);
-        QVERIFY(strcmp(array2, "1032547698A@CBED") == 0);
-    }
-
-    {
-        char array2[] = "0123456789@ABCDE";
-        ::qHeapSort((char *)array2, array2 + strlen(array2), userFunction3);
-        QVERIFY(strcmp(array2, "1032547698A@CBED") == 0);
-    }
-
-    {
-        char array2[] = "0123456789@ABCDE";
-        ::qHeapSort((char *)array2, array2 + strlen(array2), userFunction4);
-        QVERIFY(strcmp(array2, "1032547698A@CBED") == 0);
-    }
-
-    {
-        UserFunctor1 userFunctor1;
-        char array2[] = "0123456789@ABCDE";
-        ::qHeapSort((char *)array2, array2 + strlen(array2), userFunctor1);
-        QVERIFY(strcmp(array2, "1032547698A@CBED") == 0);
-    }
-
-    {
-        char array2[] = "0123456789@ABCDE";
-        ::qHeapSort((char *)array2, array2 + strlen(array2), UserFunctor1());
-        QVERIFY(strcmp(array2, "1032547698A@CBED") == 0);
-        ::qHeapSort((char *)array2, array2 + strlen(array2), UserFunctor1(1));
-        QVERIFY(strcmp(array2, "1032547698A@CBED") == 0);
-        ::qHeapSort((char *)array2, array2 + strlen(array2), UserFunctor1(3));
-        QVERIFY(strcmp(array2, "3210765498CBA@ED") == 0);
-        ::qHeapSort((char *)array2, array2 + strlen(array2), UserFunctor1(0));
-        QVERIFY(strcmp(array2, "0123456789@ABCDE") == 0);
-    }
-}
-
-void tst_QAlgorithms::qBubbleSort()
-{
-    char array1[] = "3141592";
-    ::qBubbleSort((char *)array1, array1 + strlen(array1));
-    QVERIFY(strcmp(array1, "1123459") == 0);
-
-    ::qBubbleSort((char *)array1, array1 + strlen(array1), qGreater<char>());
-    QVERIFY(strcmp(array1, "9543211") == 0);
-
-    ::qBubbleSort((char *)array1, array1 + strlen(array1), qLess<char>());
-    QVERIFY(strcmp(array1, "1123459") == 0);
-
-    {
-        char array2[] = "0123456789@ABCDE";
-        ::qBubbleSort((char *)array2, array2 + strlen(array2), userFunction1);
-        QVERIFY(strcmp(array2, "1032547698A@CBED") == 0);
-    }
-
-    {
-        char array2[] = "0123456789@ABCDE";
-        ::qBubbleSort((char *)array2, array2 + strlen(array2), userFunction2);
-        QVERIFY(strcmp(array2, "1032547698A@CBED") == 0);
-    }
-
-    {
-        char array2[] = "0123456789@ABCDE";
-        ::qBubbleSort((char *)array2, array2 + strlen(array2), userFunction3);
-        QVERIFY(strcmp(array2, "1032547698A@CBED") == 0);
-    }
-
-    {
-        char array2[] = "0123456789@ABCDE";
-        ::qBubbleSort((char *)array2, array2 + strlen(array2), userFunction4);
-        QVERIFY(strcmp(array2, "1032547698A@CBED") == 0);
-    }
-
-    {
-        UserFunctor1 userFunctor1;
-        char array2[] = "0123456789@ABCDE";
-        ::qBubbleSort((char *)array2, array2 + strlen(array2), userFunctor1);
-        QVERIFY(strcmp(array2, "1032547698A@CBED") == 0);
-    }
-
-    {
-        char array2[] = "0123456789@ABCDE";
-        ::qBubbleSort((char *)array2, array2 + strlen(array2), UserFunctor1());
-        QVERIFY(strcmp(array2, "1032547698A@CBED") == 0);
-        ::qBubbleSort((char *)array2, array2 + strlen(array2), UserFunctor1(1));
-        QVERIFY(strcmp(array2, "1032547698A@CBED") == 0);
-        ::qBubbleSort((char *)array2, array2 + strlen(array2), UserFunctor1(3));
-        QVERIFY(strcmp(array2, "3210765498CBA@ED") == 0);
-        ::qBubbleSort((char *)array2, array2 + strlen(array2), UserFunctor1(0));
-        QVERIFY(strcmp(array2, "0123456789@ABCDE") == 0);
-    }
-}
 
 void tst_QAlgorithms::swap()
 {
@@ -558,7 +410,7 @@ void tst_QAlgorithms::sortedList()
     QList<int> list;
     list << 4 << 3 << 6;
 
-    ::qHeapSort(list.begin(), list.end());
+    ::qSort(list.begin(), list.end());
 
     QCOMPARE(list.count(), 3);
     QCOMPARE(list.at(0), 3);
@@ -879,26 +731,6 @@ void tst_QAlgorithms::convenienceAPI()
 }
 
 template <typename DataType>
-class HeapSortHelper
-{
-public:
-    void operator()(QVector<DataType> list)
-    {
-        ::qHeapSort(list);
-    }
-};
-
-template <typename DataType>
-class BubbleSortHelper
-{
-public:
-    void operator()(QVector<DataType> list)
-    {
-        ::qBubbleSort(list);
-    }
-};
-
-template <typename DataType>
 class QuickSortHelper
 {
 public:
@@ -949,22 +781,14 @@ void tst_QAlgorithms::performance()
     testAlgorithm<StlSortHelper<TestInt>, TestInt>(StlSortHelper<TestInt>(), dataSetTypes);
     cout << endl << "std::stable_sort" << endl;
     testAlgorithm<StlStableSortHelper<TestInt>, TestInt>(StlStableSortHelper<TestInt>(), dataSetTypes);
-    cout << "Heap sort" << endl;
-    testAlgorithm<HeapSortHelper<TestInt>, TestInt>(HeapSortHelper<TestInt>(), dataSetTypes);
-    cout << endl << "Bubble sort" << endl;
-    testAlgorithm<BubbleSortHelper<TestInt>, TestInt>(BubbleSortHelper<TestInt>(), dataSetTypes);
 /*
     cout << endl << "Sorting lists of ints" << endl;
-    cout << "Heap sort" << endl;
-    testAlgorithm<HeapSortHelper<int>, int>(HeapSortHelper<int>(), dataSetTypes);
     cout << endl << "Quick sort" << endl;
     testAlgorithm<QuickSortHelper<int>, int>(QuickSortHelper<int>(), dataSetTypes);
     cout << endl << "std::sort" << endl;
     testAlgorithm<StlSortHelper<int>, int>(StlSortHelper<int>(), dataSetTypes);
     cout << endl << "std::stable_sort" << endl;
     testAlgorithm<StlStableSortHelper<int>, int>(StlStableSortHelper<int>(), dataSetTypes);
-    cout << endl << "Bubble sort" << endl;
-    testAlgorithm<BubbleSortHelper<int>, int>(BubbleSortHelper<int>(), dataSetTypes);
 */
 }
 #endif