# Copyright David Abrahams 2004. Distributed under the Boost # Software License, Version 1.0. (See accompanying # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) """ This is test module for properties. >>> r = properties.ret_type() >>> r.i = 22.5 >>> r.i 22.5 >>> c = properties.crash_me() >>> c.i.i 42.5 >>> X = properties.X >>> x1 = X(1) value read only >>> x1.value_r 1 value read - write >>> x1.value_rw 1 value direct access >>> x1.value_direct 1 class instance count read - only >>> X.instance_count 1 class instance count direct >>> X.instance_count_direct 1 class instance count injected >>> X.instance_count_injected 1 class instance count from object >>> x1.instance_count 1 class instance count from object >>> x1.instance_count_direct 1 class instance count from object: >>> x1.instance_count_injected 1 as expected you can't assign new value to read only property >>> x1.value_r = 2 Traceback (most recent call last): File "properties.py", line 49, in ? x1.value_r = 2 AttributeError: can't set attribute setting value_rw to 2. value_direct: >>> x1.value_rw = 2 >>> x1.value_rw 2 setting value_direct to 3. value_direct: >>> x1.value_direct = 3 >>> x1.value_direct 3 >>> assert x1.value_r == 3 >>> x2 = X(2) after creating second intstance of X instances count is 2 >>> x2.instance_count 2 >>> del x2 >>> assert x1.instance_count == 1 >>> assert properties.X.value_r_ds.__doc__ == "value_r_ds is read-only" >>> assert properties.X.value_rw_ds.__doc__ == "value_rw_ds is read-write" """ #import sys; sys.path.append(r'P:\Actimize4.0\smart_const\py_smart_const___Win32_Debug') import properties_ext as properties def run(args = None): import sys import doctest if args is not None: sys.argv = args return doctest.testmod(sys.modules.get(__name__)) if __name__ == '__main__': print("running...") import sys status = run()[0] if (status == 0): print("Done.") sys.exit(status)