diff options
author | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2012-10-14 04:12:35 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-10-22 22:42:26 +0200 |
commit | bbda968a0a3230b1ddb55b27e4dcc627fc087bbd (patch) | |
tree | 66b30d489ca776c1d8f0fcd1f9c866c5d9fd07ea | |
parent | 6fe8a3d5a1c1f2b963fe25e9032b562f6c6467e6 (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.cpp | 3 | ||||
-rw-r--r-- | tests/auto/gui/util/qregexpvalidator/tst_qregexpvalidator.cpp | 11 |
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); } |