Skip to content
Merged
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
131 changes: 131 additions & 0 deletions rocketmq-remoting/src/protocol/body/pop_process_queue_info.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,134 @@ impl std::fmt::Display for PopProcessQueueInfo {
)
}
}

#[cfg(test)]
mod tests {
use super::*;

#[test]
fn pop_process_queue_init() {
let queue: PopProcessQueueInfo = PopProcessQueueInfo::new(10, false, 123456789);
assert_eq!(queue.wait_ack_count(), 10);
assert!(!queue.droped());
assert_eq!(queue.last_pop_timestamp(), 123456789);
}

#[test]
fn pop_process_queue_setters() {
let mut queue: PopProcessQueueInfo = PopProcessQueueInfo::new(10, false, 123456789);
queue.set_wait_ack_count(20);
queue.set_droped(true);
queue.set_last_pop_timestamp(987654321);

assert_eq!(queue.wait_ack_count(), 20);
assert!(queue.droped());
assert_eq!(queue.last_pop_timestamp(), 987654321);
}

#[test]
fn pop_process_queue_clone() {
let queue: PopProcessQueueInfo = PopProcessQueueInfo::new(10, false, 123456789);
let cloned = queue;
assert_eq!(cloned.wait_ack_count(), 10);
assert!(!cloned.droped());
assert_eq!(cloned.last_pop_timestamp(), 123456789);
}

#[test]
fn pop_process_queue_display() {
let queue: PopProcessQueueInfo = PopProcessQueueInfo::new(10, false, 123456789);
let display = format!("{}", queue);
assert_eq!(
display,
"PopProcessQueueInfo [wait_ack_count: 10, droped: false, last_pop_timestamp: 123456789]"
);
}

#[test]
fn pop_process_queue_copy() {
let queue: PopProcessQueueInfo = PopProcessQueueInfo::new(10, false, 123456789);
let copied = queue;
assert_eq!(copied.wait_ack_count(), 10);
assert!(!copied.droped());
assert_eq!(copied.last_pop_timestamp(), 123456789);
}
Comment on lines +108 to +116
Copy link

Copilot AI Feb 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The test pop_process_queue_copy is redundant. Since PopProcessQueueInfo derives Copy (line 15), it automatically implements the Copy trait which is implicitly used when assigning let copied = queue. This behavior is already tested by the pop_process_queue_clone test, which verifies that the struct can be copied correctly via the Clone trait. Additionally, Copy types automatically implement Clone, making this test functionally equivalent to the clone test. Consider removing this test to avoid redundancy.

Suggested change
#[test]
fn pop_process_queue_copy() {
let queue: PopProcessQueueInfo = PopProcessQueueInfo::new(10, false, 123456789);
let copied = queue;
assert_eq!(copied.wait_ack_count(), 10);
assert!(!copied.droped());
assert_eq!(copied.last_pop_timestamp(), 123456789);
}

Copilot uses AI. Check for mistakes.

#[test]
fn pop_process_queue_edge_values_init() {
// zero wait_ack_count and zero last_pop_timestamp
let queue_zero: PopProcessQueueInfo = PopProcessQueueInfo::new(0, false, 0);
assert_eq!(queue_zero.wait_ack_count(), 0);
assert!(!queue_zero.droped());
assert_eq!(queue_zero.last_pop_timestamp(), 0);

// negative wait_ack_count
let queue_negative: PopProcessQueueInfo = PopProcessQueueInfo::new(-1, true, 0);
assert_eq!(queue_negative.wait_ack_count(), -1);
assert!(queue_negative.droped());
assert_eq!(queue_negative.last_pop_timestamp(), 0);

// extreme i32 and u64 values
let queue_extreme: PopProcessQueueInfo = PopProcessQueueInfo::new(i32::MAX, false, u64::MAX);
assert_eq!(queue_extreme.wait_ack_count(), i32::MAX);
assert!(!queue_extreme.droped());
assert_eq!(queue_extreme.last_pop_timestamp(), u64::MAX);

let queue_extreme_min: PopProcessQueueInfo = PopProcessQueueInfo::new(i32::MIN, true, u64::MAX);
assert_eq!(queue_extreme_min.wait_ack_count(), i32::MIN);
assert!(queue_extreme_min.droped());
assert_eq!(queue_extreme_min.last_pop_timestamp(), u64::MAX);
}

#[test]
fn pop_process_queue_edge_values_setters() {
let mut queue: PopProcessQueueInfo = PopProcessQueueInfo::new(1, false, 1);

// set to zero values
queue.set_wait_ack_count(0);
queue.set_last_pop_timestamp(0);
assert_eq!(queue.wait_ack_count(), 0);
assert_eq!(queue.last_pop_timestamp(), 0);

// set to negative and extreme values
queue.set_wait_ack_count(-5);
assert_eq!(queue.wait_ack_count(), -5);

queue.set_wait_ack_count(i32::MIN);
queue.set_last_pop_timestamp(u64::MAX);
assert_eq!(queue.wait_ack_count(), i32::MIN);
assert_eq!(queue.last_pop_timestamp(), u64::MAX);

queue.set_wait_ack_count(i32::MAX);
assert_eq!(queue.wait_ack_count(), i32::MAX);
}

#[test]
fn pop_process_queue_edge_values_display() {
let queue_zero: PopProcessQueueInfo = PopProcessQueueInfo::new(0, false, 0);
let display_zero = format!("{}", queue_zero);
assert_eq!(
display_zero,
"PopProcessQueueInfo [wait_ack_count: 0, droped: false, last_pop_timestamp: 0]"
);

let queue_negative: PopProcessQueueInfo = PopProcessQueueInfo::new(-1, true, 0);
let display_negative = format!("{}", queue_negative);
assert_eq!(
display_negative,
"PopProcessQueueInfo [wait_ack_count: -1, droped: true, last_pop_timestamp: 0]"
);

let queue_extreme: PopProcessQueueInfo =
PopProcessQueueInfo::new(i32::MAX, false, u64::MAX);
let display_extreme = format!("{}", queue_extreme);
assert_eq!(
display_extreme,
format!(
"PopProcessQueueInfo [wait_ack_count: {}, droped: false, last_pop_timestamp: {}]",
i32::MAX,
u64::MAX
)
);
}
}
Loading