12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- # 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)
|