| 1379 | |
| 1380 | #[test] |
| 1381 | fn test_csv_reader_with_decimal_3264() { |
| 1382 | let schema = Arc::new(Schema::new(vec![ |
| 1383 | Field::new("city", DataType::Utf8, false), |
| 1384 | Field::new("lat", DataType::Decimal32(9, 6), false), |
| 1385 | Field::new("lng", DataType::Decimal64(16, 6), false), |
| 1386 | ])); |
| 1387 | |
| 1388 | let file = File::open("test/data/decimal_test.csv").unwrap(); |
| 1389 | |
| 1390 | let mut csv = ReaderBuilder::new(schema).build(file).unwrap(); |
| 1391 | let batch = csv.next().unwrap().unwrap(); |
| 1392 | // access data from a primitive array |
| 1393 | let lat = batch |
| 1394 | .column(1) |
| 1395 | .as_any() |
| 1396 | .downcast_ref::<Decimal32Array>() |
| 1397 | .unwrap(); |
| 1398 | |
| 1399 | assert_eq!("57.653484", lat.value_as_string(0)); |
| 1400 | assert_eq!("53.002666", lat.value_as_string(1)); |
| 1401 | assert_eq!("52.412811", lat.value_as_string(2)); |
| 1402 | assert_eq!("51.481583", lat.value_as_string(3)); |
| 1403 | assert_eq!("12.123456", lat.value_as_string(4)); |
| 1404 | assert_eq!("50.760000", lat.value_as_string(5)); |
| 1405 | assert_eq!("0.123000", lat.value_as_string(6)); |
| 1406 | assert_eq!("123.000000", lat.value_as_string(7)); |
| 1407 | assert_eq!("123.000000", lat.value_as_string(8)); |
| 1408 | assert_eq!("-50.760000", lat.value_as_string(9)); |
| 1409 | |
| 1410 | let lng = batch |
| 1411 | .column(2) |
| 1412 | .as_any() |
| 1413 | .downcast_ref::<Decimal64Array>() |
| 1414 | .unwrap(); |
| 1415 | |
| 1416 | assert_eq!("-3.335724", lng.value_as_string(0)); |
| 1417 | assert_eq!("-2.179404", lng.value_as_string(1)); |
| 1418 | assert_eq!("-1.778197", lng.value_as_string(2)); |
| 1419 | assert_eq!("-3.179090", lng.value_as_string(3)); |
| 1420 | assert_eq!("-3.179090", lng.value_as_string(4)); |
| 1421 | assert_eq!("0.290472", lng.value_as_string(5)); |
| 1422 | assert_eq!("0.290472", lng.value_as_string(6)); |
| 1423 | assert_eq!("0.290472", lng.value_as_string(7)); |
| 1424 | assert_eq!("0.290472", lng.value_as_string(8)); |
| 1425 | assert_eq!("0.290472", lng.value_as_string(9)); |
| 1426 | } |
| 1427 | |
| 1428 | #[test] |
| 1429 | fn test_csv_from_buf_reader() { |