asterix_parser 0.1.1

Playground do Protocolo ASTERIX
Documentation
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 exp = 8 - i;
            let mask = 2_i32.pow(exp) as u8;
            let is_bit_set = value & mask != 0 ;*/
            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);
    }
}