1/****************************************************************************
2**
3** Copyright (C) 2016 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the test suite of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:GPL-EXCEPT$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
17** GNU General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU
19** General Public License version 3 as published by the Free Software
20** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
21** included in the packaging of this file. Please review the following
22** information to ensure the GNU General Public License requirements will
23** be met: https://www.gnu.org/licenses/gpl-3.0.html.
24**
25** $QT_END_LICENSE$
26**
27****************************************************************************/
28
29
30#include <QtTest/QtTest>
31#include <qqueue.h>
32
33class tst_QQueue : public QObject
34{
35 Q_OBJECT
36
37private slots:
38 void enqueue_dequeue_data();
39 void enqueue_dequeue();
40};
41
42void tst_QQueue::enqueue_dequeue_data()
43{
44 QTest::addColumn<int>(name: "num_items");
45
46 QTest::newRow(dataTag: "1") << 11;
47 QTest::newRow(dataTag: "2") << 211;
48 QTest::newRow(dataTag: "3") << 1024 + 211;
49}
50
51void tst_QQueue::enqueue_dequeue()
52{
53 QFETCH(int, num_items);
54
55 int *values = new int[num_items];
56 QQueue<int> queue_v;
57 QQueue<int*> queue_p;
58
59 QVERIFY(queue_v.empty());
60 QVERIFY(queue_p.empty());
61
62 for (int i = 0; i < num_items; i++ ) {
63 values[i] = i;
64 queue_p.enqueue(t: values + i);
65 queue_v.enqueue(t: values[i]);
66 }
67 QVERIFY(!queue_p.empty());
68 QVERIFY(!queue_v.empty());
69 for (int i = 0; i < num_items; i++ ) {
70 int v, *p;
71 v = queue_v.head();
72 p = queue_p.head();
73 QCOMPARE(*p, v);
74 QCOMPARE(v, i);
75 v = queue_v.dequeue();
76 p = queue_p.dequeue();
77 QCOMPARE(*p, v);
78 QCOMPARE(v, values[i]);
79 }
80 QVERIFY(queue_v.empty());
81 QVERIFY(queue_p.empty());
82
83 delete[] values;
84}
85
86QTEST_APPLESS_MAIN(tst_QQueue)
87#include "tst_qqueue.moc"
88

source code of qtbase/tests/auto/corelib/tools/qqueue/tst_qqueue.cpp