QRegularExpression: improve operator==, add dedicated autotest
authorGiuseppe D'Angelo <dangelog@gmail.com>
Wed, 8 Feb 2012 18:53:22 +0000 (18:53 +0000)
committerQt by Nokia <qt-info@nokia.com>
Tue, 6 Mar 2012 20:54:17 +0000 (21:54 +0100)
Trivial change: compare dpointers first, then the data.
Added test function for operator==.

Change-Id: I33ac64a59db4ccad56c30be17622187e42415f38
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
src/corelib/tools/qregularexpression.cpp
tests/auto/corelib/tools/qregularexpression/tst_qregularexpression.cpp

index 7fbbfaa..b7a5c3d 100644 (file)
@@ -1395,7 +1395,8 @@ QRegularExpressionMatchIterator QRegularExpression::globalMatch(const QString &s
 */
 bool QRegularExpression::operator==(const QRegularExpression &re) const
 {
-    return (pattern() == re.pattern() && patternOptions() == re.patternOptions());
+    return (d == re.d) ||
+           (d->pattern == re.d->pattern && d->patternOptions == re.d->patternOptions);
 }
 
 /*!
index 93cb682..8365a09 100644 (file)
@@ -71,6 +71,8 @@ private slots:
     void globalMatch();
     void serialize_data();
     void serialize();
+    void operatoreq_data();
+    void operatoreq();
 
 private:
     void provideRegularExpressions();
@@ -348,11 +350,6 @@ void tst_QRegularExpression::gettersSetters()
         QCOMPARE(re.pattern(), pattern);
         QCOMPARE(re.patternOptions(), patternOptions);
     }
-    {
-        QRegularExpression re(pattern, patternOptions);
-        QRegularExpression re2(pattern, patternOptions);
-        QVERIFY(re == re2);
-    }
 }
 
 void tst_QRegularExpression::escape_data()
@@ -1144,6 +1141,63 @@ void tst_QRegularExpression::serialize()
     QCOMPARE(inRe, outRe);
 }
 
+static void verifyEquality(const QRegularExpression &re1, const QRegularExpression &re2)
+{
+    QVERIFY(re1 == re2);
+    QVERIFY(re2 == re1);
+    QVERIFY(!(re1 != re2));
+    QVERIFY(!(re2 != re1));
+
+    QRegularExpression re3(re1);
+
+    QVERIFY(re1 == re3);
+    QVERIFY(re3 == re1);
+    QVERIFY(!(re1 != re3));
+    QVERIFY(!(re3 != re1));
+
+    QVERIFY(re2 == re3);
+    QVERIFY(re3 == re2);
+    QVERIFY(!(re2 != re3));
+    QVERIFY(!(re3 != re2));
+
+    re3 = re2;
+    QVERIFY(re1 == re3);
+    QVERIFY(re3 == re1);
+    QVERIFY(!(re1 != re3));
+    QVERIFY(!(re3 != re1));
+
+    QVERIFY(re2 == re3);
+    QVERIFY(re3 == re2);
+    QVERIFY(!(re2 != re3));
+    QVERIFY(!(re3 != re2));
+}
+
+void tst_QRegularExpression::operatoreq_data()
+{
+    provideRegularExpressions();
+}
+
+void tst_QRegularExpression::operatoreq()
+{
+    QFETCH(QString, pattern);
+    QFETCH(QRegularExpression::PatternOptions, patternOptions);
+    {
+        QRegularExpression re1(pattern);
+        QRegularExpression re2(pattern);
+        verifyEquality(re1, re2);
+    }
+    {
+        QRegularExpression re1(QString(), patternOptions);
+        QRegularExpression re2(QString(), patternOptions);
+        verifyEquality(re1, re2);
+    }
+    {
+        QRegularExpression re1(pattern, patternOptions);
+        QRegularExpression re2(pattern, patternOptions);
+        verifyEquality(re1, re2);
+    }
+}
+
 QTEST_APPLESS_MAIN(tst_QRegularExpression)
 
 #include "tst_qregularexpression.moc"