| # 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) |
| ''' |
| >>> from enum_ext import * |
| |
| >>> identity(color.red) # in case of duplicated enums it always take the last enum |
| enum_ext.color.blood |
| |
| >>> identity(color.green) |
| enum_ext.color.green |
| |
| >>> identity(color.blue) |
| enum_ext.color.blue |
| |
| >>> identity(color(1)) # in case of duplicated enums it always take the last enum |
| enum_ext.color.blood |
| |
| >>> identity(color(2)) |
| enum_ext.color.green |
| |
| >>> identity(color(3)) |
| enum_ext.color(3) |
| |
| >>> identity(color(4)) |
| enum_ext.color.blue |
| |
| --- check export to scope --- |
| |
| >>> identity(red) |
| enum_ext.color.blood |
| |
| >>> identity(green) |
| enum_ext.color.green |
| |
| >>> identity(blue) |
| enum_ext.color.blue |
| |
| >>> try: identity(1) |
| ... except TypeError: pass |
| ... else: print 'expected a TypeError' |
| |
| >>> c = colorized() |
| >>> c.x |
| enum_ext.color.blood |
| >>> c.x = green |
| >>> c.x |
| enum_ext.color.green |
| >>> red == blood |
| True |
| >>> red == green |
| False |
| >>> hash(red) == hash(blood) |
| True |
| >>> hash(red) == hash(green) |
| False |
| ''' |
| |
| # pickling of enums only works with Python 2.3 or higher |
| exercise_pickling = ''' |
| >>> import pickle |
| >>> p = pickle.dumps(color.green, pickle.HIGHEST_PROTOCOL) |
| >>> l = pickle.loads(p) |
| >>> identity(l) |
| enum_ext.color.green |
| ''' |
| |
| def run(args = None): |
| import sys |
| import doctest |
| import pickle |
| |
| if args is not None: |
| sys.argv = args |
| self = sys.modules.get(__name__) |
| if (hasattr(pickle, "HIGHEST_PROTOCOL")): |
| self.__doc__ += exercise_pickling |
| return doctest.testmod(self) |
| |
| if __name__ == '__main__': |
| print "running..." |
| import sys |
| status = run()[0] |
| if (status == 0): print "Done." |
| sys.exit(status) |