extern crate serde;
#[macro_use]
extern crate serde_derive;
extern crate rapt;
#[macro_use]
extern crate rapt_derive;
extern crate rmp_serde as serde_msgpack;
#[macro_use]
extern crate assert_matches;
use rapt::*;
use serde::Serialize;
#[derive(Serialize, Default)]
struct Datapoint {
value: u32,
}
#[derive(Instruments, Default)]
struct TestInstruments<L: Listener> {
dp: Instrument<Datapoint, L>,
#[rapt(name = "info")]
dp1: Instrument<Datapoint, L>,
}
#[test]
fn reading_field_name() {
let i = TestInstruments::<()>::default();
let mut ser = serde_msgpack::Serializer::new_named(Vec::with_capacity(128)) ;
let res = i.serialize_reading("dp", &mut ser);
assert!(res.is_ok());
let v = ser.into_inner();
assert!(!v.is_empty());
}
#[test]
fn missing_name() {
let i = TestInstruments::<()>::default();
let mut ser = serde_msgpack::Serializer::new_named(Vec::with_capacity(128)) ;
let res = i.serialize_reading("missing_name", &mut ser);
assert!(res.is_err());
assert_matches!(res.unwrap_err(), ReadError::NotFound);
}
#[test]
fn name_attribute() {
let i = TestInstruments::<()>::default();
let mut ser = serde_msgpack::Serializer::new_named(Vec::with_capacity(128)) ;
let res = i.serialize_reading("info", &mut ser);
assert!(res.is_ok());
let v = ser.into_inner();
assert!(!v.is_empty());
}
#[test]
fn names() {
let i = TestInstruments::<()>::default();
assert_eq!(vec!["dp", "info"], i.instrument_names());
}