|
1 | 1 | // ignore_for_file: deprecated_member_use_from_same_package |
2 | 2 |
|
3 | 3 | import 'dart:convert' show latin1, utf8; |
| 4 | +import 'dart:math'; |
4 | 5 |
|
5 | 6 | import 'package:qs_dart/qs_dart.dart'; |
6 | 7 | import 'package:qs_dart/src/utils.dart'; |
@@ -905,5 +906,42 @@ void main() { |
905 | 906 | expect(combined, equals([1, 2])); |
906 | 907 | }); |
907 | 908 | }); |
| 909 | + |
| 910 | + test('decode', () { |
| 911 | + expect(Utils.decode('a+b'), equals('a b')); |
| 912 | + expect(Utils.decode('name%2Eobj'), equals('name.obj')); |
| 913 | + expect(Utils.decode('name%2Eobj%2Efoo', charset: latin1), |
| 914 | + equals('name.obj.foo')); |
| 915 | + }); |
| 916 | + |
| 917 | + test('encode', () { |
| 918 | + expect(Utils.encode(''), equals('')); |
| 919 | + |
| 920 | + expect(Utils.encode('(abc)'), equals('%28abc%29')); |
| 921 | + |
| 922 | + expect( |
| 923 | + Utils.encode('abc 123 💩', charset: latin1), |
| 924 | + equals('abc%20123%20%26%2355357%3B%26%2356489%3B'), |
| 925 | + ); |
| 926 | + |
| 927 | + final StringBuffer longString = StringBuffer(); |
| 928 | + final StringBuffer expectedString = StringBuffer(); |
| 929 | + for (int i = 0; i < 1500; i++) { |
| 930 | + longString.write(' '); |
| 931 | + expectedString.write('%20'); |
| 932 | + } |
| 933 | + expect( |
| 934 | + Utils.encode(longString.toString()), |
| 935 | + equals(expectedString.toString()), |
| 936 | + ); |
| 937 | + |
| 938 | + expect(Utils.encode('\x28\x29'), equals('%28%29')); |
| 939 | + |
| 940 | + expect(Utils.encode('\x28\x29', format: Format.rfc1738), equals('()')); |
| 941 | + |
| 942 | + expect(Utils.encode('Āက豈'), equals('%C4%80%E1%80%80%EF%A4%80')); |
| 943 | + |
| 944 | + expect(Utils.encode('\uD83D\uDCA9'), equals('%F0%9F%92%A9')); |
| 945 | + }); |
908 | 946 | }); |
909 | 947 | } |
0 commit comments