2020-10-05 00:05:02 -07:00
|
|
|
import gym
|
2021-01-19 10:09:39 +01:00
|
|
|
import unittest
|
2020-10-05 00:05:02 -07:00
|
|
|
|
2022-01-27 13:58:12 +01:00
|
|
|
from ray.rllib.examples.env.recsim_recommender_system_envs import \
|
|
|
|
InterestEvolutionRecSimEnv
|
|
|
|
from ray.rllib.env.wrappers.recsim import MultiDiscreteToDiscreteActionWrapper
|
2020-10-05 00:05:02 -07:00
|
|
|
from ray.rllib.utils.error import UnsupportedSpaceException
|
|
|
|
|
|
|
|
|
|
|
|
class TestRecSimWrapper(unittest.TestCase):
|
|
|
|
def test_observation_space(self):
|
2022-01-27 13:58:12 +01:00
|
|
|
env = InterestEvolutionRecSimEnv()
|
2020-10-05 00:05:02 -07:00
|
|
|
obs = env.reset()
|
|
|
|
self.assertTrue(
|
|
|
|
env.observation_space.contains(obs),
|
|
|
|
f"{env.observation_space} doesn't contain {obs}")
|
|
|
|
new_obs, _, _, _ = env.step(env.action_space.sample())
|
|
|
|
self.assertTrue(env.observation_space.contains(new_obs))
|
|
|
|
|
|
|
|
def test_action_space_conversion(self):
|
2022-01-27 13:58:12 +01:00
|
|
|
env = InterestEvolutionRecSimEnv({
|
|
|
|
"convert_to_discrete_action_space": True
|
|
|
|
})
|
2020-10-05 00:05:02 -07:00
|
|
|
self.assertIsInstance(env.action_space, gym.spaces.Discrete)
|
|
|
|
env.reset()
|
|
|
|
action = env.action_space.sample()
|
2022-01-27 13:58:12 +01:00
|
|
|
self.assertTrue(env.action_space.contains(action))
|
|
|
|
new_obs, _, _, _ = env.step(action)
|
|
|
|
self.assertTrue(env.observation_space.contains(new_obs))
|
2020-10-05 00:05:02 -07:00
|
|
|
|
|
|
|
def test_double_action_space_conversion_raises_exception(self):
|
2022-01-27 13:58:12 +01:00
|
|
|
env = InterestEvolutionRecSimEnv({
|
|
|
|
"convert_to_discrete_action_space": True
|
|
|
|
})
|
2020-10-05 00:05:02 -07:00
|
|
|
with self.assertRaises(UnsupportedSpaceException):
|
|
|
|
env = MultiDiscreteToDiscreteActionWrapper(env)
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
import sys
|
|
|
|
import pytest
|
|
|
|
sys.exit(pytest.main(["-v", __file__]))
|