Allocate dc_kml_t in a rusty way

This commit is contained in:
Alexander Krotov
2019-07-24 23:37:56 +03:00
committed by Floris Bruynooghe
parent b0ef825e67
commit ec6cc5c355
4 changed files with 53 additions and 47 deletions

View File

@@ -837,34 +837,31 @@ fn test_dc_kml_parse() {
b"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<kml xmlns=\"http://www.opengis.net/kml/2.2\">\n<Document addr=\"user@example.org\">\n<Placemark><Timestamp><when>2019-03-06T21:09:57Z</when></Timestamp><Point><coordinates accuracy=\"32.000000\">9.423110,53.790302</coordinates></Point></Placemark>\n<PlaceMARK>\n<Timestamp><WHEN > \n\t2018-12-13T22:11:12Z\t</wHeN></Timestamp><Point><coordinates aCCuracy=\"2.500000\"> 19.423110 \t , \n 63.790302\n </coordinates></Point></Placemark>\n</Document>\n</kml>\x00"
as *const u8 as *const libc::c_char;
let kml: *mut dc_kml_t = dc_kml_parse(&context.ctx, xml, strlen(xml));
let mut kml = dc_kml_parse(&context.ctx, xml, strlen(xml));
assert!(!(*kml).addr.is_null());
assert_eq!(
as_str((*kml).addr as *const libc::c_char),
"user@example.org",
);
assert!(!kml.addr.is_null());
assert_eq!(as_str(kml.addr as *const libc::c_char), "user@example.org",);
assert_eq!(dc_array_get_cnt((*kml).locations), 2);
assert_eq!(dc_array_get_cnt(kml.locations), 2);
assert!(dc_array_get_latitude((*kml).locations, 0) > 53.6f64);
assert!(dc_array_get_latitude((*kml).locations, 0) < 53.8f64);
assert!(dc_array_get_longitude((*kml).locations, 0) > 9.3f64);
assert!(dc_array_get_longitude((*kml).locations, 0) < 9.5f64);
assert!(dc_array_get_accuracy((*kml).locations, 0) > 31.9f64);
assert!(dc_array_get_accuracy((*kml).locations, 0) < 32.1f64);
assert_eq!(dc_array_get_timestamp((*kml).locations, 0), 1551906597);
assert!(dc_array_get_latitude(kml.locations, 0) > 53.6f64);
assert!(dc_array_get_latitude(kml.locations, 0) < 53.8f64);
assert!(dc_array_get_longitude(kml.locations, 0) > 9.3f64);
assert!(dc_array_get_longitude(kml.locations, 0) < 9.5f64);
assert!(dc_array_get_accuracy(kml.locations, 0) > 31.9f64);
assert!(dc_array_get_accuracy(kml.locations, 0) < 32.1f64);
assert_eq!(dc_array_get_timestamp(kml.locations, 0), 1551906597);
assert!(dc_array_get_latitude((*kml).locations, 1) > 63.6f64);
assert!(dc_array_get_latitude((*kml).locations, 1) < 63.8f64);
assert!(dc_array_get_longitude((*kml).locations, 1) > 19.3f64);
assert!(dc_array_get_longitude((*kml).locations, 1) < 19.5f64);
assert!(dc_array_get_accuracy((*kml).locations, 1) > 2.4f64);
assert!(dc_array_get_accuracy((*kml).locations, 1) < 2.6f64);
assert!(dc_array_get_latitude(kml.locations, 1) > 63.6f64);
assert!(dc_array_get_latitude(kml.locations, 1) < 63.8f64);
assert!(dc_array_get_longitude(kml.locations, 1) > 19.3f64);
assert!(dc_array_get_longitude(kml.locations, 1) < 19.5f64);
assert!(dc_array_get_accuracy(kml.locations, 1) > 2.4f64);
assert!(dc_array_get_accuracy(kml.locations, 1) < 2.6f64);
assert_eq!(dc_array_get_timestamp((*kml).locations, 1), 1544739072);
assert_eq!(dc_array_get_timestamp(kml.locations, 1), 1544739072);
dc_kml_unref(kml);
dc_kml_unref(&mut kml);
}
}