|
1 | 1 | # -*- coding: utf-8 -*- |
| 2 | +import sys |
2 | 3 | import unittest |
3 | 4 | import trafaret as t |
| 5 | +import trafaret.utils as tu |
4 | 6 | from collections import Mapping as AbcMapping |
5 | 7 | from trafaret import extract_error, ignore, DataError |
6 | 8 | from trafaret.extras import KeysSubset |
@@ -264,6 +266,40 @@ def test_enum(self): |
264 | 266 | res = extract_error(trafaret, 2) |
265 | 267 | self.assertEqual(res, "value doesn't match any variant") |
266 | 268 |
|
| 269 | + @unittest.skipIf(sys.version_info < (3, 4), |
| 270 | + "not supported in this veresion" |
| 271 | + ) |
| 272 | + def test_enum_py3(self): |
| 273 | + import enum |
| 274 | + |
| 275 | + class Colors(enum.Enum): |
| 276 | + red = 0 |
| 277 | + green = 1 |
| 278 | + blue = 2 |
| 279 | + |
| 280 | + trafaret = t.Enum(Colors) |
| 281 | + self.assertEqual(repr(trafaret), "<Enum('red', 'green', 'blue')>") |
| 282 | + res = trafaret.check('red') |
| 283 | + res = trafaret.check('green') |
| 284 | + res = extract_error(trafaret, 'unknown') |
| 285 | + self.assertEqual(res, "value doesn't match any variant") |
| 286 | + |
| 287 | + # check multiple fails |
| 288 | + |
| 289 | + class Fruits(enum.Enum): |
| 290 | + orange = 0 |
| 291 | + apple = 1 |
| 292 | + |
| 293 | + with self.assertRaises(TypeError): |
| 294 | + trafaret = t.Enum(Colors, Fruits) |
| 295 | + |
| 296 | + # check mixin fails in any order |
| 297 | + |
| 298 | + with self.assertRaises(TypeError): |
| 299 | + trafaret = t.Enum(Colors, 1) |
| 300 | + |
| 301 | + with self.assertRaises(TypeError): |
| 302 | + trafaret = t.Enum(1, Colors) |
267 | 303 |
|
268 | 304 |
|
269 | 305 | class TestFloat(unittest.TestCase): |
|
0 commit comments