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>
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,
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);
}