From 61a276f49a7696ee2794739fb966ae02bdead0a3 Mon Sep 17 00:00:00 2001 From: rdb Date: Wed, 28 Aug 2019 11:03:56 +0200 Subject: [PATCH] tests: add some ModifierButtons unit tests --- tests/putil/test_modifierbuttons.py | 35 +++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 tests/putil/test_modifierbuttons.py diff --git a/tests/putil/test_modifierbuttons.py b/tests/putil/test_modifierbuttons.py new file mode 100644 index 0000000000..289966d1df --- /dev/null +++ b/tests/putil/test_modifierbuttons.py @@ -0,0 +1,35 @@ +from panda3d.core import ModifierButtons + + +def test_modifierbuttons_empty(): + # Tests the initial state of a ModifierButtons object. + btns = ModifierButtons() + assert btns == ModifierButtons(btns) + assert btns != ModifierButtons() + assert btns.matches(ModifierButtons()) + assert not btns.is_down("alt") + assert not btns.is_any_down() + assert not btns.has_button("alt") + assert btns.get_prefix() == "" + assert btns.get_num_buttons() == 0 + assert len(btns.buttons) == 0 + + +def test_modifierbuttons_cow(): + # Tests the copy-on-write mechanism of the button list. + btns1 = ModifierButtons() + btns1.add_button("space") + + # Modifying original should not affect copy + btns2 = ModifierButtons(btns1) + assert tuple(btns2.buttons) == tuple(btns1.buttons) + btns1.add_button("enter") + assert tuple(btns1.buttons) == ("space", "enter") + assert tuple(btns2.buttons) == ("space",) + + # Modifying copy should not affect original + btns3 = ModifierButtons(btns2) + assert tuple(btns3.buttons) == tuple(btns2.buttons) + btns3.add_button("escape") + assert tuple(btns2.buttons) == ("space",) + assert tuple(btns3.buttons) == ("space", "escape")