def test_or(): x = Fxp(None, True, 8, 4) xu = Fxp(None, False, 8, 4) y = Fxp(None, True, 8, 4) yu = Fxp(None, False, 8, 4) val_str = '00110101' mks_str = '11110000' or_str = '11110101' x('0b' + val_str) xu('0b' + val_str) y('0b' + mks_str) yu('0b' + mks_str) assert (x | y).bin() == or_str assert (x | yu).bin() == or_str assert (xu | y).bin() == or_str assert (xu | yu).bin() == or_str assert (x | utils.str2num('0b' + mks_str)).bin() == or_str assert (xu | utils.str2num('0b' + mks_str)).bin() == or_str assert (utils.str2num('0b' + mks_str) | x).bin() == or_str assert (utils.str2num('0b' + mks_str) | xu).bin() == or_str val_str = '10101100' mks_str = '11001100' or_str = '11101100' x('0b' + val_str) xu('0b' + val_str) y('0b' + mks_str) yu('0b' + mks_str) assert (x | y).bin() == or_str assert (x | yu).bin() == or_str assert (xu | y).bin() == or_str assert (xu | yu).bin() == or_str assert (x | utils.str2num('0b' + mks_str)).bin() == or_str assert (xu | utils.str2num('0b' + mks_str)).bin() == or_str assert (utils.str2num('0b' + mks_str) | x).bin() == or_str assert (utils.str2num('0b' + mks_str) | xu).bin() == or_str
def test_xor(): x = Fxp(None, True, 8, 4) xu = Fxp(None, False, 8, 4) y = Fxp(None, True, 8, 4) yu = Fxp(None, False, 8, 4) val_str = '00110101' mks_str = '11110000' xor_str = '11000101' x('0b' + val_str) xu('0b' + val_str) y('0b' + mks_str) yu('0b' + mks_str) assert (x ^ y).bin() == xor_str assert (x ^ yu).bin() == xor_str assert (xu ^ y).bin() == xor_str assert (xu ^ yu).bin() == xor_str assert (x ^ utils.str2num('0b' + mks_str)).bin() == xor_str assert (xu ^ utils.str2num('0b' + mks_str)).bin() == xor_str assert (utils.str2num('0b' + mks_str) ^ x).bin() == xor_str assert (utils.str2num('0b' + mks_str) ^ xu).bin() == xor_str val_str = '10101100' mks_str = '11001100' xor_str = '01100000' x('0b' + val_str) xu('0b' + val_str) y('0b' + mks_str) yu('0b' + mks_str) assert (x ^ y).bin() == xor_str assert (x ^ yu).bin() == xor_str assert (xu ^ y).bin() == xor_str assert (xu ^ yu).bin() == xor_str assert (x ^ utils.str2num('0b' + mks_str)).bin() == xor_str assert (xu ^ utils.str2num('0b' + mks_str)).bin() == xor_str assert (utils.str2num('0b' + mks_str) ^ x).bin() == xor_str assert (utils.str2num('0b' + mks_str) ^ xu).bin() == xor_str
def test_and(): x = Fxp(None, True, 8, 4) xu = Fxp(None, False, 8, 4) y = Fxp(None, True, 8, 4) yu = Fxp(None, False, 8, 4) val_str = '00110101' mks_str = '11110000' and_str = '00110000' x('0b' + val_str) xu('0b' + val_str) y('0b' + mks_str) yu('0b' + mks_str) assert (x & y).bin() == and_str assert (x & yu).bin() == and_str assert (xu & y).bin() == and_str assert (xu & yu).bin() == and_str assert (x & utils.str2num('0b' + mks_str)).bin() == and_str assert (xu & utils.str2num('0b' + mks_str)).bin() == and_str assert (utils.str2num('0b' + mks_str) & x).bin() == and_str assert (utils.str2num('0b' + mks_str) & xu).bin() == and_str val_str = '10101100' mks_str = '11001100' and_str = '10001100' x('0b' + val_str) xu('0b' + val_str) y('0b' + mks_str) yu('0b' + mks_str) assert (x & y).bin() == and_str assert (x & yu).bin() == and_str assert (xu & y).bin() == and_str assert (xu & yu).bin() == and_str assert (x & utils.str2num('0b' + mks_str)).bin() == and_str assert (xu & utils.str2num('0b' + mks_str)).bin() == and_str assert (utils.str2num('0b' + mks_str) & x).bin() == and_str assert (utils.str2num('0b' + mks_str) & xu).bin() == and_str