aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2011-08-15 15:37:36 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:17:11 -0300
commitb148ca6f876030a41ac7556ec5be2a7374e86bd5 (patch)
treea37599cc7c0898412b2b61f5207cfe76c233c736
parentba27bc0dd1beeb1f088a4b76395432a358d82c2c (diff)
Added test for user defined primitive type used as public class field.
-rw-r--r--tests/libsample/abstract.h2
-rw-r--r--tests/samplebinding/class_fields_test.py18
2 files changed, 17 insertions, 3 deletions
diff --git a/tests/libsample/abstract.h b/tests/libsample/abstract.h
index 8b68b6ea6..95c1c3a0d 100644
--- a/tests/libsample/abstract.h
+++ b/tests/libsample/abstract.h
@@ -25,6 +25,7 @@
#include "libsamplemacros.h"
#include "point.h"
+#include "complex.h"
class ObjectType;
@@ -57,6 +58,7 @@ public:
static const int staticPrimitiveField;
int primitiveField;
+ Complex userPrimitiveField;
Point valueTypeField;
ObjectType* objectTypeField;
diff --git a/tests/samplebinding/class_fields_test.py b/tests/samplebinding/class_fields_test.py
index c01a6bf07..eab138f4a 100644
--- a/tests/samplebinding/class_fields_test.py
+++ b/tests/samplebinding/class_fields_test.py
@@ -54,6 +54,21 @@ class TestAccessingCppFields(unittest.TestCase):
# attribution with invalid type
self.assertRaises(TypeError, lambda : setattr(d, 'primitiveField', None))
+ def testAccessingUsersPrimitiveTypeField(self):
+ '''Reads and writes an user's primitive type (in this case an 'Complex') field.'''
+ d = Derived()
+ self.assertEqual(type(d.userPrimitiveField), complex)
+
+ # attribution
+ old_value = d.userPrimitiveField
+ new_value = complex(1.1, 2.2)
+ d.userPrimitiveField = new_value
+ self.assertEqual(d.userPrimitiveField, new_value)
+ self.assertNotEqual(d.userPrimitiveField, old_value)
+
+ # attribution with invalid type
+ self.assertRaises(TypeError, lambda : setattr(d, 'userPrimitiveField', None))
+
def testAccessingValueTypeField(self):
'''Reads and writes a value type (in this case a 'Point') field.'''
d = Derived()
@@ -71,8 +86,6 @@ class TestAccessingCppFields(unittest.TestCase):
self.assertEqual(d.valueTypeField.x(), 10)
self.assertEqual(d.valueTypeField.y(), 20)
-
-
# attribution with invalid type
self.assertRaises(TypeError, lambda : setattr(d, 'valueTypeField', 123))
@@ -129,4 +142,3 @@ class TestAccessingCppFields(unittest.TestCase):
if __name__ == '__main__':
unittest.main()
-