MCPcopy Index your code
hub / github.com/RustPython/RustPython / test_pickle

Method test_pickle

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

Source from the content-addressed store, hash-verified

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