Showing
8 changed files
with
103 additions
and
88 deletions
| @@ -113,8 +113,7 @@ class GetHttpClient { | @@ -113,8 +113,7 @@ class GetHttpClient { | ||
| 113 | //TODO check this implementation | 113 | //TODO check this implementation | 
| 114 | if (contentType != null) { | 114 | if (contentType != null) { | 
| 115 | if (contentType.toLowerCase() == 'application/x-www-form-urlencoded') { | 115 | if (contentType.toLowerCase() == 'application/x-www-form-urlencoded') { | 
| 116 | - var paramName = 'param'; | ||
| 117 | - jsonString = '$paramName=${Uri.encodeQueryComponent(jsonString)}'; | 116 | + jsonString = Uri.encodeQueryComponent(jsonString); | 
| 118 | } | 117 | } | 
| 119 | } | 118 | } | 
| 120 | } else if (body is String) { | 119 | } else if (body is String) { | 
| 1 | import '../get_utils/get_utils.dart'; | 1 | import '../get_utils/get_utils.dart'; | 
| 2 | 2 | ||
| 3 | extension GetDynamicUtils on dynamic { | 3 | extension GetDynamicUtils on dynamic { | 
| 4 | + @Deprecated('isNull is deprecated and cannot be used, use "==" operator') | ||
| 4 | bool get isNull => GetUtils.isNull(this); | 5 | bool get isNull => GetUtils.isNull(this); | 
| 5 | 6 | ||
| 7 | + bool get isBlank => GetUtils.isBlank(this); | ||
| 8 | + | ||
| 9 | + @Deprecated( | ||
| 10 | + 'isNullOrBlank is deprecated and cannot be used, use "isBlank" instead') | ||
| 6 | bool get isNullOrBlank => GetUtils.isNullOrBlank(this); | 11 | bool get isNullOrBlank => GetUtils.isNullOrBlank(this); | 
| 7 | 12 | ||
| 8 | void printError( | 13 | void printError( | 
| @@ -5,8 +5,14 @@ import '../../../get_core/get_core.dart'; | @@ -5,8 +5,14 @@ import '../../../get_core/get_core.dart'; | ||
| 5 | /// standard dart types that contains it. | 5 | /// standard dart types that contains it. | 
| 6 | /// | 6 | /// | 
| 7 | /// This is here to for the 'DRY' | 7 | /// This is here to for the 'DRY' | 
| 8 | -bool _hasIsEmpty(dynamic value) { | ||
| 9 | - return value is Iterable || value is String || value is Map; | 8 | +bool _isEmpty(dynamic value) { | 
| 9 | + if (value is String) { | ||
| 10 | + return value.toString().trim().isEmpty; | ||
| 11 | + } | ||
| 12 | + if (value is Iterable || value is Map) { | ||
| 13 | + return value.isEmpty as bool; | ||
| 14 | + } | ||
| 15 | + return false; | ||
| 10 | } | 16 | } | 
| 11 | 17 | ||
| 12 | /// Returns whether a dynamic value PROBABLY | 18 | /// Returns whether a dynamic value PROBABLY | 
| @@ -70,13 +76,14 @@ class GetUtils { | @@ -70,13 +76,14 @@ class GetUtils { | ||
| 70 | return true; | 76 | return true; | 
| 71 | } | 77 | } | 
| 72 | 78 | ||
| 73 | - if (value is String) { | ||
| 74 | - return value.toString().trim().isEmpty; | ||
| 75 | - } | ||
| 76 | - | ||
| 77 | // Pretty sure that isNullOrBlank should't be validating | 79 | // Pretty sure that isNullOrBlank should't be validating | 
| 78 | // iterables... but I'm going to keep this for compatibility. | 80 | // iterables... but I'm going to keep this for compatibility. | 
| 79 | - return _hasIsEmpty(value) ? value.isEmpty as bool : false; | 81 | + return _isEmpty(value); | 
| 82 | + } | ||
| 83 | + | ||
| 84 | + /// Checks if data is null or blank (empty or only contains whitespace). | ||
| 85 | + static bool isBlank(dynamic value) { | ||
| 86 | + return _isEmpty(value); | ||
| 80 | } | 87 | } | 
| 81 | 88 | ||
| 82 | /// Checks if string is int or double. | 89 | /// Checks if string is int or double. | 
| @@ -584,3 +591,10 @@ class GetUtils { | @@ -584,3 +591,10 @@ class GetUtils { | ||
| 584 | Get.log('$prefix $value $info'.trim(), isError: isError); | 591 | Get.log('$prefix $value $info'.trim(), isError: isError); | 
| 585 | } | 592 | } | 
| 586 | } | 593 | } | 
| 594 | + | ||
| 595 | +typedef PrintFunctionCallback = void Function( | ||
| 596 | + String prefix, | ||
| 597 | + dynamic value, | ||
| 598 | + String info, { | ||
| 599 | + bool isError, | ||
| 600 | +}); | 
| 1 | import 'package:flutter_test/flutter_test.dart'; | 1 | import 'package:flutter_test/flutter_test.dart'; | 
| 2 | import 'package:get/utils.dart'; | 2 | import 'package:get/utils.dart'; | 
| 3 | 3 | ||
| 4 | -class TestClass { | ||
| 5 | - final name = "John"; | ||
| 6 | -} | ||
| 7 | - | ||
| 8 | -class EmptyClass {} | ||
| 9 | - | ||
| 10 | void main() { | 4 | void main() { | 
| 11 | - group('isNullOrBlank on dynamic', () { | ||
| 12 | - // Identity util to convert to iterables | ||
| 13 | - dynamic _id(dynamic e) => e; | ||
| 14 | - | ||
| 15 | - test('null isNullOrBlank should be true for null', () { | ||
| 16 | - expect((null).isNullOrBlank, true); | ||
| 17 | - }); | ||
| 18 | - | ||
| 19 | - test('isNullOrBlank should be false for unsupported types', () { | ||
| 20 | - expect(5.isNullOrBlank, false); | ||
| 21 | - expect(0.isNullOrBlank, false); | ||
| 22 | - | ||
| 23 | - expect(5.0.isNullOrBlank, equals(false)); | ||
| 24 | - expect(0.0.isNullOrBlank, equals(false)); | ||
| 25 | - | ||
| 26 | - TestClass testClass; | ||
| 27 | - expect(testClass.isNullOrBlank, equals(true)); | ||
| 28 | - expect(TestClass().isNullOrBlank, equals(false)); | ||
| 29 | - expect(EmptyClass().isNullOrBlank, equals(false)); | ||
| 30 | - }); | ||
| 31 | - | ||
| 32 | - test('isNullOrBlank should validate strings', () { | ||
| 33 | - expect("".isNullOrBlank, true); | ||
| 34 | - expect(" ".isNullOrBlank, true); | ||
| 35 | - | ||
| 36 | - expect("foo".isNullOrBlank, false); | ||
| 37 | - expect(" foo ".isNullOrBlank, false); | ||
| 38 | - | ||
| 39 | - expect("null".isNullOrBlank, false); | ||
| 40 | - }); | ||
| 41 | - | ||
| 42 | - test('isNullOrBlank should validate iterables', () { | ||
| 43 | - expect([].map(_id).isNullOrBlank, true); | ||
| 44 | - expect([1].map(_id).isNullOrBlank, false); | ||
| 45 | - }); | ||
| 46 | - | ||
| 47 | - test('isNullOrBlank should validate lists', () { | ||
| 48 | - expect([].isNullOrBlank, true); | ||
| 49 | - expect(['oi', 'foo'].isNullOrBlank, false); | ||
| 50 | - expect([{}, {}].isNullOrBlank, false); | ||
| 51 | - expect(['foo'][0].isNullOrBlank, false); | ||
| 52 | - }); | ||
| 53 | - | ||
| 54 | - test('isNullOrBlank should validate sets', () { | ||
| 55 | - expect((<dynamic>{}).isNullOrBlank, true); | ||
| 56 | - expect(({1}).isNullOrBlank, false); | ||
| 57 | - expect({'fluorine', 'chlorine', 'bromine'}.isNullOrBlank, false); | ||
| 58 | - }); | ||
| 59 | - | ||
| 60 | - test('isNullOrBlank should validate maps', () { | ||
| 61 | - expect(({}).isNullOrBlank, true); | ||
| 62 | - expect(({1: 1}).isNullOrBlank, false); | ||
| 63 | - expect({"other": "thing"}.isNullOrBlank, false); | ||
| 64 | - | ||
| 65 | - final map = {"foo": 'bar', "one": "um"}; | ||
| 66 | - expect(map["foo"].isNullOrBlank, false); | ||
| 67 | - expect(map["other"].isNullOrBlank, true); | ||
| 68 | - }); | ||
| 69 | - }); | ||
| 70 | - | ||
| 71 | test('String test', () { | 5 | test('String test', () { | 
| 72 | var value = 'string'; | 6 | var value = 'string'; | 
| 73 | var expected = ''; | 7 | var expected = ''; | 
| @@ -9,7 +9,7 @@ void main() { | @@ -9,7 +9,7 @@ void main() { | ||
| 9 | final alphaNumeric = "123asd"; | 9 | final alphaNumeric = "123asd"; | 
| 10 | final numbers = "123"; | 10 | final numbers = "123"; | 
| 11 | final letters = "foo"; | 11 | final letters = "foo"; | 
| 12 | - String notInitializedVar; | 12 | + // String notInitializedVar; | 
| 13 | 13 | ||
| 14 | test('var.isNum', () { | 14 | test('var.isNum', () { | 
| 15 | expect(digit.isNum, true); | 15 | expect(digit.isNum, true); | 
| @@ -31,7 +31,7 @@ void main() { | @@ -31,7 +31,7 @@ void main() { | ||
| 31 | 31 | ||
| 32 | test('var.isBool', () { | 32 | test('var.isBool', () { | 
| 33 | final trueString = 'true'; | 33 | final trueString = 'true'; | 
| 34 | - expect(notInitializedVar.isBool, false); | 34 | + // expect(notInitializedVar.isBool, false); | 
| 35 | expect(letters.isBool, false); | 35 | expect(letters.isBool, false); | 
| 36 | expect(trueString.isBool, true); | 36 | expect(trueString.isBool, true); | 
| 37 | }); | 37 | }); | 
| @@ -5,7 +5,7 @@ import 'package:get/utils.dart'; | @@ -5,7 +5,7 @@ import 'package:get/utils.dart'; | ||
| 5 | void main() { | 5 | void main() { | 
| 6 | group('Group test for PaddingX Extension', () { | 6 | group('Group test for PaddingX Extension', () { | 
| 7 | testWidgets('Test of paddingAll', (tester) async { | 7 | testWidgets('Test of paddingAll', (tester) async { | 
| 8 | - Widget containerTest; | 8 | + Widget containerTest = Container(); | 
| 9 | 9 | ||
| 10 | expect(find.byType(Padding), findsNothing); | 10 | expect(find.byType(Padding), findsNothing); | 
| 11 | 11 | ||
| @@ -15,7 +15,7 @@ void main() { | @@ -15,7 +15,7 @@ void main() { | ||
| 15 | }); | 15 | }); | 
| 16 | 16 | ||
| 17 | testWidgets('Test of paddingOnly', (tester) async { | 17 | testWidgets('Test of paddingOnly', (tester) async { | 
| 18 | - Widget containerTest; | 18 | + Widget containerTest = Container(); | 
| 19 | 19 | ||
| 20 | expect(find.byType(Padding), findsNothing); | 20 | expect(find.byType(Padding), findsNothing); | 
| 21 | 21 | ||
| @@ -25,7 +25,7 @@ void main() { | @@ -25,7 +25,7 @@ void main() { | ||
| 25 | }); | 25 | }); | 
| 26 | 26 | ||
| 27 | testWidgets('Test of paddingSymmetric', (tester) async { | 27 | testWidgets('Test of paddingSymmetric', (tester) async { | 
| 28 | - Widget containerTest; | 28 | + Widget containerTest = Container(); | 
| 29 | 29 | ||
| 30 | expect(find.byType(Padding), findsNothing); | 30 | expect(find.byType(Padding), findsNothing); | 
| 31 | 31 | ||
| @@ -35,7 +35,7 @@ void main() { | @@ -35,7 +35,7 @@ void main() { | ||
| 35 | }); | 35 | }); | 
| 36 | 36 | ||
| 37 | testWidgets('Test of paddingZero', (tester) async { | 37 | testWidgets('Test of paddingZero', (tester) async { | 
| 38 | - Widget containerTest; | 38 | + Widget containerTest = Container(); | 
| 39 | 39 | ||
| 40 | expect(find.byType(Padding), findsNothing); | 40 | expect(find.byType(Padding), findsNothing); | 
| 41 | 41 | ||
| @@ -47,7 +47,7 @@ void main() { | @@ -47,7 +47,7 @@ void main() { | ||
| 47 | 47 | ||
| 48 | group('Group test for MarginX Extension', () { | 48 | group('Group test for MarginX Extension', () { | 
| 49 | testWidgets('Test of marginAll', (tester) async { | 49 | testWidgets('Test of marginAll', (tester) async { | 
| 50 | - Widget containerTest; | 50 | + Widget containerTest = Container(); | 
| 51 | 51 | ||
| 52 | await tester.pumpWidget(containerTest.marginAll(16)); | 52 | await tester.pumpWidget(containerTest.marginAll(16)); | 
| 53 | 53 | ||
| @@ -55,7 +55,7 @@ void main() { | @@ -55,7 +55,7 @@ void main() { | ||
| 55 | }); | 55 | }); | 
| 56 | 56 | ||
| 57 | testWidgets('Test of marginOnly', (tester) async { | 57 | testWidgets('Test of marginOnly', (tester) async { | 
| 58 | - Widget containerTest; | 58 | + Widget containerTest = Container(); | 
| 59 | 59 | ||
| 60 | await tester.pumpWidget(containerTest.marginOnly(top: 16)); | 60 | await tester.pumpWidget(containerTest.marginOnly(top: 16)); | 
| 61 | 61 | ||
| @@ -63,7 +63,7 @@ void main() { | @@ -63,7 +63,7 @@ void main() { | ||
| 63 | }); | 63 | }); | 
| 64 | 64 | ||
| 65 | testWidgets('Test of marginSymmetric', (tester) async { | 65 | testWidgets('Test of marginSymmetric', (tester) async { | 
| 66 | - Widget containerTest; | 66 | + Widget containerTest = Container(); | 
| 67 | 67 | ||
| 68 | await tester.pumpWidget(containerTest.marginSymmetric(vertical: 16)); | 68 | await tester.pumpWidget(containerTest.marginSymmetric(vertical: 16)); | 
| 69 | 69 | ||
| @@ -71,7 +71,7 @@ void main() { | @@ -71,7 +71,7 @@ void main() { | ||
| 71 | }); | 71 | }); | 
| 72 | 72 | ||
| 73 | testWidgets('Test of marginZero', (tester) async { | 73 | testWidgets('Test of marginZero', (tester) async { | 
| 74 | - Widget containerTest; | 74 | + Widget containerTest = Container(); | 
| 75 | 75 | ||
| 76 | await tester.pumpWidget(containerTest.marginZero); | 76 | await tester.pumpWidget(containerTest.marginZero); | 
| 77 | 77 | 
| 1 | import 'package:flutter_test/flutter_test.dart'; | 1 | import 'package:flutter_test/flutter_test.dart'; | 
| 2 | import 'package:get/get.dart'; | 2 | import 'package:get/get.dart'; | 
| 3 | 3 | ||
| 4 | -// Identity util to convert to iterables | ||
| 5 | -dynamic _id(dynamic e) => e; | 4 | +class TestClass { | 
| 5 | + final name = "John"; | ||
| 6 | +} | ||
| 7 | + | ||
| 8 | +class EmptyClass {} | ||
| 6 | 9 | ||
| 7 | void main() { | 10 | void main() { | 
| 8 | - // Tests for GetUtils.isNullOrBlank are located at dynamic extensions | 11 | + dynamic _id(dynamic e) => e; | 
| 12 | + | ||
| 13 | + Null _test; | ||
| 14 | + | ||
| 15 | + test('null isNullOrBlank should be true for null', () { | ||
| 16 | + expect(GetUtils.isNullOrBlank(_test), true); | ||
| 17 | + }); | ||
| 18 | + | ||
| 19 | + test('isNullOrBlank should be false for unsupported types', () { | ||
| 20 | + expect(GetUtils.isNullOrBlank(5), false); | ||
| 21 | + expect(GetUtils.isNullOrBlank(0), false); | ||
| 22 | + | ||
| 23 | + expect(GetUtils.isNullOrBlank(5.0), equals(false)); | ||
| 24 | + expect(GetUtils.isNullOrBlank(0.0), equals(false)); | ||
| 25 | + | ||
| 26 | + TestClass testClass; | ||
| 27 | + expect(GetUtils.isNullOrBlank(testClass), equals(true)); | ||
| 28 | + expect(GetUtils.isNullOrBlank(TestClass()), equals(false)); | ||
| 29 | + expect(GetUtils.isNullOrBlank(EmptyClass()), equals(false)); | ||
| 30 | + }); | ||
| 31 | + | ||
| 32 | + test('isNullOrBlank should validate strings', () { | ||
| 33 | + expect(GetUtils.isNullOrBlank(""), true); | ||
| 34 | + expect(GetUtils.isNullOrBlank(" "), true); | ||
| 35 | + | ||
| 36 | + expect(GetUtils.isNullOrBlank("foo"), false); | ||
| 37 | + expect(GetUtils.isNullOrBlank(" foo "), false); | ||
| 38 | + | ||
| 39 | + expect(GetUtils.isNullOrBlank("null"), false); | ||
| 40 | + }); | ||
| 41 | + | ||
| 42 | + test('isNullOrBlank should validate iterables', () { | ||
| 43 | + expect(GetUtils.isNullOrBlank([].map(_id)), true); | ||
| 44 | + expect(GetUtils.isNullOrBlank([1].map(_id)), false); | ||
| 45 | + }); | ||
| 46 | + | ||
| 47 | + test('isNullOrBlank should validate lists', () { | ||
| 48 | + expect(GetUtils.isNullOrBlank(const []), true); | ||
| 49 | + expect(GetUtils.isNullOrBlank(['oi', 'foo']), false); | ||
| 50 | + expect(GetUtils.isNullOrBlank([{}, {}]), false); | ||
| 51 | + expect(GetUtils.isNullOrBlank(['foo'][0]), false); | ||
| 52 | + }); | ||
| 53 | + | ||
| 54 | + test('isNullOrBlank should validate sets', () { | ||
| 55 | + expect(GetUtils.isNullOrBlank(<dynamic>{}), true); | ||
| 56 | + expect(GetUtils.isNullOrBlank({1}), false); | ||
| 57 | + expect(GetUtils.isNullOrBlank({'fluorine', 'chlorine', 'bromine'}), false); | ||
| 58 | + }); | ||
| 59 | + | ||
| 60 | + test('isNullOrBlank should validate maps', () { | ||
| 61 | + expect(GetUtils.isNullOrBlank({}), true); | ||
| 62 | + expect(GetUtils.isNullOrBlank({1: 1}), false); | ||
| 63 | + expect(GetUtils.isNullOrBlank({"other": "thing"}), false); | ||
| 64 | + | ||
| 65 | + final map = {"foo": 'bar', "one": "um"}; | ||
| 66 | + expect(GetUtils.isNullOrBlank(map["foo"]), false); | ||
| 67 | + expect(GetUtils.isNullOrBlank(map["other"]), true); | ||
| 68 | + }); | ||
| 9 | group('GetUtils.isLength* functions', () { | 69 | group('GetUtils.isLength* functions', () { | 
| 10 | test('isLengthEqualTo should validate iterable lengths', () { | 70 | test('isLengthEqualTo should validate iterable lengths', () { | 
| 11 | // iterables should cover list and set | 71 | // iterables should cover list and set | 
- 
Please register or login to post a comment