|
| 1 | + |
| 2 | +import 'package:csv/csv.dart'; |
| 3 | +import 'package:test/test.dart'; |
| 4 | + |
| 5 | +void main() { |
| 6 | + group('Dynamic Typing Tests', () { |
| 7 | + test('Parse integers', () { |
| 8 | + final input = '123,-456'; |
| 9 | + final decoder = CsvDecoder(dynamicTyping: true); |
| 10 | + final result = decoder.convert(input); |
| 11 | + expect(result[0][0], equals(123)); |
| 12 | + expect(result[0][1], equals(-456)); |
| 13 | + expect(result[0][0], isA<int>()); |
| 14 | + }); |
| 15 | + |
| 16 | + test('Parse doubles', () { |
| 17 | + final input = '1.23,1e10,.5'; |
| 18 | + final decoder = CsvDecoder(dynamicTyping: true); |
| 19 | + final result = decoder.convert(input); |
| 20 | + expect(result[0][0], equals(1.23)); |
| 21 | + expect(result[0][1], equals(1e10)); |
| 22 | + expect(result[0][2], equals(0.5)); |
| 23 | + expect(result[0][0], isA<double>()); |
| 24 | + }); |
| 25 | + |
| 26 | + test('Parse booleans', () { |
| 27 | + final input = 'true,false'; |
| 28 | + final decoder = CsvDecoder(dynamicTyping: true); |
| 29 | + final result = decoder.convert(input); |
| 30 | + expect(result[0][0], isTrue); |
| 31 | + expect(result[0][1], isFalse); |
| 32 | + }); |
| 33 | + |
| 34 | + test('Mixed data and types', () { |
| 35 | + final input = '123,true,hello,1.5'; |
| 36 | + final decoder = CsvDecoder(dynamicTyping: true); |
| 37 | + final result = decoder.convert(input); |
| 38 | + expect(result[0], equals([123, true, 'hello', 1.5])); |
| 39 | + }); |
| 40 | + |
| 41 | + test('Quoted values are also typed (PapaParse semantics)', () { |
| 42 | + final input = '"123","true","3.14"'; |
| 43 | + final decoder = CsvDecoder(dynamicTyping: true); |
| 44 | + final result = decoder.convert(input); |
| 45 | + expect(result[0], equals([123, true, 3.14])); |
| 46 | + }); |
| 47 | + |
| 48 | + test('Booleans must be exact match (PapaParse semantics)', () { |
| 49 | + final input = 'TRUE,False,true'; |
| 50 | + final decoder = CsvDecoder(dynamicTyping: true); |
| 51 | + final result = decoder.convert(input); |
| 52 | + expect(result[0], equals(['TRUE', 'False', true])); |
| 53 | + }); |
| 54 | + }); |
| 55 | +} |
0 commit comments