| 1331 | |
| 1332 | #[test] |
| 1333 | fn test_csv_reader_with_decimal() { |
| 1334 | let schema = Arc::new(Schema::new(vec![ |
| 1335 | Field::new("city", DataType::Utf8, false), |
| 1336 | Field::new("lat", DataType::Decimal128(38, 6), false), |
| 1337 | Field::new("lng", DataType::Decimal256(76, 6), false), |
| 1338 | ])); |
| 1339 | |
| 1340 | let file = File::open("test/data/decimal_test.csv").unwrap(); |
| 1341 | |
| 1342 | let mut csv = ReaderBuilder::new(schema).build(file).unwrap(); |
| 1343 | let batch = csv.next().unwrap().unwrap(); |
| 1344 | // access data from a primitive array |
| 1345 | let lat = batch |
| 1346 | .column(1) |
| 1347 | .as_any() |
| 1348 | .downcast_ref::<Decimal128Array>() |
| 1349 | .unwrap(); |
| 1350 | |
| 1351 | assert_eq!("57.653484", lat.value_as_string(0)); |
| 1352 | assert_eq!("53.002666", lat.value_as_string(1)); |
| 1353 | assert_eq!("52.412811", lat.value_as_string(2)); |
| 1354 | assert_eq!("51.481583", lat.value_as_string(3)); |
| 1355 | assert_eq!("12.123456", lat.value_as_string(4)); |
| 1356 | assert_eq!("50.760000", lat.value_as_string(5)); |
| 1357 | assert_eq!("0.123000", lat.value_as_string(6)); |
| 1358 | assert_eq!("123.000000", lat.value_as_string(7)); |
| 1359 | assert_eq!("123.000000", lat.value_as_string(8)); |
| 1360 | assert_eq!("-50.760000", lat.value_as_string(9)); |
| 1361 | |
| 1362 | let lng = batch |
| 1363 | .column(2) |
| 1364 | .as_any() |
| 1365 | .downcast_ref::<Decimal256Array>() |
| 1366 | .unwrap(); |
| 1367 | |
| 1368 | assert_eq!("-3.335724", lng.value_as_string(0)); |
| 1369 | assert_eq!("-2.179404", lng.value_as_string(1)); |
| 1370 | assert_eq!("-1.778197", lng.value_as_string(2)); |
| 1371 | assert_eq!("-3.179090", lng.value_as_string(3)); |
| 1372 | assert_eq!("-3.179090", lng.value_as_string(4)); |
| 1373 | assert_eq!("0.290472", lng.value_as_string(5)); |
| 1374 | assert_eq!("0.290472", lng.value_as_string(6)); |
| 1375 | assert_eq!("0.290472", lng.value_as_string(7)); |
| 1376 | assert_eq!("0.290472", lng.value_as_string(8)); |
| 1377 | assert_eq!("0.290472", lng.value_as_string(9)); |
| 1378 | } |
| 1379 | |
| 1380 | #[test] |
| 1381 | fn test_csv_reader_with_decimal_3264() { |