summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGiuseppe D'Angelo <giuseppe.dangelo@kdab.com>2012-10-14 04:12:35 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-10-22 22:42:26 +0200
commitbbda968a0a3230b1ddb55b27e4dcc627fc087bbd (patch)
tree66b30d489ca776c1d8f0fcd1f9c866c5d9fd07ea
parent6fe8a3d5a1c1f2b963fe25e9032b562f6c6467e6 (diff)
Fix QRegExpValidator::validate docs about the pos parameter
The code sets it to input.length() iff the regexp doesn't match the string, while the docs say it's *always* set. Therefore, make the docs match what the code does and add a simple test to enforce it. We're not changing the code to match the docs because 1) it's better to stay conservative (we don't want to break existing behaviour); 2) this behaviour mimics what the int/double validators do (they don't move pos at all). Change-Id: I958074558de6b0fc5944101c6535fc7e00442ae9 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
-rw-r--r--src/gui/util/qvalidator.cpp3
-rw-r--r--tests/auto/gui/util/qregexpvalidator/tst_qregexpvalidator.cpp11
2 files changed, 11 insertions, 3 deletions
diff --git a/src/gui/util/qvalidator.cpp b/src/gui/util/qvalidator.cpp
index 49945ae5b0..6231a097d3 100644
--- a/src/gui/util/qvalidator.cpp
+++ b/src/gui/util/qvalidator.cpp
@@ -862,7 +862,8 @@ QRegExpValidator::~QRegExpValidator()
partially (i.e. could be a valid match if additional valid
characters are added), and \l Invalid if \a input is not matched.
- The \a pos parameter is set to the length of the \a input parameter.
+ Additionally, if \a input is not matched, the \a pos parameter is set to
+ the length of the \a input parameter.
For example, if the regular expression is \b{\\w\\d\\d}
(word-character, digit, digit) then "A57" is \l Acceptable,
diff --git a/tests/auto/gui/util/qregexpvalidator/tst_qregexpvalidator.cpp b/tests/auto/gui/util/qregexpvalidator/tst_qregexpvalidator.cpp
index 7a2006b62e..d09a8e566b 100644
--- a/tests/auto/gui/util/qregexpvalidator/tst_qregexpvalidator.cpp
+++ b/tests/auto/gui/util/qregexpvalidator/tst_qregexpvalidator.cpp
@@ -116,8 +116,15 @@ void tst_QRegExpValidator::validate()
QSignalSpy changedSpy(&rv, SIGNAL(changed()));
rv.setRegExp( QRegExp( rx ) );
- int dummy;
- QCOMPARE( (int)rv.validate( value, dummy ), state );
+ int pos = -1;
+
+ QCOMPARE( (int)rv.validate( value, pos ), state );
+
+ if (state == QValidator::Invalid)
+ QCOMPARE(pos, value.length());
+ else
+ QCOMPARE(pos, -1); // untouched on Acceptable or Intermediate
+
QCOMPARE(spy.count(), 1);
QCOMPARE(changedSpy.count(), 1);
}