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