test_modifierbuttons.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. from panda3d.core import ModifierButtons
  2. def test_modifierbuttons_empty():
  3. # Tests the initial state of a ModifierButtons object.
  4. btns = ModifierButtons()
  5. assert btns == ModifierButtons(btns)
  6. assert btns != ModifierButtons()
  7. assert btns.matches(ModifierButtons())
  8. assert not btns.is_down("alt")
  9. assert not btns.is_any_down()
  10. assert not btns.has_button("alt")
  11. assert btns.get_prefix() == ""
  12. assert btns.get_num_buttons() == 0
  13. assert len(btns.buttons) == 0
  14. def test_modifierbuttons_cow():
  15. # Tests the copy-on-write mechanism of the button list.
  16. btns1 = ModifierButtons()
  17. btns1.add_button("space")
  18. # Modifying original should not affect copy
  19. btns2 = ModifierButtons(btns1)
  20. assert tuple(btns2.buttons) == tuple(btns1.buttons)
  21. btns1.add_button("enter")
  22. assert tuple(btns1.buttons) == ("space", "enter")
  23. assert tuple(btns2.buttons) == ("space",)
  24. # Modifying copy should not affect original
  25. btns3 = ModifierButtons(btns2)
  26. assert tuple(btns3.buttons) == tuple(btns2.buttons)
  27. btns3.add_button("escape")
  28. assert tuple(btns2.buttons) == ("space",)
  29. assert tuple(btns3.buttons) == ("space", "escape")
  30. def test_modifierbuttons_assign():
  31. # Tests assignment operator.
  32. btns1 = ModifierButtons()
  33. btns1.add_button("space")
  34. btns2 = ModifierButtons()
  35. btns2.assign(btns1)
  36. assert btns1 == btns2
  37. assert tuple(btns1.buttons) == tuple(btns2.buttons)
  38. def test_modifierbuttons_state():
  39. btns = ModifierButtons()
  40. btns.add_button("alt")
  41. btns.add_button("shift")
  42. btns.add_button("control")
  43. assert not btns.is_any_down()
  44. # Not tracked
  45. btns.button_down("enter")
  46. assert not btns.is_any_down()
  47. # Tracked
  48. btns.button_down("shift")
  49. assert btns.is_any_down()
  50. assert not btns.is_down(0)
  51. assert btns.is_down(1)
  52. assert not btns.is_down(2)
  53. btns.button_up("shift")
  54. assert not btns.is_any_down()
  55. assert not btns.is_down(0)
  56. assert not btns.is_down(1)
  57. assert not btns.is_down(2)
  58. btns.button_down("alt")
  59. btns.button_down("shift")
  60. assert btns.is_any_down()
  61. assert btns.is_down(0)
  62. assert btns.is_down(1)
  63. assert not btns.is_down(2)
  64. btns.all_buttons_up()
  65. assert not btns.is_any_down()
  66. assert not btns.is_down(0)
  67. assert not btns.is_down(1)
  68. assert not btns.is_down(2)