MCPcopy Index your code
hub / github.com/python/cpython / test_pickle

Method test_pickle

Lib/test/test_decimal.py:2991–3050  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

2989 Overflow])
2990
2991 def test_pickle(self):
2992
2993 for proto in range(pickle.HIGHEST_PROTOCOL + 1):
2994 Context = self.decimal.Context
2995
2996 savedecimal = sys.modules['decimal']
2997
2998 # Round trip
2999 sys.modules['decimal'] = self.decimal
3000 c = Context()
3001 e = pickle.loads(pickle.dumps(c, proto))
3002
3003 self.assertEqual(c.prec, e.prec)
3004 self.assertEqual(c.Emin, e.Emin)
3005 self.assertEqual(c.Emax, e.Emax)
3006 self.assertEqual(c.rounding, e.rounding)
3007 self.assertEqual(c.capitals, e.capitals)
3008 self.assertEqual(c.clamp, e.clamp)
3009 self.assertEqual(c.flags, e.flags)
3010 self.assertEqual(c.traps, e.traps)
3011
3012 # Test interchangeability
3013 combinations = [(C, P), (P, C)] if C else [(P, P)]
3014 for dumper, loader in combinations:
3015 for ri, _ in enumerate(RoundingModes):
3016 for fi, _ in enumerate(OrderedSignals[dumper]):
3017 for ti, _ in enumerate(OrderedSignals[dumper]):
3018
3019 prec = random.randrange(1, 100)
3020 emin = random.randrange(-100, 0)
3021 emax = random.randrange(1, 100)
3022 caps = random.randrange(2)
3023 clamp = random.randrange(2)
3024
3025 # One module dumps
3026 sys.modules['decimal'] = dumper
3027 c = dumper.Context(
3028 prec=prec, Emin=emin, Emax=emax,
3029 rounding=RoundingModes[ri],
3030 capitals=caps, clamp=clamp,
3031 flags=OrderedSignals[dumper][:fi],
3032 traps=OrderedSignals[dumper][:ti]
3033 )
3034 s = pickle.dumps(c, proto)
3035
3036 # The other module loads
3037 sys.modules['decimal'] = loader
3038 d = pickle.loads(s)
3039 self.assertIsInstance(d, loader.Context)
3040
3041 self.assertEqual(d.prec, prec)
3042 self.assertEqual(d.Emin, emin)
3043 self.assertEqual(d.Emax, emax)
3044 self.assertEqual(d.rounding, RoundingModes[ri])
3045 self.assertEqual(d.capitals, caps)
3046 self.assertEqual(d.clamp, clamp)
3047 assert_signals(self, d, 'flags', OrderedSignals[loader][:fi])
3048 assert_signals(self, d, 'traps', OrderedSignals[loader][:ti])

Callers

nothing calls this directly

Calls 8

enumerateFunction · 0.85
assert_signalsFunction · 0.85
randrangeMethod · 0.80
assertIsInstanceMethod · 0.80
ContextClass · 0.70
loadsMethod · 0.45
dumpsMethod · 0.45
assertEqualMethod · 0.45

Tested by

no test coverage detected