|
56 | 56 | fractions = {C:cfractions, P:pfractions} |
57 | 57 | sys.modules['decimal'] = orig_sys_decimal |
58 | 58 |
|
| 59 | +############ RunFirst ############ |
| 60 | +class RunFirst(unittest.TestCase): |
| 61 | + |
| 62 | + def setUp(self): |
| 63 | + self.save_default = self.decimal.DefaultContext.copy() |
| 64 | + |
| 65 | + def tearDown(self): |
| 66 | + DefaultContext = self.decimal.DefaultContext |
| 67 | + |
| 68 | + DefaultContext.prec = self.save_default.prec |
| 69 | + DefaultContext.rounding = self.save_default.rounding |
| 70 | + DefaultContext.Emax = self.save_default.Emax |
| 71 | + DefaultContext.Emin = self.save_default.Emin |
| 72 | + DefaultContext.capitals = self.save_default.capitals |
| 73 | + DefaultContext.clamp = self.save_default.clamp |
| 74 | + DefaultContext.flags = self.save_default.flags |
| 75 | + DefaultContext.traps = self.save_default.traps |
| 76 | + |
| 77 | + self.decimal.setcontext(self.decimal.DefaultContext) |
| 78 | + |
| 79 | + def test_00default_context(self): |
| 80 | + # The test depends on the fact that getcontext() is called |
| 81 | + # for the first time. |
| 82 | + DefaultContext = self.decimal.DefaultContext |
| 83 | + ROUND_05UP = self.decimal.ROUND_05UP |
| 84 | + Clamped = self.decimal.Clamped |
| 85 | + InvalidOperation = self.decimal.InvalidOperation |
| 86 | + |
| 87 | + DefaultContext.prec = 5001 |
| 88 | + DefaultContext.rounding = ROUND_05UP |
| 89 | + DefaultContext.Emax = 10025 |
| 90 | + DefaultContext.Emin = -10025 |
| 91 | + DefaultContext.capitals = 0 |
| 92 | + DefaultContext.clamp = 1 |
| 93 | + DefaultContext.flags[InvalidOperation] = True |
| 94 | + DefaultContext.clear_traps() |
| 95 | + DefaultContext.traps[Clamped] = True |
| 96 | + |
| 97 | + # implicit initialization on first access |
| 98 | + c = self.decimal.getcontext() |
| 99 | + |
| 100 | + self.assertEqual(c.prec, 5001) |
| 101 | + self.assertEqual(c.rounding, ROUND_05UP) |
| 102 | + self.assertEqual(c.Emax, 10025) |
| 103 | + self.assertEqual(c.Emin, -10025) |
| 104 | + self.assertEqual(c.capitals, 0) |
| 105 | + self.assertEqual(c.clamp, 1) |
| 106 | + for k in c.flags: |
| 107 | + self.assertFalse(c.flags[k]) |
| 108 | + for k in c.traps: |
| 109 | + if k is Clamped: |
| 110 | + self.assertTrue(c.traps[k]) |
| 111 | + else: |
| 112 | + self.assertFalse(c.traps[k]) |
| 113 | + |
| 114 | + # explicit initialization |
| 115 | + self.decimal.setcontext(DefaultContext) |
| 116 | + c = self.decimal.getcontext() |
| 117 | + for k in c.flags: |
| 118 | + self.assertFalse(c.flags[k]) |
| 119 | + |
| 120 | +class CRunFirst(RunFirst): |
| 121 | + decimal = C |
| 122 | +class PyRunFirst(RunFirst): |
| 123 | + decimal = P |
| 124 | +if C: |
| 125 | + run_unittest(CRunFirst, PyRunFirst) |
| 126 | +else: |
| 127 | + run_unittest(PyRunFirst) |
| 128 | +############ END RunFirst ############ |
59 | 129 |
|
60 | 130 | # Useful Test Constant |
61 | 131 | Signals = { |
|
0 commit comments