xref: /cloud-hypervisor/src/test_util.rs (revision 53e9c94e685bedbd1337c145bf4821385d7fe38c)
11f13165fSPhilipp Schuster // Copyright © 2025 Cyberus Technology GmbH
21f13165fSPhilipp Schuster //
31f13165fSPhilipp Schuster // SPDX-License-Identifier: Apache-2.0
41f13165fSPhilipp Schuster //
51f13165fSPhilipp Schuster 
6*53e9c94eSPhilipp Schuster //! Test utilities.
7*53e9c94eSPhilipp Schuster 
81f13165fSPhilipp Schuster use std::cmp::Ordering;
91f13165fSPhilipp Schuster 
101f13165fSPhilipp Schuster use clap::Arg;
111f13165fSPhilipp Schuster 
12*53e9c94eSPhilipp Schuster /// Ensures that all [`Arg`]s are sorted alphabetically.
assert_args_sorted<'a, F: Fn() -> R, R: Iterator<Item = &'a Arg>>(get_base_iter: F)131f13165fSPhilipp Schuster pub fn assert_args_sorted<'a, F: Fn() -> R, R: Iterator<Item = &'a Arg>>(get_base_iter: F) {
141f13165fSPhilipp Schuster     let iter = get_base_iter().zip(get_base_iter().skip(1));
151f13165fSPhilipp Schuster     for (arg, next) in iter {
161f13165fSPhilipp Schuster         assert_ne!(
171f13165fSPhilipp Schuster             arg.get_id().cmp(next.get_id()),
181f13165fSPhilipp Schuster             Ordering::Greater,
191f13165fSPhilipp Schuster             "args not alphabetically sorted: arg={}, next={}",
201f13165fSPhilipp Schuster             arg.get_id(),
211f13165fSPhilipp Schuster             next.get_id()
221f13165fSPhilipp Schuster         );
231f13165fSPhilipp Schuster     }
241f13165fSPhilipp Schuster }
25