code: def test_seed_reset_and_step(self):
      # seed
      seeds = [
          self.random_seed_offset + i for i in range(self.num_envs)
      ]
      self.vec_env.seed(seeds)
      for env, seed in zip(self.envs, seeds):
          env.seed(seed)
  
      # reset
      obss = self.vec_env.reset()
      real_obss = [env.reset() for env in self.envs]
      np.testing.assert_allclose(obss, real_obss)
  
      # step
      actions = [env.action_space.sample() for env in self.envs]
      real_obss, real_rewards, real_dones, real_infos = zip(
          *[env.step(action) for env, action in zip(self.envs, actions)]
      )
      obss, rewards, dones, infos = self.vec_env.step(actions)
      np.testing.assert_allclose(obss, real_obss)
      self.assertEqual(rewards, real_rewards)
      self.assertEqual(dones, real_dones)
      self.assertEqual(infos, real_infos)
  
      # reset with full mask should have no effect
      mask = np.ones(self.num_envs)
      obss = self.vec_env.reset(mask)
      np.testing.assert_allclose(obss, real_obss)
  
      # reset with partial mask
      mask = np.zeros(self.num_envs)
      mask[-1] = 1
      obss = self.vec_env.reset(mask)
      real_obss = list(real_obss)
      for i in range(self.num_envs):
          if not mask[i]:
              real_obss[i] = self.envs[i].reset()
      np.testing.assert_allclose(obss, real_obss)
  
file_path: chainerrl/tests/envs_tests/test_vector_envs.py
imports: import unittest
  from chainer import testing
  import gym
  import numpy
  import chainerrl
label_desc: Use image node_id 6 for calling the TestSerialVectorEnv obj's underlying member method code with example usage: obj.test_seed_reset_and_step() without return types