diff --git a/Cargo.toml b/Cargo.toml index ab39b3b..d5e249a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,5 +2,5 @@ members = [ "yaserde", "yaserde_derive", -# "examples" + "examples", ] diff --git a/examples/Cargo.toml b/examples/Cargo.toml index dab26f2..049a067 100644 --- a/examples/Cargo.toml +++ b/examples/Cargo.toml @@ -3,10 +3,11 @@ name = "yaserde-examples" version = "0.0.1" authors = ["Marc-Antoine Arnaud "] license = "MIT" +edition = "2018" [dependencies] -yaserde = {version = "0.5.1", path = "../../yaserde" } -yaserde_derive = {version = "0.5.1", path = "../../yaserde_derive" } +yaserde = {version = "0.5.1", path = "../yaserde" } +yaserde_derive = {version = "0.5.1", path = "../yaserde_derive" } xml-rs = "0.8.0" log = "0.4" simple_logger = "1.0" diff --git a/examples/src/bbigras_namespace.rs b/examples/src/bbigras_namespace.rs index 7d9b228..2093db1 100644 --- a/examples/src/bbigras_namespace.rs +++ b/examples/src/bbigras_namespace.rs @@ -1,14 +1,12 @@ // related to issue https://github.com/media-io/yaserde/issues/15 -use std::io::Read; -use yaserde::YaDeserialize; #[derive(YaDeserialize, Default, Debug, PartialEq)] #[yaserde( - prefix="ss", - namespace="x: urn:schemas-microsoft-com:office:excel", - namespace="ss: urn:schemas-microsoft-com:office:spreadsheet", - namespace="o: urn:schemas-microsoft-com:office:office", - namespace="html: http://www.w3.org/TR/REC-html40" + prefix = "ss", + namespace = "x: urn:schemas-microsoft-com:office:excel", + namespace = "ss: urn:schemas-microsoft-com:office:spreadsheet", + namespace = "o: urn:schemas-microsoft-com:office:office", + namespace = "html: http://www.w3.org/TR/REC-html40" )] struct Workbook { #[yaserde(rename = "Worksheet")] @@ -17,11 +15,11 @@ struct Workbook { #[derive(YaDeserialize, Default, Debug, PartialEq)] #[yaserde( - prefix="ss", - namespace="x: urn:schemas-microsoft-com:office:excel", - namespace="ss: urn:schemas-microsoft-com:office:spreadsheet", - namespace="o: urn:schemas-microsoft-com:office:office", - namespace="html: http://www.w3.org/TR/REC-html40" + prefix = "ss", + namespace = "x: urn:schemas-microsoft-com:office:excel", + namespace = "ss: urn:schemas-microsoft-com:office:spreadsheet", + namespace = "o: urn:schemas-microsoft-com:office:office", + namespace = "html: http://www.w3.org/TR/REC-html40" )] struct Worksheet { #[yaserde(rename = "Table")] @@ -32,11 +30,11 @@ struct Worksheet { #[derive(YaDeserialize, Default, Debug, PartialEq)] #[yaserde( - prefix="ss", - namespace="x: urn:schemas-microsoft-com:office:excel", - namespace="ss: urn:schemas-microsoft-com:office:spreadsheet", - namespace="o: urn:schemas-microsoft-com:office:office", - namespace="html: http://www.w3.org/TR/REC-html40" + prefix = "ss", + namespace = "x: urn:schemas-microsoft-com:office:excel", + namespace = "ss: urn:schemas-microsoft-com:office:spreadsheet", + namespace = "o: urn:schemas-microsoft-com:office:office", + namespace = "html: http://www.w3.org/TR/REC-html40" )] struct Table { #[yaserde(attribute, rename = "ExpandedColumnCount", prefix = "ss")] @@ -55,17 +53,16 @@ struct Table { default_column_height: f32, #[yaserde(rename = "Row")] - rows: Vec + rows: Vec, } - #[derive(YaDeserialize, Default, Debug, PartialEq)] #[yaserde( - prefix="ss", - namespace="x: urn:schemas-microsoft-com:office:excel", - namespace="ss: urn:schemas-microsoft-com:office:spreadsheet", - namespace="o: urn:schemas-microsoft-com:office:office", - namespace="html: http://www.w3.org/TR/REC-html40" + prefix = "ss", + namespace = "x: urn:schemas-microsoft-com:office:excel", + namespace = "ss: urn:schemas-microsoft-com:office:spreadsheet", + namespace = "o: urn:schemas-microsoft-com:office:office", + namespace = "html: http://www.w3.org/TR/REC-html40" )] struct Row { #[yaserde(attribute, rename = "AutoFitHeight", prefix = "ss")] @@ -76,17 +73,14 @@ struct Row { #[test] fn parsing_bbigras_namespace() { - use std::fs::File; + use std::fs; use yaserde::de::from_str; let filename = "tests/data/bbigras-namespace.xml"; - let mut f = File::open(filename).expect("file not found"); - let mut contents = String::new(); - f.read_to_string(&mut contents) - .expect("something went wrong reading the file"); + let content = fs::read_to_string(filename).expect("something went wrong reading the file"); - let loaded: Workbook = from_str(&contents).unwrap(); + let loaded: Workbook = from_str(&content).unwrap(); println!("{:?}", loaded); let reference = Workbook { @@ -100,11 +94,12 @@ fn parsing_bbigras_namespace() { style_id: "s64".to_string(), default_column_width: 60.75, default_column_height: 15.0, - rows: vec![ - Row { auto_fit_height: 0.0, height: 33.0 } - ] - } - } + rows: vec![Row { + auto_fit_height: 0.0, + height: 33.0, + }], + }, + }, }; assert_eq!(loaded, reference); diff --git a/examples/src/boscop.rs b/examples/src/boscop.rs index 3e40963..ff0d9cf 100644 --- a/examples/src/boscop.rs +++ b/examples/src/boscop.rs @@ -1,6 +1,4 @@ // related to issue https://github.com/media-io/yaserde/issues/3 -use std::io::Read; -use yaserde::YaDeserialize; #[derive(Default, Debug, Clone, PartialEq, YaDeserialize)] #[yaserde(root = "layout")] @@ -104,17 +102,13 @@ pub struct Midi { #[test] fn parsing_bbigras_namespace() { - use std::fs::File; + use std::fs; use yaserde::de::from_str; let filename = "tests/data/boscop.xml"; - let mut f = File::open(filename).expect("file not found"); + let content = fs::read_to_string(filename).expect("something went wrong reading the file"); - let mut contents = String::new(); - f.read_to_string(&mut contents) - .expect("something went wrong reading the file"); - - let loaded: Layout = from_str(&contents).unwrap(); + let loaded: Layout = from_str(&content).unwrap(); assert_eq!(loaded.tabpage.len(), 4); assert_eq!(loaded.tabpage[0].control.len(), 13); diff --git a/examples/src/lib.rs b/examples/src/lib.rs index 1943c57..af42128 100644 --- a/examples/src/lib.rs +++ b/examples/src/lib.rs @@ -1,10 +1,7 @@ -extern crate log; -extern crate simple_logger; -extern crate xml; -extern crate yaserde; #[macro_use] extern crate yaserde_derive; mod bbigras_namespace; mod boscop; mod ln_dom; +mod svd; diff --git a/examples/src/ln_dom.rs b/examples/src/ln_dom.rs index 657134d..1264afa 100644 --- a/examples/src/ln_dom.rs +++ b/examples/src/ln_dom.rs @@ -1,9 +1,7 @@ // related to issue https://github.com/media-io/yaserde/issues/11 -use std::io::Read; -use yaserde::YaDeserialize; #[derive(YaDeserialize, Default, Debug, PartialEq)] -#[yaserde(root="DOMSymbolItem")] +#[yaserde(root = "DOMSymbolItem")] struct Level { #[yaserde(attribute)] last_modified: u64, @@ -15,7 +13,7 @@ struct Level { #[derive(YaDeserialize, Default, Debug, PartialEq)] struct Timeline { #[yaserde(rename = "DOMTimeline")] - timeline: DOMTimeline + timeline: DOMTimeline, } #[derive(YaDeserialize, Default, Debug, PartialEq)] @@ -26,13 +24,13 @@ struct DOMTimeline { current_frame: u64, #[yaserde(attribute)] guides: u64, - layers: Layers + layers: Layers, } #[derive(YaDeserialize, Default, Debug, PartialEq)] struct Layers { #[yaserde(rename = "DOMLayer")] - dom_layer: Vec + dom_layer: Vec, } #[derive(YaDeserialize, Default, Debug, PartialEq)] @@ -40,22 +38,19 @@ struct DOMLayer { #[yaserde(attribute, rename = "name")] named: String, #[yaserde(attribute)] - name2: String + name2: String, } #[test] fn parsing_ln_dom() { - use std::fs::File; + use std::fs; use yaserde::de::from_str; let filename = "tests/data/ln-dom.xml"; - let mut f = File::open(filename).expect("file not found"); - let mut contents = String::new(); - f.read_to_string(&mut contents) - .expect("something went wrong reading the file"); + let content = fs::read_to_string(filename).expect("something went wrong reading the file"); - let loaded: Level = from_str(&contents).unwrap(); + let loaded: Level = from_str(&content).unwrap(); println!("{:?}", loaded); let reference = Level { @@ -70,16 +65,16 @@ fn parsing_ln_dom() { dom_layer: vec![ DOMLayer { named: "Layer 2".to_string(), - name2: "Lalayer 2".to_string() + name2: "Lalayer 2".to_string(), }, DOMLayer { named: "Layer 1".to_string(), - name2: "Lalayer 1".to_string() - } - ] - } - } - } + name2: "Lalayer 1".to_string(), + }, + ], + }, + }, + }, }; assert_eq!(loaded, reference); diff --git a/examples/src/svd.rs b/examples/src/svd.rs index ac3986e..a4628a9 100644 --- a/examples/src/svd.rs +++ b/examples/src/svd.rs @@ -2,127 +2,125 @@ use yaserde_derive::YaSerialize; #[derive(Default, PartialEq, Debug, YaSerialize)] struct CpuDef { - #[yaserde(child)] - name: String, - #[yaserde(child)] - revision: String, - #[yaserde(child)] - endian: String, // enum {LE, BE, ME} - #[yaserde(child)] - mpupresent: bool, - #[yaserde(child)] - fpupresent: bool, - //#[yaserde(child)] - //nvicpriobits: enum {8, 16, 32, 64, 128}, - #[yaserde(child)] - vendorsystickconfig: bool + #[yaserde(child)] + name: String, + #[yaserde(child)] + revision: String, + #[yaserde(child)] + endian: String, // enum {LE, BE, ME} + #[yaserde(child)] + mpupresent: bool, + #[yaserde(child)] + fpupresent: bool, + //#[yaserde(child)] + //nvicpriobits: enum {8, 16, 32, 64, 128}, + #[yaserde(child)] + vendorsystickconfig: bool, } #[derive(Default, PartialEq, Debug, YaSerialize)] struct Field { - name: String, - #[yaserde(child)] - description: String, - #[yaserde(child)] - bitrange: String, - #[yaserde(child)] - access: String, + name: String, + #[yaserde(child)] + description: String, + #[yaserde(child)] + bitrange: String, + #[yaserde(child)] + access: String, } #[derive(Default, PartialEq, Debug, YaSerialize)] struct Register { - #[yaserde(child)] - name: String, - #[yaserde(child)] - description: String, - #[yaserde(child)] - addressoffset: String, - #[yaserde(child)] - size: u8, - #[yaserde(child)] - access: String, - #[yaserde(child)] - resetvalue: String, - #[yaserde(child)] - resetmask: String, - #[yaserde(child)] - fields: Vec + #[yaserde(child)] + name: String, + #[yaserde(child)] + description: String, + #[yaserde(child)] + addressoffset: String, + #[yaserde(child)] + size: u8, + #[yaserde(child)] + access: String, + #[yaserde(child)] + resetvalue: String, + #[yaserde(child)] + resetmask: String, + #[yaserde(child)] + fields: Vec, } #[derive(Default, PartialEq, Debug, YaSerialize)] struct Peripheral { - #[yaserde(child)] - name: String, - #[yaserde(child)] - version: String, - #[yaserde(child)] - description: String, - #[yaserde(child)] - groupname: String, - #[yaserde(child)] - baseaddress: String, - #[yaserde(child)] - size: u8, - #[yaserde(child)] - access: String, - #[yaserde(child)] - registers: Vec + #[yaserde(child)] + name: String, + #[yaserde(child)] + version: String, + #[yaserde(child)] + description: String, + #[yaserde(child)] + groupname: String, + #[yaserde(child)] + baseaddress: String, + #[yaserde(child)] + size: u8, + #[yaserde(child)] + access: String, + #[yaserde(child)] + registers: Vec, } #[derive(Default, PartialEq, Debug, YaSerialize)] struct DevAttrs { - #[yaserde(child)] - vendor: String, - #[yaserde(child)] - vendorid: String, - #[yaserde(child)] - name: String, - #[yaserde(child)] - series: String, - #[yaserde(child)] - version: String, - #[yaserde(child)] - description: String, - #[yaserde(child)] - licensetext: String, - #[yaserde(child)] - cpu: CpuDef, - #[yaserde(child)] - addressunitbits: u8, - #[yaserde(child)] - width: u8, - #[yaserde(child)] - size: u8, - #[yaserde(child)] - access: String, - #[yaserde(child)] - resetvalue: String, - #[yaserde(child)] - resetmask: String, - #[yaserde(child)] - peripherals: Vec + #[yaserde(child)] + vendor: String, + #[yaserde(child)] + vendorid: String, + #[yaserde(child)] + name: String, + #[yaserde(child)] + series: String, + #[yaserde(child)] + version: String, + #[yaserde(child)] + description: String, + #[yaserde(child)] + licensetext: String, + #[yaserde(child)] + cpu: CpuDef, + #[yaserde(child)] + addressunitbits: u8, + #[yaserde(child)] + width: u8, + #[yaserde(child)] + size: u8, + #[yaserde(child)] + access: String, + #[yaserde(child)] + resetvalue: String, + #[yaserde(child)] + resetmask: String, + #[yaserde(child)] + peripherals: Vec, } #[derive(Default, PartialEq, Debug, YaSerialize)] #[yaserde(rename = "device")] struct Device { - #[yaserde(attribute)] - schemaversion: String, - #[yaserde(attribute)] - xmlns: String, - #[yaserde(attribute)] - xsnonamespaceschemalocation: String, - #[yaserde(child)] - devattributes: DevAttrs + #[yaserde(attribute)] + schemaversion: String, + #[yaserde(attribute)] + xmlns: String, + #[yaserde(attribute)] + xsnonamespaceschemalocation: String, + #[yaserde(child)] + devattributes: DevAttrs, } -fn main() { +#[test] +fn parsing_svd() { + use std::fs; - let mut vec_peripherals: Vec = Vec::new(); - let mut vec_registers: Vec = Vec::new(); - let vec_fields: Vec = Vec::new(); - - let register = Register { + let register = Register { name: "PRCMD".to_string(), description: "This command register (PRCMD) is to protect the registers that may have a significant influence on the application system (PSC, PSM) from an inadvertent write access, so that the system does not stop in case of a program hang-up.".to_string(), addressoffset: "0xFFFFF1FC".to_string(), @@ -130,60 +128,69 @@ fn main() { access: "read-write".to_string(), resetvalue: "0x0000".to_string(), resetmask: "0xFFFF".to_string(), - fields: vec_fields - }; - vec_registers.push(register); - - let peripheral = Peripheral { - name: "Specific Registers".to_string(), - version: "1.0".to_string(), - description: "Specific Registers".to_string(), - groupname: "MCU".to_string(), - baseaddress: "0xFFFFF1FC".to_string(), - size: 16, - access: "read-write".to_string(), - registers: vec_registers - }; - vec_peripherals.push(peripheral); - - let cpu_def = CpuDef { - name: "V850".to_string(), - revision: "r1".to_string(), - endian: "LE".to_string(), // enum {LE, BE, ME} - mpupresent: false, - fpupresent: false, - //nvicpriobits: enum {8, 16, 32, 64, 128}, - vendorsystickconfig: false + fields: vec![], }; - let dev_attrs = DevAttrs { - vendor: "Renesas".to_string(), - vendorid: "Renesas".to_string(), - name: "V850".to_string(), - series: "E1/E2/CA2".to_string(), - version: "1.2".to_string(), - description: "NEC/Renesas V850 automotive grade ICs".to_string(), - licensetext: "GPLv3".to_string(), - cpu: cpu_def, - addressunitbits: 8, - width: 32, - size: 32, - access: "read-write".to_string(), - resetvalue: "0x00000000".to_string(), - resetmask: "0xFFFFFFFF".to_string(), - peripherals: vec_peripherals - }; + let vec_registers = vec![register]; - let dev = Device { schemaversion: "foo".to_string(), - xmlns: "http://www.w3.org/2001/XMLSchema-instance".to_string(), - xsnonamespaceschemalocation: "CMSIS-SVD.xsd".to_string(), - devattributes: dev_attrs - }; - - // Display pretty printed XML - let yaserde_cfg = yaserde::ser::Config{ - perform_indent: true, - .. Default::default() - }; - println!("{:#?}", yaserde::ser::to_string_with_config(&dev, &yaserde_cfg)); + let peripheral = Peripheral { + name: "Specific Registers".to_string(), + version: "1.0".to_string(), + description: "Specific Registers".to_string(), + groupname: "MCU".to_string(), + baseaddress: "0xFFFFF1FC".to_string(), + size: 16, + access: "read-write".to_string(), + registers: vec_registers, + }; + + let vec_peripherals = vec![peripheral]; + + let cpu_def = CpuDef { + name: "V850".to_string(), + revision: "r1".to_string(), + endian: "LE".to_string(), // enum {LE, BE, ME} + mpupresent: false, + fpupresent: false, + //nvicpriobits: enum {8, 16, 32, 64, 128}, + vendorsystickconfig: false, + }; + + let dev_attrs = DevAttrs { + vendor: "Renesas".to_string(), + vendorid: "Renesas".to_string(), + name: "V850".to_string(), + series: "E1/E2/CA2".to_string(), + version: "1.2".to_string(), + description: "NEC/Renesas V850 automotive grade ICs".to_string(), + licensetext: "GPLv3".to_string(), + cpu: cpu_def, + addressunitbits: 8, + width: 32, + size: 32, + access: "read-write".to_string(), + resetvalue: "0x00000000".to_string(), + resetmask: "0xFFFFFFFF".to_string(), + peripherals: vec_peripherals, + }; + + let device = Device { + schemaversion: "foo".to_string(), + xmlns: "http://www.w3.org/2001/XMLSchema-instance".to_string(), + xsnonamespaceschemalocation: "CMSIS-SVD.xsd".to_string(), + devattributes: dev_attrs, + }; + + // Display pretty printed XML + let yaserde_cfg = yaserde::ser::Config { + perform_indent: true, + ..Default::default() + }; + + let serialized = yaserde::ser::to_string_with_config(&device, &yaserde_cfg).unwrap(); + + let reference = + fs::read_to_string("tests/data/svd.xml").expect("something went wrong reading the file"); + + assert_eq!(reference, serialized) } diff --git a/examples/tests/data/svd.xml b/examples/tests/data/svd.xml new file mode 100644 index 0000000..8743645 --- /dev/null +++ b/examples/tests/data/svd.xml @@ -0,0 +1,44 @@ + + + + Renesas + Renesas + V850 + E1/E2/CA2 + 1.2 + NEC/Renesas V850 automotive grade ICs + GPLv3 + + V850 + r1 + LE + false + false + false + + 8 + 32 + 32 + read-write + 0x00000000 + 0xFFFFFFFF + + Specific Registers + 1.0 + Specific Registers + MCU + 0xFFFFF1FC + 16 + read-write + + PRCMD + This command register (PRCMD) is to protect the registers that may have a significant influence on the application system (PSC, PSM) from an inadvertent write access, so that the system does not stop in case of a program hang-up. + 0xFFFFF1FC + 8 + read-write + 0x0000 + 0xFFFF + + + + \ No newline at end of file diff --git a/yaserde/src/lib.rs b/yaserde/src/lib.rs index a9c73e1..9aaafce 100644 --- a/yaserde/src/lib.rs +++ b/yaserde/src/lib.rs @@ -13,7 +13,7 @@ //! file for microcontrollers is called [SVD](https://github.com/rust-embedded/svd/) //! and it can be defined on YaSerDe via structs like so: //! -//!```ignore +//!```rust //! use yaserde_derive::YaSerialize; //! //! #[derive(Default, PartialEq, Debug, YaSerialize)] @@ -26,7 +26,13 @@ //! #[yaserde(attribute)] //! xsnonamespaceschemalocation: String, //! #[yaserde(child)] -//! devattributes: DevAttrs +//! attributes: DeviceAttributes +//! } +//! +//! #[derive(Default, PartialEq, Debug, YaSerialize)] +//! struct DeviceAttributes { +//! #[yaserde(child)] +//! vendor: String, //! } //!``` //! diff --git a/yaserde/tests/option.rs b/yaserde/tests/option.rs index 32bf492..fe59cb0 100644 --- a/yaserde/tests/option.rs +++ b/yaserde/tests/option.rs @@ -15,29 +15,29 @@ fn basic_option_types() { test_for_type!(Option::, None, None); test_for_type!(Option::, Some(true), Some("true")); test_for_type!(Option::, None, None); - test_for_type!(Option::, Some(12 as u8), Some("12")); + test_for_type!(Option::, Some(12_u8), Some("12")); test_for_type!(Option::, None, None); - test_for_type!(Option::, Some(12 as i8), Some("12")); - test_for_type!(Option::, Some(-12 as i8), Some("-12")); + test_for_type!(Option::, Some(12_i8), Some("12")); + test_for_type!(Option::, Some(-12_i8), Some("-12")); test_for_type!(Option::, None, None); - test_for_type!(Option::, Some(12 as u16), Some("12")); + test_for_type!(Option::, Some(12_u16), Some("12")); test_for_type!(Option::, None, None); - test_for_type!(Option::, Some(12 as i16), Some("12")); - test_for_type!(Option::, Some(-12 as i16), Some("-12")); + test_for_type!(Option::, Some(12_i16), Some("12")); + test_for_type!(Option::, Some(-12_i16), Some("-12")); test_for_type!(Option::, None, None); - test_for_type!(Option::, Some(12 as u32), Some("12")); + test_for_type!(Option::, Some(12_u32), Some("12")); test_for_type!(Option::, None, None); - test_for_type!(Option::, Some(12 as i32), Some("12")); - test_for_type!(Option::, Some(-12 as i32), Some("-12")); + test_for_type!(Option::, Some(12_i32), Some("12")); + test_for_type!(Option::, Some(-12_i32), Some("-12")); test_for_type!(Option::, None, None); - test_for_type!(Option::, Some(12 as u64), Some("12")); + test_for_type!(Option::, Some(12_u64), Some("12")); test_for_type!(Option::, None, None); - test_for_type!(Option::, Some(12 as i64), Some("12")); - test_for_type!(Option::, Some(-12 as i64), Some("-12")); + test_for_type!(Option::, Some(12_i64), Some("12")); + test_for_type!(Option::, Some(-12_i64), Some("-12")); test_for_type!(Option::, None, None); - test_for_type!(Option::, Some(-12.5 as f32), Some("-12.5")); + test_for_type!(Option::, Some(-12.5_f32), Some("-12.5")); test_for_type!(Option::, None, None); - test_for_type!(Option::, Some(-12.5 as f64), Some("-12.5")); + test_for_type!(Option::, Some(-12.5_f64), Some("-12.5")); test_for_type!(Option::, None, None); // TODO @@ -50,29 +50,29 @@ fn basic_option_types() { test_for_attribute_type!(Option::, None, None); test_for_attribute_type!(Option::, Some(true), Some("true")); test_for_attribute_type!(Option::, None, None); - test_for_attribute_type!(Option::, Some(12 as u8), Some("12")); + test_for_attribute_type!(Option::, Some(12_u8), Some("12")); test_for_attribute_type!(Option::, None, None); - test_for_attribute_type!(Option::, Some(12 as i8), Some("12")); - test_for_attribute_type!(Option::, Some(-12 as i8), Some("-12")); + test_for_attribute_type!(Option::, Some(12_i8), Some("12")); + test_for_attribute_type!(Option::, Some(-12_i8), Some("-12")); test_for_attribute_type!(Option::, None, None); - test_for_attribute_type!(Option::, Some(12 as u16), Some("12")); + test_for_attribute_type!(Option::, Some(12_u16), Some("12")); test_for_attribute_type!(Option::, None, None); - test_for_attribute_type!(Option::, Some(12 as i16), Some("12")); - test_for_attribute_type!(Option::, Some(-12 as i16), Some("-12")); + test_for_attribute_type!(Option::, Some(12_i16), Some("12")); + test_for_attribute_type!(Option::, Some(-12_i16), Some("-12")); test_for_attribute_type!(Option::, None, None); - test_for_attribute_type!(Option::, Some(12 as u32), Some("12")); + test_for_attribute_type!(Option::, Some(12_u32), Some("12")); test_for_attribute_type!(Option::, None, None); - test_for_attribute_type!(Option::, Some(12 as i32), Some("12")); - test_for_attribute_type!(Option::, Some(-12 as i32), Some("-12")); + test_for_attribute_type!(Option::, Some(12_i32), Some("12")); + test_for_attribute_type!(Option::, Some(-12_i32), Some("-12")); test_for_attribute_type!(Option::, None, None); - test_for_attribute_type!(Option::, Some(12 as u64), Some("12")); + test_for_attribute_type!(Option::, Some(12_u64), Some("12")); test_for_attribute_type!(Option::, None, None); - test_for_attribute_type!(Option::, Some(12 as i64), Some("12")); - test_for_attribute_type!(Option::, Some(-12 as i64), Some("-12")); + test_for_attribute_type!(Option::, Some(12_i64), Some("12")); + test_for_attribute_type!(Option::, Some(-12_i64), Some("-12")); test_for_attribute_type!(Option::, None, None); - test_for_attribute_type!(Option::, Some(-12.5 as f32), Some("-12.5")); + test_for_attribute_type!(Option::, Some(-12.5_f32), Some("-12.5")); test_for_attribute_type!(Option::, None, None); - test_for_attribute_type!(Option::, Some(-12.5 as f64), Some("-12.5")); + test_for_attribute_type!(Option::, Some(-12.5_f64), Some("-12.5")); test_for_attribute_type!(Option::, None, None); } diff --git a/yaserde/tests/skip_if.rs b/yaserde/tests/skip_if.rs index 641e737..de62a7d 100644 --- a/yaserde/tests/skip_if.rs +++ b/yaserde/tests/skip_if.rs @@ -34,7 +34,7 @@ fn skip_serializing_if_for_struct() { } impl XmlStruct { - fn check_string_function(&self, value: &String) -> bool { + fn check_string_function(&self, value: &str) -> bool { value == "something" } @@ -47,7 +47,7 @@ fn skip_serializing_if_for_struct() { } fn check_f32_function(&self, value: &f32) -> bool { - value == &0.0 + (value - 0.0).abs() < f32::EPSILON } } diff --git a/yaserde/tests/types.rs b/yaserde/tests/types.rs index 3b2ec70..db5c82d 100644 --- a/yaserde/tests/types.rs +++ b/yaserde/tests/types.rs @@ -13,37 +13,37 @@ fn ser_type() { test_for_type!(String, "test".to_string(), Some("test")); test_for_type!(bool, true, Some("true")); - test_for_type!(u8, 12 as u8, Some("12")); - test_for_type!(i8, 12 as i8, Some("12")); - test_for_type!(i8, -12 as i8, Some("-12")); - test_for_type!(u16, 12 as u16, Some("12")); - test_for_type!(i16, 12 as i16, Some("12")); - test_for_type!(i16, -12 as i16, Some("-12")); - test_for_type!(u32, 12 as u32, Some("12")); - test_for_type!(i32, 12 as i32, Some("12")); - test_for_type!(i32, -12 as i32, Some("-12")); - test_for_type!(u64, 12 as u64, Some("12")); - test_for_type!(i64, 12 as i64, Some("12")); - test_for_type!(i64, -12 as i64, Some("-12")); - test_for_type!(f32, -12.5 as f32, Some("-12.5")); - test_for_type!(f64, -12.5 as f64, Some("-12.5")); + test_for_type!(u8, 12_u8, Some("12")); + test_for_type!(i8, 12_i8, Some("12")); + test_for_type!(i8, -12_i8, Some("-12")); + test_for_type!(u16, 12_u16, Some("12")); + test_for_type!(i16, 12_i16, Some("12")); + test_for_type!(i16, -12_i16, Some("-12")); + test_for_type!(u32, 12_u32, Some("12")); + test_for_type!(i32, 12_i32, Some("12")); + test_for_type!(i32, -12_i32, Some("-12")); + test_for_type!(u64, 12_u64, Some("12")); + test_for_type!(i64, 12_i64, Some("12")); + test_for_type!(i64, -12_i64, Some("-12")); + test_for_type!(f32, -12.5_f32, Some("-12.5")); + test_for_type!(f64, -12.5_f64, Some("-12.5")); test_for_type!(Vec::, vec![], None); test_for_type!(Vec::, vec!["test".to_string()], Some("test")); test_for_attribute_type!(String, "test".to_string(), Some("test")); test_for_attribute_type!(bool, true, Some("true")); - test_for_attribute_type!(u8, 12 as u8, Some("12")); - test_for_attribute_type!(i8, 12 as i8, Some("12")); - test_for_attribute_type!(i8, -12 as i8, Some("-12")); - test_for_attribute_type!(u16, 12 as u16, Some("12")); - test_for_attribute_type!(i16, 12 as i16, Some("12")); - test_for_attribute_type!(i16, -12 as i16, Some("-12")); - test_for_attribute_type!(u32, 12 as u32, Some("12")); - test_for_attribute_type!(i32, 12 as i32, Some("12")); - test_for_attribute_type!(i32, -12 as i32, Some("-12")); - test_for_attribute_type!(u64, 12 as u64, Some("12")); - test_for_attribute_type!(i64, 12 as i64, Some("12")); - test_for_attribute_type!(i64, -12 as i64, Some("-12")); - test_for_attribute_type!(f32, -12.5 as f32, Some("-12.5")); - test_for_attribute_type!(f64, -12.5 as f64, Some("-12.5")); + test_for_attribute_type!(u8, 12_u8, Some("12")); + test_for_attribute_type!(i8, 12_i8, Some("12")); + test_for_attribute_type!(i8, -12_i8, Some("-12")); + test_for_attribute_type!(u16, 12_u16, Some("12")); + test_for_attribute_type!(i16, 12_i16, Some("12")); + test_for_attribute_type!(i16, -12_i16, Some("-12")); + test_for_attribute_type!(u32, 12_u32, Some("12")); + test_for_attribute_type!(i32, 12_i32, Some("12")); + test_for_attribute_type!(i32, -12_i32, Some("-12")); + test_for_attribute_type!(u64, 12_u64, Some("12")); + test_for_attribute_type!(i64, 12_i64, Some("12")); + test_for_attribute_type!(i64, -12_i64, Some("-12")); + test_for_attribute_type!(f32, -12.5_f32, Some("-12.5")); + test_for_attribute_type!(f64, -12.5_f64, Some("-12.5")); }