예제 #1
0
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
예제 #2
0
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
예제 #3
0
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