test_DirectFrame.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. from direct.gui.DirectFrame import DirectFrame
  2. from panda3d.core import NodePath, Texture
  3. def test_frame_empty():
  4. frame = DirectFrame()
  5. assert not frame.hascomponent('text0')
  6. assert not frame.hascomponent('geom0')
  7. assert not frame.hascomponent('image0')
  8. def test_frame_text():
  9. frame = DirectFrame(text="Test")
  10. assert frame.hascomponent('text0')
  11. assert not frame.hascomponent('text1')
  12. assert frame.component('text0').text == "Test"
  13. # Change text
  14. frame.setText("Foo")
  15. assert frame.component('text0').text == "Foo"
  16. # Change text to unicode
  17. frame.setText(u"Foo")
  18. # Clear text
  19. frame.clearText()
  20. assert not frame.hascomponent('text0')
  21. def test_frame_text_states():
  22. frame = DirectFrame(text=("A", "B", "C"), numStates=3)
  23. assert frame.hascomponent('text0')
  24. assert frame.hascomponent('text1')
  25. assert frame.hascomponent('text2')
  26. assert not frame.hascomponent('text3')
  27. assert frame.component('text0').text == "A"
  28. assert frame.component('text1').text == "B"
  29. assert frame.component('text2').text == "C"
  30. # Change text for all states
  31. frame.setText("Foo")
  32. assert frame.component('text0').text == "Foo"
  33. assert frame.component('text1').text == "Foo"
  34. assert frame.component('text2').text == "Foo"
  35. # Change text per state
  36. frame.setText(("1", "2", "3"))
  37. assert frame.component('text0').text == "1"
  38. assert frame.component('text1').text == "2"
  39. assert frame.component('text2').text == "3"
  40. # Changing via list should work too
  41. frame.setText(["1", "2", "3"])
  42. # Clear text
  43. frame.clearText()
  44. assert not frame.hascomponent('text0')
  45. assert not frame.hascomponent('text1')
  46. assert not frame.hascomponent('text2')
  47. def test_frame_geom():
  48. frame = DirectFrame(geom=NodePath("geom-a"))
  49. assert frame.hascomponent('geom0')
  50. assert not frame.hascomponent('geom1')
  51. assert frame.component('geom0').name == "geom-a"
  52. # Change geom
  53. frame.setGeom(NodePath("geom-b"))
  54. assert frame.component('geom0').name == "geom-b"
  55. # Clear geom
  56. frame.clearGeom()
  57. assert not frame.hascomponent('geom0')
  58. def test_frame_geom_states():
  59. frame = DirectFrame(geom=(NodePath("A"), NodePath("B"), NodePath("C")), numStates=3)
  60. assert frame.hascomponent('geom0')
  61. assert frame.hascomponent('geom1')
  62. assert frame.hascomponent('geom2')
  63. assert not frame.hascomponent('geom3')
  64. assert frame.component('geom0').name == "A"
  65. assert frame.component('geom1').name == "B"
  66. assert frame.component('geom2').name == "C"
  67. # Change geom for all states
  68. frame.setGeom(NodePath("Foo"))
  69. assert frame.component('geom0').name == "Foo"
  70. assert frame.component('geom1').name == "Foo"
  71. assert frame.component('geom2').name == "Foo"
  72. # Change geom per state
  73. states = (NodePath("1"), NodePath("2"), NodePath("3"))
  74. frame.setGeom(states)
  75. assert frame.component('geom0').name == "1"
  76. assert frame.component('geom1').name == "2"
  77. assert frame.component('geom2').name == "3"
  78. # Changing via list should work too
  79. frame.setGeom(list(states))
  80. # Clear geom
  81. frame.clearGeom()
  82. assert not frame.hascomponent('geom0')
  83. assert not frame.hascomponent('geom1')
  84. assert not frame.hascomponent('geom2')