@@ -49,3 +49,105 @@ impl Hash for ConsumerData {
49
49
self . unit_mode . hash ( state) ;
50
50
}
51
51
}
52
+
53
+ #[ cfg( test) ]
54
+ mod tests {
55
+ use std:: collections:: HashSet ;
56
+
57
+ use cheetah_string:: CheetahString ;
58
+ use rocketmq_common:: common:: consumer:: consume_from_where:: ConsumeFromWhere ;
59
+
60
+ use super :: * ;
61
+ use crate :: protocol:: heartbeat:: consume_type:: ConsumeType ;
62
+ use crate :: protocol:: heartbeat:: message_model:: MessageModel ;
63
+ use crate :: protocol:: heartbeat:: subscription_data:: SubscriptionData ;
64
+
65
+ #[ test]
66
+ fn consumer_data_default_values ( ) {
67
+ let consumer_data = ConsumerData :: default ( ) ;
68
+ assert_eq ! ( consumer_data. group_name, CheetahString :: new( ) ) ;
69
+ assert_eq ! ( consumer_data. consume_type, ConsumeType :: default ( ) ) ;
70
+ assert_eq ! ( consumer_data. message_model, MessageModel :: default ( ) ) ;
71
+ assert_eq ! (
72
+ consumer_data. consume_from_where,
73
+ ConsumeFromWhere :: default ( )
74
+ ) ;
75
+ assert ! ( consumer_data. subscription_data_set. is_empty( ) ) ;
76
+ assert ! ( !consumer_data. unit_mode) ;
77
+ }
78
+
79
+ #[ test]
80
+ fn consumer_data_equality ( ) {
81
+ let mut subscription_data_set = HashSet :: new ( ) ;
82
+ subscription_data_set. insert ( SubscriptionData :: default ( ) ) ;
83
+
84
+ let consumer_data1 = ConsumerData {
85
+ group_name : CheetahString :: from ( "group1" ) ,
86
+ consume_type : ConsumeType :: default ( ) ,
87
+ message_model : MessageModel :: default ( ) ,
88
+ consume_from_where : ConsumeFromWhere :: default ( ) ,
89
+ subscription_data_set : subscription_data_set. clone ( ) ,
90
+ unit_mode : false ,
91
+ } ;
92
+
93
+ let consumer_data2 = ConsumerData {
94
+ group_name : CheetahString :: from ( "group1" ) ,
95
+ consume_type : ConsumeType :: default ( ) ,
96
+ message_model : MessageModel :: default ( ) ,
97
+ consume_from_where : ConsumeFromWhere :: default ( ) ,
98
+ subscription_data_set,
99
+ unit_mode : false ,
100
+ } ;
101
+
102
+ assert_eq ! ( consumer_data1, consumer_data2) ;
103
+ }
104
+
105
+ #[ test]
106
+ fn consumer_data_inequality ( ) {
107
+ let consumer_data1 = ConsumerData {
108
+ group_name : CheetahString :: from ( "group1" ) ,
109
+ consume_type : ConsumeType :: default ( ) ,
110
+ message_model : MessageModel :: default ( ) ,
111
+ consume_from_where : ConsumeFromWhere :: default ( ) ,
112
+ subscription_data_set : HashSet :: new ( ) ,
113
+ unit_mode : false ,
114
+ } ;
115
+
116
+ let consumer_data2 = ConsumerData {
117
+ group_name : CheetahString :: from ( "group2" ) ,
118
+ consume_type : ConsumeType :: default ( ) ,
119
+ message_model : MessageModel :: default ( ) ,
120
+ consume_from_where : ConsumeFromWhere :: default ( ) ,
121
+ subscription_data_set : HashSet :: new ( ) ,
122
+ unit_mode : false ,
123
+ } ;
124
+
125
+ assert_ne ! ( consumer_data1, consumer_data2) ;
126
+ }
127
+
128
+ #[ test]
129
+ fn consumer_data_hash ( ) {
130
+ use std:: collections:: hash_map:: DefaultHasher ;
131
+ use std:: hash:: Hash ;
132
+ use std:: hash:: Hasher ;
133
+
134
+ let consumer_data = ConsumerData {
135
+ group_name : CheetahString :: from ( "group1" ) ,
136
+ consume_type : ConsumeType :: default ( ) ,
137
+ message_model : MessageModel :: default ( ) ,
138
+ consume_from_where : ConsumeFromWhere :: default ( ) ,
139
+ subscription_data_set : HashSet :: new ( ) ,
140
+ unit_mode : false ,
141
+ } ;
142
+
143
+ let mut hasher = DefaultHasher :: new ( ) ;
144
+ consumer_data. hash ( & mut hasher) ;
145
+ let hash1 = hasher. finish ( ) ;
146
+
147
+ let mut hasher = DefaultHasher :: new ( ) ;
148
+ consumer_data. hash ( & mut hasher) ;
149
+ let hash2 = hasher. finish ( ) ;
150
+
151
+ assert_eq ! ( hash1, hash2) ;
152
+ }
153
+ }
0 commit comments