BPY IDProp tests: Add basic tests for 'UI data' system.
This are not complete by far, mainly here to illustrate the issue reported in #122843 (mismatch returned value for 'enum' idprops).
This commit is contained in:
parent
3089ac97b1
commit
65f68fe7fe
@ -4,7 +4,9 @@
|
|||||||
|
|
||||||
# ./blender.bin --background --python tests/python/bl_pyapi_idprop.py -- --verbose
|
# ./blender.bin --background --python tests/python/bl_pyapi_idprop.py -- --verbose
|
||||||
import bpy
|
import bpy
|
||||||
|
import rna_prop_ui
|
||||||
import idprop
|
import idprop
|
||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
from array import array
|
from array import array
|
||||||
|
|
||||||
@ -200,6 +202,58 @@ class TestIdPropertyCreation(TestHelper, unittest.TestCase):
|
|||||||
self.id[self.key_id] = self
|
self.id[self.key_id] = self
|
||||||
|
|
||||||
|
|
||||||
|
class TestIdPropertyUIData(TestHelper, unittest.TestCase):
|
||||||
|
# Default testing idprop key identifier.
|
||||||
|
key_id = "a"
|
||||||
|
|
||||||
|
def test_int(self):
|
||||||
|
value = 2
|
||||||
|
rna_prop_ui.rna_idprop_ui_create(self.id, self.key_id, default=value)
|
||||||
|
self.assertEqual(self.id[self.key_id], value)
|
||||||
|
self.assertTrue(isinstance(self.id[self.key_id], int))
|
||||||
|
self.assertEqual(self.id[self.key_id],
|
||||||
|
self.id.path_resolve('["%s"]' % bpy.utils.escape_identifier(self.key_id)))
|
||||||
|
|
||||||
|
def test_double(self):
|
||||||
|
value = 2.5
|
||||||
|
rna_prop_ui.rna_idprop_ui_create(self.id, self.key_id, default=value)
|
||||||
|
self.assertEqual(self.id[self.key_id], value)
|
||||||
|
self.assertTrue(isinstance(self.id[self.key_id], float))
|
||||||
|
self.assertEqual(self.id[self.key_id],
|
||||||
|
self.id.path_resolve('["%s"]' % bpy.utils.escape_identifier(self.key_id)))
|
||||||
|
|
||||||
|
def test_unicode(self):
|
||||||
|
value = "Hello World"
|
||||||
|
rna_prop_ui.rna_idprop_ui_create(self.id, self.key_id, default=value)
|
||||||
|
self.assertEqual(self.id[self.key_id], value)
|
||||||
|
self.assertTrue(isinstance(self.id[self.key_id], str))
|
||||||
|
self.assertEqual(self.id[self.key_id],
|
||||||
|
self.id.path_resolve('["%s"]' % bpy.utils.escape_identifier(self.key_id)))
|
||||||
|
|
||||||
|
# NOTE: Bytes strings are not supported currently.
|
||||||
|
|
||||||
|
def test_enum(self):
|
||||||
|
value = 1
|
||||||
|
items = [('A', '', ''), ('B', '', '')]
|
||||||
|
rna_prop_ui.rna_idprop_ui_create(self.id, self.key_id, default=value, items=items)
|
||||||
|
# 'Enum' 'type' of idprop currently returns integer value for direct subscription,
|
||||||
|
# and string key for `path_resolve` usage. See also #122843 .
|
||||||
|
self.assertEqual(self.id[self.key_id], value)
|
||||||
|
if False: # FIXME
|
||||||
|
self.assertEqual(self.id[self.key_id],
|
||||||
|
self.id.path_resolve('["%s"]' % bpy.utils.escape_identifier(self.key_id)))
|
||||||
|
else:
|
||||||
|
self.assertEqual(self.id.path_resolve('["%s"]' % bpy.utils.escape_identifier(self.key_id)), 'B')
|
||||||
|
self.assertEqual(self.id.path_resolve('["%s"]' % bpy.utils.escape_identifier(self.key_id)), 'B')
|
||||||
|
self.id[self.key_id] = 0
|
||||||
|
self.assertEqual(self.id[self.key_id], 0)
|
||||||
|
if False: # FIXME
|
||||||
|
self.assertEqual(self.id[self.key_id],
|
||||||
|
self.id.path_resolve('["%s"]' % bpy.utils.escape_identifier(self.key_id)))
|
||||||
|
else:
|
||||||
|
self.assertEqual(self.id.path_resolve('["%s"]' % bpy.utils.escape_identifier(self.key_id)), 'A')
|
||||||
|
|
||||||
|
|
||||||
class TestIdPropertyGroupView(TestHelper, unittest.TestCase):
|
class TestIdPropertyGroupView(TestHelper, unittest.TestCase):
|
||||||
|
|
||||||
def test_type(self):
|
def test_type(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user