-
Notifications
You must be signed in to change notification settings - Fork 37
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix stringContainsInOrder to account for repetitions and empty strings #178
Fix stringContainsInOrder to account for repetitions and empty strings #178
Conversation
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please visit https://cla.developers.google.com/ to sign. Once you've signed (or fixed any issues), please reply here with What to do if you already signed the CLAIndividual signers
Corporate signers
ℹ️ Googlers: Go here for more info. |
@googlebot I signed it! |
lib/src/string_matchers.dart
Outdated
fromIndex = item.indexOf(s, fromIndex); | ||
if (fromIndex < 0) return false; | ||
if (s.isEmpty) continue; | ||
fromIndex = item.indexOf(s, fromIndex) + 1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should actually be this probably right?
fromIndex = item.indexOf(s, fromIndex) + 1; | |
fromIndex = item.indexOf(s, fromIndex) + s.length; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh except that wouldn't work when you get -1
. But the current implementation also isn't correct, for instance I think we should have this test:
shouldFail('foo', stringContainsInOrder(['fo', 'oo']));
Which I think would (unexpectedly) pass in the current implementation?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah true. Good catch! Will fix and push update soon!
lib/src/string_matchers.dart
Outdated
if (s.isEmpty) continue; | ||
fromIndex = item.indexOf(s, fromIndex) + 1; | ||
if (fromIndex <= 0) return false; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How about this?
if (s.isEmpty) continue; | |
fromIndex = item.indexOf(s, fromIndex) + 1; | |
if (fromIndex <= 0) return false; | |
var index = item.indexOf(s, fromIndex); | |
if (index < 0) return false; | |
fromIndex = index + s.length; |
7b59a52
to
b8cead6
Compare
All (the pull request submitter and all commit authors) CLAs are signed, but one or more commits were authored or co-authored by someone other than the pull request submitter. We need to confirm that all authors are ok with their commits being contributed to this project. Please have them confirm that by leaving a comment that contains only Note to project maintainer: There may be cases where the author cannot leave a comment, or the comment is not properly detected as consent. In those cases, you can manually confirm consent of the commit author(s), and set the ℹ️ Googlers: Go here for more info. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note that we may have to revert this, at least temporarily, if it causes too much breakage in existing tests in the Dart/Flutter sdks or internal tests.
@googlebot I consent |
No description provided.