From 3ce974f36e6d073adc81f7378fc0c4923e0c8676 Mon Sep 17 00:00:00 2001 From: mxsm Date: Tue, 26 Nov 2024 04:46:54 +0000 Subject: [PATCH] =?UTF-8?q?[ISSUE=20#1328]=F0=9F=A7=AAAdd=20test=20for=20C?= =?UTF-8?q?onsumerData?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/protocol/heartbeat/consumer_data.rs | 102 ++++++++++++++++++ 1 file changed, 102 insertions(+) diff --git a/rocketmq-remoting/src/protocol/heartbeat/consumer_data.rs b/rocketmq-remoting/src/protocol/heartbeat/consumer_data.rs index 2ea4754d..49159cab 100644 --- a/rocketmq-remoting/src/protocol/heartbeat/consumer_data.rs +++ b/rocketmq-remoting/src/protocol/heartbeat/consumer_data.rs @@ -49,3 +49,105 @@ impl Hash for ConsumerData { self.unit_mode.hash(state); } } + +#[cfg(test)] +mod tests { + use std::collections::HashSet; + + use cheetah_string::CheetahString; + use rocketmq_common::common::consumer::consume_from_where::ConsumeFromWhere; + + use super::*; + use crate::protocol::heartbeat::consume_type::ConsumeType; + use crate::protocol::heartbeat::message_model::MessageModel; + use crate::protocol::heartbeat::subscription_data::SubscriptionData; + + #[test] + fn consumer_data_default_values() { + let consumer_data = ConsumerData::default(); + assert_eq!(consumer_data.group_name, CheetahString::new()); + assert_eq!(consumer_data.consume_type, ConsumeType::default()); + assert_eq!(consumer_data.message_model, MessageModel::default()); + assert_eq!( + consumer_data.consume_from_where, + ConsumeFromWhere::default() + ); + assert!(consumer_data.subscription_data_set.is_empty()); + assert!(!consumer_data.unit_mode); + } + + #[test] + fn consumer_data_equality() { + let mut subscription_data_set = HashSet::new(); + subscription_data_set.insert(SubscriptionData::default()); + + let consumer_data1 = ConsumerData { + group_name: CheetahString::from("group1"), + consume_type: ConsumeType::default(), + message_model: MessageModel::default(), + consume_from_where: ConsumeFromWhere::default(), + subscription_data_set: subscription_data_set.clone(), + unit_mode: false, + }; + + let consumer_data2 = ConsumerData { + group_name: CheetahString::from("group1"), + consume_type: ConsumeType::default(), + message_model: MessageModel::default(), + consume_from_where: ConsumeFromWhere::default(), + subscription_data_set, + unit_mode: false, + }; + + assert_eq!(consumer_data1, consumer_data2); + } + + #[test] + fn consumer_data_inequality() { + let consumer_data1 = ConsumerData { + group_name: CheetahString::from("group1"), + consume_type: ConsumeType::default(), + message_model: MessageModel::default(), + consume_from_where: ConsumeFromWhere::default(), + subscription_data_set: HashSet::new(), + unit_mode: false, + }; + + let consumer_data2 = ConsumerData { + group_name: CheetahString::from("group2"), + consume_type: ConsumeType::default(), + message_model: MessageModel::default(), + consume_from_where: ConsumeFromWhere::default(), + subscription_data_set: HashSet::new(), + unit_mode: false, + }; + + assert_ne!(consumer_data1, consumer_data2); + } + + #[test] + fn consumer_data_hash() { + use std::collections::hash_map::DefaultHasher; + use std::hash::Hash; + use std::hash::Hasher; + + let consumer_data = ConsumerData { + group_name: CheetahString::from("group1"), + consume_type: ConsumeType::default(), + message_model: MessageModel::default(), + consume_from_where: ConsumeFromWhere::default(), + subscription_data_set: HashSet::new(), + unit_mode: false, + }; + + let mut hasher = DefaultHasher::new(); + consumer_data.hash(&mut hasher); + let hash1 = hasher.finish(); + + let mut hasher = DefaultHasher::new(); + consumer_data.hash(&mut hasher); + let hash2 = hasher.finish(); + + assert_eq!(hash1, hash2); + } +}