1mod binding;
30mod dataset;
31mod projection;
32mod record;
33mod schema;
34mod value;
35
36pub use binding::ChartFieldBinding;
37pub use dataset::Dataset;
38pub use projection::ProjectionError;
39pub use record::DataRecord;
40pub use schema::{DataSchema, FieldDef};
41pub use value::{text_map_from_strings, CompareHint, DataType, DataValue};
42
43#[cfg(test)]
44mod tests {
45 use super::*;
46 use std::collections::HashMap;
47
48 #[test]
49 fn display_string_covers_variants() {
50 assert_eq!(DataValue::Text("hello".into()).display_string(), "hello");
51 assert_eq!(DataValue::Number(42.5).display_string(), "42.5");
52 assert_eq!(DataValue::Bool(true).display_string(), "true");
53 assert_eq!(DataValue::Null.display_string(), "");
54 }
55
56 #[test]
57 fn from_text_map_and_rows() {
58 let record =
59 DataRecord::from_text_map("a", HashMap::from([("name".into(), "Alpha".into())]));
60 assert_eq!(record.get("name").unwrap().display_string(), "Alpha");
61
62 let dataset = Dataset::from_text_rows(
63 [("name".into(), "Name".into())],
64 [("1".into(), HashMap::from([("name".into(), "Ada".into())]))],
65 );
66 assert_eq!(dataset.records.len(), 1);
67 assert_eq!(dataset.schema.fields.len(), 1);
68 }
69}