1#![allow(
4 clippy::doc_overindented_list_items,
5 clippy::large_enum_variant,
6 clippy::needless_borrow,
7 clippy::needless_borrows_for_generic_args,
8 clippy::needless_lifetimes,
9 rustdoc::invalid_html_tags
10)]
11
12pub mod extensions {
16 include!(concat!(env!("OUT_DIR"), "/substrait.extensions.rs"));
17
18 #[cfg(feature = "serde")]
19 include!(concat!(env!("OUT_DIR"), "/substrait.extensions.serde.rs"));
20}
21
22include!(concat!(env!("OUT_DIR"), "/substrait.rs"));
23
24#[cfg(feature = "serde")]
25include!(concat!(env!("OUT_DIR"), "/substrait.serde.rs"));
26
27#[cfg(test)]
28mod tests {
29 #[cfg(feature = "serde")]
30 #[test]
31 fn pbjson_serde() -> Result<(), Box<dyn std::error::Error>> {
32 let plan = serde_json::from_str::<super::Plan>(
33 r#"{
34 "version": { "minorNumber": 19, "producer": "substrait-rs" },
35 "extensionUris": [
36 {
37 "extensionUriAnchor": 1,
38 "uri": "https://github.com/substrait-io/substrait/blob/main/extensions/functions_string.yaml"
39 }
40 ]
41}"#,
42 )?;
43 assert_eq!(
44 plan.version,
45 Some(super::Version {
46 minor_number: 19,
47 producer: "substrait-rs".into(),
48 ..Default::default()
49 })
50 );
51 assert_eq!(plan.extension_uris.len(), 1);
52 Ok(())
53 }
54}