mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-02 01:44:06 -04:00
parent
2c42cfcc1a
commit
4d9bfe76f4
@ -1,10 +1,211 @@
|
|||||||
from direct.gui.DirectGuiBase import DirectGuiWidget
|
from direct.gui.DirectGuiBase import DirectGuiBase, DirectGuiWidget, toggleGuiGridSnap, setGuiGridSpacing
|
||||||
|
from direct.gui.OnscreenText import OnscreenText
|
||||||
|
from direct.gui import DirectGuiGlobals as DGG
|
||||||
from direct.showbase.ShowBase import ShowBase
|
from direct.showbase.ShowBase import ShowBase
|
||||||
from direct.showbase import ShowBaseGlobal
|
from direct.showbase import ShowBaseGlobal
|
||||||
|
from direct.showbase.MessengerGlobal import messenger
|
||||||
from panda3d import core
|
from panda3d import core
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
def test_create_DirectGuiBase():
|
||||||
|
baseitem = DirectGuiBase()
|
||||||
|
|
||||||
|
def test_defineoptions():
|
||||||
|
baseitem = DirectGuiBase()
|
||||||
|
testoptiondefs = (('test',0,None),)
|
||||||
|
baseitem.defineoptions({}, testoptiondefs)
|
||||||
|
assert baseitem['test'] == 0
|
||||||
|
|
||||||
|
def test_addoptions():
|
||||||
|
baseitem = DirectGuiBase()
|
||||||
|
testoptiondefs = (('test',0,None),)
|
||||||
|
|
||||||
|
# Those two will usually be set in the defineoptions function
|
||||||
|
baseitem._optionInfo = {}
|
||||||
|
baseitem._constructorKeywords = {}
|
||||||
|
|
||||||
|
baseitem.addoptions(testoptiondefs, {})
|
||||||
|
assert baseitem['test'] == 0
|
||||||
|
|
||||||
|
def test_initialiseoptions():
|
||||||
|
baseitem = DirectGuiBase()
|
||||||
|
|
||||||
|
class testWidget(DirectGuiBase):
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
tw = testWidget()
|
||||||
|
baseitem.initialiseoptions(tw)
|
||||||
|
|
||||||
|
testoptiondefs = (('test',0,None),)
|
||||||
|
tw.defineoptions({}, testoptiondefs)
|
||||||
|
baseitem.initialiseoptions(tw)
|
||||||
|
|
||||||
|
assert tw['test'] == 0
|
||||||
|
|
||||||
|
def test_postInitialiseFunc():
|
||||||
|
baseitem = DirectGuiBase()
|
||||||
|
|
||||||
|
def func_a():
|
||||||
|
global test_value_a
|
||||||
|
test_value_a = 1
|
||||||
|
def func_b():
|
||||||
|
global test_value_b
|
||||||
|
test_value_b = 1
|
||||||
|
|
||||||
|
baseitem.postInitialiseFuncList.append(func_a)
|
||||||
|
baseitem.postInitialiseFuncList.append(func_b)
|
||||||
|
|
||||||
|
baseitem.postInitialiseFunc()
|
||||||
|
|
||||||
|
global test_value_a
|
||||||
|
assert test_value_a == 1
|
||||||
|
|
||||||
|
global test_value_b
|
||||||
|
assert test_value_b == 1
|
||||||
|
|
||||||
|
def test_isinitoption():
|
||||||
|
baseitem = DirectGuiBase()
|
||||||
|
testoptiondefs = (('test-true',0,DGG.INITOPT),('test-false',0,None))
|
||||||
|
baseitem.defineoptions({}, testoptiondefs)
|
||||||
|
assert baseitem.isinitoption('test-true') == True
|
||||||
|
assert baseitem.isinitoption('test-false') == False
|
||||||
|
|
||||||
|
def test_options():
|
||||||
|
baseitem = DirectGuiBase()
|
||||||
|
testoptiondefs = (('test-1',0,DGG.INITOPT),('test-2',0,None),)
|
||||||
|
baseitem.defineoptions({}, testoptiondefs)
|
||||||
|
assert len(baseitem.options()) == 2
|
||||||
|
|
||||||
|
def test_get_options():
|
||||||
|
baseitem = DirectGuiBase()
|
||||||
|
testoptiondefs = (('test-1',0,None),)
|
||||||
|
baseitem.defineoptions({}, testoptiondefs)
|
||||||
|
|
||||||
|
# Using the configure function
|
||||||
|
# check if configuration have been set correctly
|
||||||
|
assert baseitem.configure() == {'test-1': ('test-1', 0, 0),}
|
||||||
|
# check for specific configurations
|
||||||
|
assert baseitem.configure('test-1') == ('test-1', 0, 0)
|
||||||
|
|
||||||
|
# using index style references __getItem__ and cget
|
||||||
|
assert baseitem['test-1'] == 0
|
||||||
|
assert baseitem.cget('test-1') == 0
|
||||||
|
|
||||||
|
def test_set_options():
|
||||||
|
baseitem = DirectGuiBase()
|
||||||
|
|
||||||
|
testoptiondefs = (('test-1',0,DGG.INITOPT),('test-2',0,None))
|
||||||
|
baseitem.defineoptions({}, testoptiondefs)
|
||||||
|
|
||||||
|
# try to set a value of an initopt option (shouldn't be possible)
|
||||||
|
baseitem.configure('test-1', **{'test-1': 1})
|
||||||
|
# check it's value. It shouldn't have changed
|
||||||
|
assert baseitem['test-1'] == 0
|
||||||
|
|
||||||
|
baseitem['test-1'] = 1
|
||||||
|
# check it's value. It shouldn't have changed
|
||||||
|
assert baseitem['test-1'] == 0
|
||||||
|
|
||||||
|
# try changing using the configure function. As test-2 isn't an
|
||||||
|
# initopt option, this should work fine
|
||||||
|
baseitem.configure('test-2', **{'test-2': 2})
|
||||||
|
# check it's value. It should be 2 now
|
||||||
|
assert baseitem['test-2'] == 2
|
||||||
|
|
||||||
|
# try changing using index style referencing
|
||||||
|
baseitem['test-2'] = 1
|
||||||
|
assert baseitem['test-2'] == 1
|
||||||
|
|
||||||
|
def test_component_handling():
|
||||||
|
baseitem = DirectGuiBase()
|
||||||
|
testoptiondefs = (('test-1',0,None),)
|
||||||
|
baseitem.defineoptions({}, testoptiondefs)
|
||||||
|
|
||||||
|
assert len(baseitem.components()) == 0
|
||||||
|
|
||||||
|
baseitem.createcomponent(
|
||||||
|
'componentName', # componentName
|
||||||
|
(), # componentAliases
|
||||||
|
'componentGroup', # componentGroup
|
||||||
|
OnscreenText, # widgetClass
|
||||||
|
(), # *widgetArgs
|
||||||
|
text = 'Test', # **kw
|
||||||
|
parent = core.NodePath()
|
||||||
|
)
|
||||||
|
|
||||||
|
# check if we have exactly one component now
|
||||||
|
assert len(baseitem.components()) == 1
|
||||||
|
# check if we have a component named like the one we just created
|
||||||
|
assert baseitem.hascomponent('componentName')
|
||||||
|
|
||||||
|
# get our new component
|
||||||
|
component = baseitem.component('componentName')
|
||||||
|
# check some of its values
|
||||||
|
assert component.text == 'Test'
|
||||||
|
|
||||||
|
# destroy our recently created component
|
||||||
|
baseitem.destroycomponent('componentName')
|
||||||
|
# check if it really is gone
|
||||||
|
assert baseitem.hascomponent('componentName') == False
|
||||||
|
|
||||||
|
def test_destroy():
|
||||||
|
baseitem = DirectGuiBase()
|
||||||
|
testoptiondefs = (('test-1',0,None),)
|
||||||
|
baseitem.defineoptions({}, testoptiondefs)
|
||||||
|
baseitem.destroy()
|
||||||
|
# check if things got correctly removed
|
||||||
|
assert not hasattr(baseitem, '_optionInfo')
|
||||||
|
assert not hasattr(baseitem, '__componentInfo')
|
||||||
|
assert not hasattr(baseitem, 'postInitialiseFuncList')
|
||||||
|
|
||||||
|
def test_bindings():
|
||||||
|
baseitem = DirectGuiBase()
|
||||||
|
|
||||||
|
# Our test function and variable to check
|
||||||
|
global commandCalled
|
||||||
|
commandCalled = False
|
||||||
|
def command(**kw):
|
||||||
|
global commandCalled
|
||||||
|
commandCalled = True
|
||||||
|
assert True
|
||||||
|
|
||||||
|
# Bind an event to our item
|
||||||
|
baseitem.bind(DGG.B1CLICK, command)
|
||||||
|
|
||||||
|
# The function should be called now. Note that the guiId will be
|
||||||
|
# automatically appended by the bind command!
|
||||||
|
messenger.send(DGG.B1CLICK + baseitem.guiId)
|
||||||
|
assert commandCalled
|
||||||
|
|
||||||
|
# Try to unbind the event again
|
||||||
|
baseitem.unbind(DGG.B1CLICK)
|
||||||
|
|
||||||
|
# Now it shouldn't be called anymore
|
||||||
|
commandCalled = False
|
||||||
|
messenger.send(DGG.B1CLICK + baseitem.guiId)
|
||||||
|
assert not commandCalled
|
||||||
|
|
||||||
|
def test_toggle_snap():
|
||||||
|
try:
|
||||||
|
DirectGuiWidget.snapToGrid = 0
|
||||||
|
item = DirectGuiWidget()
|
||||||
|
assert item.snapToGrid == 0
|
||||||
|
toggleGuiGridSnap()
|
||||||
|
assert item.snapToGrid == 1
|
||||||
|
finally:
|
||||||
|
DirectGuiWidget.snapToGrid = 0
|
||||||
|
|
||||||
|
def test_toggle_spacing():
|
||||||
|
try:
|
||||||
|
DirectGuiWidget.gridSpacing = 0
|
||||||
|
item = DirectGuiWidget()
|
||||||
|
setGuiGridSpacing(5)
|
||||||
|
assert item.gridSpacing == 5
|
||||||
|
finally:
|
||||||
|
DirectGuiWidget.gridSpacing = 0.05
|
||||||
|
|
||||||
@pytest.mark.skipif(not ShowBaseGlobal.__dev__, reason="requires want-dev")
|
@pytest.mark.skipif(not ShowBaseGlobal.__dev__, reason="requires want-dev")
|
||||||
def test_track_gui_items():
|
def test_track_gui_items():
|
||||||
page = core.load_prc_file_data("", "track-gui-items true")
|
page = core.load_prc_file_data("", "track-gui-items true")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user