1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
"""
Created on Aug 22, 2011
@author: hussain.bohra
@author: fabioz
"""
import os
import sys
import unittest
# =======================================================================================================================
# Test
# =======================================================================================================================
class Test(unittest.TestCase):
"""Test cases to validate custom property implementation in pydevd"""
def setUp(self, nused=None):
self.tempdir = os.path.join(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, self.tempdir)
from _pydevd_bundle import pydevd_traceproperty
self.old = pydevd_traceproperty.replace_builtin_property()
def tearDown(self, unused=None):
from _pydevd_bundle import pydevd_traceproperty
pydevd_traceproperty.replace_builtin_property(self.old)
sys.path.remove(self.tempdir)
def test_property(self):
"""Test case to validate custom property"""
from _pydevd_bundle import pydevd_traceproperty
class TestProperty(object):
def __init__(self):
self._get = 0
self._set = 0
self._del = 0
def get_name(self):
self._get += 1
return self.__name
def set_name(self, value):
self._set += 1
self.__name = value
def del_name(self):
self._del += 1
del self.__name
name = property(get_name, set_name, del_name, "name's docstring")
self.assertEqual(name.__class__, pydevd_traceproperty.DebugProperty)
testObj = TestProperty()
self._check(testObj)
def test_property2(self):
"""Test case to validate custom property"""
class TestProperty(object):
def __init__(self):
self._get = 0
self._set = 0
self._del = 0
def name(self):
self._get += 1
return self.__name
name = property(name)
def set_name(self, value):
self._set += 1
self.__name = value
name.setter(set_name)
def del_name(self):
self._del += 1
del self.__name
name.deleter(del_name)
testObj = TestProperty()
self._check(testObj)
def test_property3(self):
"""Test case to validate custom property"""
class TestProperty(object):
def __init__(self):
self._name = "foo"
def name(self):
return self._name
name = property(name)
testObj = TestProperty()
self.assertRaises(AttributeError, setattr, testObj, "name", "bar")
self.assertRaises(AttributeError, delattr, testObj, "name")
def _check(self, testObj):
testObj.name = "Custom"
self.assertEqual(1, testObj._set)
self.assertEqual(testObj.name, "Custom")
self.assertEqual(1, testObj._get)
self.assertTrue(hasattr(testObj, "name"))
del testObj.name
self.assertEqual(1, testObj._del)
self.assertTrue(not hasattr(testObj, "name"))
testObj.name = "Custom2"
self.assertEqual(testObj.name, "Custom2")
|