Skip to content

Commit 16e6c97

Browse files
authored
Bugfix / Argentinian transformRule mismatch $2 15-$3-$4 (#76)
* removed the contain index check of the transform rule in order to support the rules that does not start with 1. ex: $2 15-$3-$4 * added test for format national phone number if transformRule does not start with \$1. example: (\$2 15-\$3-\$4)(AR), Argentina * renamed test description
1 parent 4a890bb commit 16e6c97

File tree

2 files changed

+47
-3
lines changed

2 files changed

+47
-3
lines changed

lib/src/parsers/_national_number_parser.dart

+1-3
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,7 @@ abstract class NationalNumberParser {
7373

7474
var transformed = transformRule;
7575
bool shouldContinueLoop(int i) =>
76-
match.groupCount >= i &&
77-
match.group(i) != null &&
78-
transformed.contains('\$$i');
76+
match.groupCount >= i && match.group(i) != null;
7977
for (var i = 1; shouldContinueLoop(i); i++) {
8078
transformed = transformed.replaceFirst('\$$i', match.group(i)!);
8179
}

test/phone_number_test.dart

+46
Original file line numberDiff line numberDiff line change
@@ -407,4 +407,50 @@ void main() {
407407
expect(zero.isSequentialTo(two), isFalse);
408408
});
409409
});
410+
group(
411+
'format national phone number if transformRule does not start with \$1. example: (\$2 15-\$3-\$4)(AR)',
412+
() {
413+
test('should format argentinian phone numbers', () {
414+
String format(String phoneNumber) =>
415+
PhoneNumber.parse(phoneNumber, destinationCountry: IsoCode.AR)
416+
.formatNsn();
417+
var testNumber = '';
418+
expect(format(testNumber), equals(''));
419+
testNumber = '5';
420+
expect(format(testNumber), equals('5'));
421+
testNumber = '54';
422+
expect(format(testNumber), equals('54'));
423+
testNumber = '549';
424+
expect(format(testNumber), equals('549'));
425+
testNumber = '5492';
426+
expect(format(testNumber), equals('5492'));
427+
testNumber = '54926';
428+
expect(format(testNumber), equals('54926'));
429+
testNumber = '549261';
430+
expect(format(testNumber), equals('549261'));
431+
testNumber = '5492615';
432+
expect(format(testNumber), equals('5492615'));
433+
testNumber = '54926153';
434+
expect(format(testNumber), equals('54926153'));
435+
testNumber = '549261532';
436+
expect(format(testNumber), equals('549261532'));
437+
testNumber = '5492615325';
438+
expect(format(testNumber), equals('5492615325'));
439+
440+
testNumber = '54926153256';
441+
expect(format(testNumber), equals('54926153256'));
442+
testNumber = '549261532565';
443+
expect(format(testNumber), equals('549261532565'));
444+
testNumber = '5492615325656';
445+
expect(format(testNumber), equals('261 15-532-5656'));
446+
testNumber = '+5492615325656';
447+
expect(format(testNumber), equals('261 15-532-5656'));
448+
testNumber = '54 9 261-5325 656';
449+
expect(format(testNumber), equals('261 15-532-5656'));
450+
testNumber = '54-9-261-5325-656';
451+
expect(format(testNumber), equals('261 15-532-5656'));
452+
testNumber = '54.9.261.5325.656';
453+
expect(format(testNumber), equals('261 15-532-5656'));
454+
});
455+
});
410456
}

0 commit comments

Comments
 (0)