multitype 0.21.1

Arithmetic type traits.
Documentation
// Copyright 2025-2026 Gabriel Bjørnager Jensen.
//
// SPDX: MIT OR Apache-2.0

#![cfg(test)]

use multitype::{Signed, Unsigned};

#[test]
fn test_bit_width() {
	assert_eq!(Unsigned::bit_width(00_u8), 0);
	assert_eq!(Unsigned::bit_width(01_u8), 1);
	assert_eq!(Unsigned::bit_width(02_u8), 2);
	assert_eq!(Unsigned::bit_width(03_u8), 2);
	assert_eq!(Unsigned::bit_width(04_u8), 3);
	assert_eq!(Unsigned::bit_width(05_u8), 3);
	assert_eq!(Unsigned::bit_width(06_u8), 3);
	assert_eq!(Unsigned::bit_width(07_u8), 3);
	assert_eq!(Unsigned::bit_width(08_u8), 4);
	assert_eq!(Unsigned::bit_width(09_u8), 4);
	assert_eq!(Unsigned::bit_width(10_u8), 4);
	assert_eq!(Unsigned::bit_width(11_u8), 4);
	assert_eq!(Unsigned::bit_width(12_u8), 4);
	assert_eq!(Unsigned::bit_width(13_u8), 4);
	assert_eq!(Unsigned::bit_width(14_u8), 4);
	assert_eq!(Unsigned::bit_width(15_u8), 4);
}

#[test]
fn test_cast_signed() {
	fn test<T: Unsigned<Signed: Default>>() {
		let _: T = T::Signed::default().cast_unsigned();
	}

	test::<u8>();
	test::<u16>();
	test::<u32>();
	test::<u64>();
	test::<u128>();
	test::<usize>();
}