in sdk/core/azure_core_amqp/src/fe2o3/messaging/message_source.rs [124:219]
fn message_source_conversion_fe2o3_amqp() {
let fe2o3_source = fe2o3_amqp_types::messaging::Source::builder()
.address("test")
.durable(fe2o3_amqp_types::messaging::TerminusDurability::UnsettledState)
.expiry_policy(fe2o3_amqp_types::messaging::TerminusExpiryPolicy::SessionEnd)
.timeout(95)
.dynamic(false)
.dynamic_node_properties(fe2o3_amqp_types::messaging::LifetimePolicy::DeleteOnClose(
fe2o3_amqp_types::messaging::DeleteOnClose {},
))
.add_lifetime_policy(fe2o3_amqp_types::messaging::DeleteOnClose {})
.distribution_mode(fe2o3_amqp_types::messaging::DistributionMode::Move {})
.add_to_filter(
fe2o3_amqp_types::primitives::Symbol::from("filter_key"),
Some(serde_amqp::described::Described {
descriptor: serde_amqp::descriptor::Descriptor::Name(
fe2o3_amqp_types::primitives::Symbol::from("filter_descriptor"),
),
value: fe2o3_amqp_types::primitives::Value::from("filter_value"),
}),
)
.outcomes(vec![fe2o3_amqp_types::primitives::Symbol::from("outcome")])
.default_outcome(fe2o3_amqp_types::messaging::Outcome::Accepted(
fe2o3_amqp_types::messaging::Accepted {},
))
.capabilities(vec![fe2o3_amqp_types::primitives::Symbol::from(
"capability",
)])
.build();
let amqp_source = AmqpSource::from(fe2o3_source.clone());
let round_trip = fe2o3_amqp_types::messaging::Source::from(amqp_source);
// fe2o3 source does not implement PartialEq
assert_eq!(fe2o3_source.address, round_trip.address);
assert_eq!(fe2o3_source.durable, round_trip.durable);
assert_eq!(fe2o3_source.expiry_policy, round_trip.expiry_policy);
assert_eq!(fe2o3_source.timeout, round_trip.timeout);
assert_eq!(fe2o3_source.dynamic, round_trip.dynamic);
assert_eq!(
fe2o3_source.dynamic_node_properties,
round_trip.dynamic_node_properties
);
assert_eq!(fe2o3_source.filter, round_trip.filter);
assert_eq!(fe2o3_source.outcomes, round_trip.outcomes);
assert_eq!(fe2o3_source.capabilities, round_trip.capabilities);
assert_eq!(
fe2o3_source.distribution_mode.is_some(),
round_trip.distribution_mode.is_some()
);
// DistributionMode is an enum, so we need to match on it and it doesn't implement PartialEq
let original_distribution_mode = fe2o3_source.distribution_mode.unwrap();
let round_trip_distribution_mode = round_trip.distribution_mode.unwrap();
match original_distribution_mode {
fe2o3_amqp_types::messaging::DistributionMode::Move => {
assert!(matches!(
round_trip_distribution_mode,
fe2o3_amqp_types::messaging::DistributionMode::Move
));
}
fe2o3_amqp_types::messaging::DistributionMode::Copy => {
assert!(matches!(
round_trip_distribution_mode,
fe2o3_amqp_types::messaging::DistributionMode::Copy
));
}
}
assert_eq!(
fe2o3_source.default_outcome.is_some(),
round_trip.default_outcome.is_some()
);
if fe2o3_source.default_outcome.is_some() {
let original_default_outcome = fe2o3_source.default_outcome.unwrap();
let round_trip_default_outcome = round_trip.default_outcome.unwrap();
assert_eq!(
original_default_outcome.is_accepted(),
round_trip_default_outcome.is_accepted(),
);
assert_eq!(
original_default_outcome.is_rejected(),
round_trip_default_outcome.is_rejected(),
);
assert_eq!(
original_default_outcome.is_released(),
round_trip_default_outcome.is_released(),
);
assert_eq!(
original_default_outcome.is_modified(),
round_trip_default_outcome.is_modified(),
);
}
}