[QGIS Commit] r13196 - trunk/qgis/tests/src/core

svn_qgis at osgeo.org svn_qgis at osgeo.org
Mon Mar 29 13:33:22 EDT 2010


Author: wonder
Date: 2010-03-29 13:33:20 -0400 (Mon, 29 Mar 2010)
New Revision: 13196

Added:
   trunk/qgis/tests/src/core/testqgssearchstring.cpp
Modified:
   trunk/qgis/tests/src/core/CMakeLists.txt
Log:
added some unit tests for search strings


Modified: trunk/qgis/tests/src/core/CMakeLists.txt
===================================================================
--- trunk/qgis/tests/src/core/CMakeLists.txt	2010-03-29 15:57:48 UTC (rev 13195)
+++ trunk/qgis/tests/src/core/CMakeLists.txt	2010-03-29 17:33:20 UTC (rev 13196)
@@ -112,3 +112,4 @@
 ADD_QGIS_TEST(geometrytest testqgsgeometry.cpp)
 ADD_QGIS_TEST(coordinatereferencesystemtest testqgscoordinatereferencesystem.cpp)
 ADD_QGIS_TEST(pointtest testqgspoint.cpp)
+ADD_QGIS_TEST(searchstringtest testqgssearchstring.cpp)

Added: trunk/qgis/tests/src/core/testqgssearchstring.cpp
===================================================================
--- trunk/qgis/tests/src/core/testqgssearchstring.cpp	                        (rev 0)
+++ trunk/qgis/tests/src/core/testqgssearchstring.cpp	2010-03-29 17:33:20 UTC (rev 13196)
@@ -0,0 +1,72 @@
+/***************************************************************************
+     testqgssearchstring.cpp
+     --------------------------------------
+    Date                 : March 28, 2010
+    Copyright            : (C) 2010 Martin Dobias
+    Email                : wonder.sk at gmail.com
+ ***************************************************************************
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ ***************************************************************************/
+
+#include <QtTest>
+
+#include <qgssearchstring.h>
+#include <qgssearchtreenode.h>
+
+class TestQgsSearchString : public QObject
+{
+  Q_OBJECT;
+  private slots:
+    //void initTestCase();// will be called before the first testfunction is executed.
+    //void cleanupTestCase();// will be called after the last testfunction was executed.
+    //void init();// will be called before each testfunction is executed.
+    //void cleanup();// will be called after every testfunction.
+
+    void testLike();
+    void testRegexp();
+
+  private:
+    QString mReport;
+};
+
+static bool evalString(QString str)
+{
+  QgsSearchString ss;
+  ss.setString(str);
+  return ss.tree()->checkAgainst(QgsFieldMap(), QgsAttributeMap());
+}
+
+void TestQgsSearchString::testLike()
+{
+  QVERIFY( evalString("'a' LIKE 'a'") );
+  QVERIFY( ! evalString("'aa' LIKE 'a'") );
+  QVERIFY( ! evalString("'a' LIKE 'b'") );
+
+  QVERIFY( evalString("'abba' LIKE 'a%'") );
+  QVERIFY( ! evalString("'abba' LIKE 'b%'") );
+  QVERIFY( evalString("'abba' LIKE '%a'") );
+  QVERIFY( ! evalString("'abba' LIKE '%b'") );
+
+  QVERIFY( evalString("'abba' LIKE '%bb%'") );
+  QVERIFY( evalString("'abba' LIKE 'a%a'") );
+  QVERIFY( ! evalString("'abba' LIKE 'b%b'") );
+}
+
+void TestQgsSearchString::testRegexp()
+{
+  QVERIFY( evalString("'a' ~ 'a'") );
+  QVERIFY( ! evalString("'b' ~ 'a'") );
+
+  QVERIFY( evalString("'abba' ~ 'a'") );
+  QVERIFY( ! evalString("'abba' ~ 'aba'") );
+  QVERIFY( evalString("'abba' ~ 'a.*a'") );
+  QVERIFY( evalString("'abba' ~ 'a[b]+a'") );
+}
+
+QTEST_MAIN(TestQgsSearchString)
+#include "moc_testqgssearchstring.cxx"



More information about the QGIS-commit mailing list