use std::collections::BTreeMap;
fn is_bit_n_set(octet:u8, bit_number: u8) -> bool {
let exp = 8 - bit_number;
let mask = 2_i32.pow(exp as u32) as u8;
let is_bit_set = octet & mask != 0 ;
is_bit_set
}
#[test]
pub(crate) fn test_bit_value() {
let values = [ 0x01 as u8, 0x02, 0x03, 0x04, 0x0f, 0x1f, 0xff];
println!("Value - Bits");
println!("_____ - 87654321");
for value in values {
print!(" {:02x}", value);
let mut bits = String::new();
for i in 1..9 {
let is_bit_set = is_bit_n_set(value, i);
let bit_value = if is_bit_set { '1' } else { '0' };
bits.push(bit_value);
}
println!(" - {}", &bits);
assert_eq!(u8::from_str_radix(&bits.as_str(), 2), Ok(value));
}
}
#[test]
pub(crate) fn test_extend_map() {
let mut map = BTreeMap::<String, Vec<i32>>::new();
map.insert("A".to_owned(), vec![1, 2, 3]);
map.insert("D".to_owned(), vec![4, 5]);
map.insert("F".to_owned(), vec![6, 7, 8, 9]);
let mut map1 = BTreeMap::<String, Vec<i32>>::new();
map1.insert("B".to_owned(), vec![20, 22, 23]);
map1.insert("C".to_owned(), vec![34, 35]);
map1.insert("G".to_owned(), vec![61, 71, 81, 91]);
println!("Map before extend");
for x in map.iter() {
println!("Key: {}, Value: {:?}", x.0, x.1);
}
map.extend(map1.clone().into_iter());
println!();
println!("Map after extend");
for x in map.iter() {
println!("Key: {}, Value: {:?}", x.0, x.1);
}
}