test_bitmask.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from panda3d.core import BitMask16, BitMask32, BitMask64
  2. from panda3d.core import DoubleBitMaskNative, QuadBitMaskNative
  3. import pickle
  4. import pytest
  5. double_num_bits = DoubleBitMaskNative.get_max_num_bits()
  6. quad_num_bits = QuadBitMaskNative.get_max_num_bits()
  7. def test_bitmask_allon():
  8. assert BitMask16.all_on().is_all_on()
  9. assert BitMask32.all_on().is_all_on()
  10. assert BitMask64.all_on().is_all_on()
  11. assert DoubleBitMaskNative.all_on().is_all_on()
  12. assert QuadBitMaskNative.all_on().is_all_on()
  13. assert DoubleBitMaskNative((1 << double_num_bits) - 1).is_all_on()
  14. assert QuadBitMaskNative((1 << quad_num_bits) - 1).is_all_on()
  15. def test_bitmask_overflow():
  16. with pytest.raises(OverflowError):
  17. DoubleBitMaskNative(1 << double_num_bits)
  18. with pytest.raises(OverflowError):
  19. QuadBitMaskNative(1 << quad_num_bits)
  20. def test_bitmask_pickle():
  21. assert pickle.loads(pickle.dumps(BitMask16(0), -1)).is_zero()
  22. mask1 = BitMask16(123)
  23. data = pickle.dumps(mask1, -1)
  24. mask2 = pickle.loads(data)
  25. assert mask1 == mask2
  26. assert pickle.loads(pickle.dumps(DoubleBitMaskNative(0), -1)).is_zero()
  27. mask1 = DoubleBitMaskNative(0xffff0001)
  28. data = pickle.dumps(mask1, -1)
  29. mask2 = pickle.loads(data)
  30. assert mask1 == mask2
  31. mask1 = DoubleBitMaskNative(0x7fffffffffffffff)
  32. data = pickle.dumps(mask1, -1)
  33. mask2 = pickle.loads(data)
  34. assert mask1 == mask2
  35. mask1 = DoubleBitMaskNative(1 << (double_num_bits - 1))
  36. data = pickle.dumps(mask1, -1)
  37. mask2 = pickle.loads(data)
  38. assert mask1 == mask2