Spaces:
Sleeping
Sleeping
import pytest | |
import pickle | |
import numpy as np | |
from ding.framework import Context, OnlineRLContext, OfflineRLContext | |
from dataclasses import dataclass | |
class MockContext(Context): | |
hello: str = "world" | |
keep_me: int = 0 | |
not_keep_me: int = 0 | |
def test_pickable(): | |
ctx = MockContext() | |
ctx.keep("keep_me") | |
_ctx = pickle.loads(pickle.dumps(ctx)) | |
assert _ctx.hello == "world" | |
ctx.keep_me += 1 | |
ctx.not_keep_me += 1 | |
_ctx = ctx.renew() | |
assert _ctx.keep_me == 1 | |
assert _ctx.not_keep_me == 0 | |
def test_online(): | |
ctx = OnlineRLContext() | |
assert ctx.env_step == 0 | |
assert ctx.eval_value == -np.inf | |
ctx.env_step += 1 | |
ctx.eval_value = 1 | |
assert ctx.env_step == 1 | |
assert ctx.eval_value == 1 | |
_ctx = ctx.renew() | |
assert _ctx.env_step == 1 | |
assert _ctx.eval_value == -np.inf | |
def test_offline(): | |
ctx = OfflineRLContext() | |
assert ctx.train_iter == 0 | |
assert ctx.eval_value == -np.inf | |
ctx.train_iter += 1 | |
ctx.eval_value = 1 | |
assert ctx.train_iter == 1 | |
assert ctx.eval_value == 1 | |
_ctx = ctx.renew() | |
assert _ctx.train_iter == 1 | |
assert _ctx.eval_value == -np.inf | |