LeechCraft  0.6.70-18450-gabe19ee3b0
Modular cross-platform feature rich live environment.
qtutiltest.cpp
Go to the documentation of this file.
1 /**********************************************************************
2  * LeechCraft - modular cross-platform feature rich internet client.
3  * Copyright (C) 2006-2014 Georg Rudoy
4  *
5  * Distributed under the Boost Software License, Version 1.0.
6  * (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7  **********************************************************************/
8 
9 #include "qtutiltest.h"
10 #include <QtTest>
11 #include <qtutil.h>
12 
13 QTEST_APPLESS_MAIN (LC::Util::QtUtilTest)
14 
15 namespace LC::Util
16 {
17  void QtUtilTest::testStringUDL ()
18  {
19  const auto& foo1 = "foo"_qs;
20  const auto& bar = "bar"_qs;
21  QCOMPARE (foo1, "foo");
22  QCOMPARE (bar, "bar");
23 
24  auto foo2 = "foo"_qs;
25  QCOMPARE (foo2, "foo");
26 
27  foo2.chop (1);
28  QCOMPARE (foo2, "fo");
29  QCOMPARE (foo1, "foo");
30  }
31 
32  void QtUtilTest::testStringUDLBench ()
33  {
34  QFETCH (int, strInit);
35 
36  switch (strInit)
37  {
38  case 0:
39  QBENCHMARK
40  {
41  const QString str { "foo" };
42  }
43  break;
44  case 1:
45  QBENCHMARK
46  {
47  const auto str = QStringLiteral ("foo");
48  }
49  break;
50  case 2:
51  QBENCHMARK
52  {
53  const auto str = "foo"_qs;
54  }
55  break;
56  }
57  }
58 
59  void QtUtilTest::testStringUDLBench_data ()
60  {
61  QTest::addColumn<int> ("strInit");
62  QTest::newRow ("ctor") << 0;
63  QTest::newRow ("QStringLiteral") << 1;
64  QTest::newRow ("UDL") << 2;
65  }
66 
67  void QtUtilTest::testHandleQVariant ()
68  {
69  {
70  const auto v = HandleQVariant ("foo"_qs,
71  [] (int) { return 0; },
72  [] (const QString&) { return 1; },
73  [] (const QByteArray&) { return 2; },
74  [] { return 42; });
75  QCOMPARE (v, 1);
76  }
77 
78  {
79  const auto v = HandleQVariant ("foo"_qs,
80  [] (int n) { return QString::number (n); },
81  [] (const QString& s) { return s; },
82  [] (const QByteArray& ba) { return ba; },
83  [] { return "default"_qs; });
84  QCOMPARE (v, "foo"_qs);
85  }
86 
87  {
88  const auto v = HandleQVariant (42,
89  [] (int n) { return QString::number (n); },
90  [] (const QString& s) { return s; },
91  [] (const QByteArray& ba) { return ba; },
92  [] { return "default"_qs; });
93  QCOMPARE (v, "42"_qs);
94  }
95 
96  {
97  const auto v = HandleQVariant (42ULL,
98  [] (int n) { return QString::number (n); },
99  [] (const QString& s) { return s; },
100  [] (const QByteArray& ba) { return ba; },
101  [] { return "default"_qs; });
102  QCOMPARE (v, "default"_qs);
103  }
104  }
105 }
auto HandleQVariant(const QVariant &variant, Fs &&... handlers)
Definition: qtutil.h:143