def test_wrapped_set_benchmark(env: LlvmEnv, wrapper_type): """Test that the benchmark attribute can be set on wrapped classes.""" class MyWrapper(wrapper_type): def observation(self, observation): return observation # pass thru env = MyWrapper(env) # Set the benchmark attribute and check that it propagates. env.benchmark = "benchmark://cbench-v1/dijkstra" env.reset() assert env.benchmark == "benchmark://cbench-v1/dijkstra" # Repeat again for a different benchmark. env.benchmark = "benchmark://cbench-v1/crc32" env.reset() assert env.benchmark == "benchmark://cbench-v1/crc32"
def test_unset_forced_benchmark(env: LlvmEnv): """Test that setting benchmark "unsets" the previous benchmark.""" env.reset(benchmark="benchmark://cbench-v1/dijkstra") with pytest.warns( UserWarning, match=r"Changing the benchmark has no effect until reset\(\) is called", ): env.benchmark = "benchmark://cbench-v1/crc32" env.reset() assert env.benchmark == "benchmark://cbench-v1/crc32"
def test_wrapped_set_benchmark(env: LlvmEnv, wrapper_type): """Test that the benchmark attribute can be set on wrapped classes.""" class MyWrapper(wrapper_type): def convert_observation(self, observation): return observation # pass thru env = MyWrapper(env) # Set the benchmark attribute and check that it propagates. env.benchmark = "benchmark://cbench-v1/dijkstra" env.reset() assert env.benchmark == "benchmark://cbench-v1/dijkstra" # Repeat again for a different benchmark. with warns( UserWarning, match= r"Changing the benchmark has no effect until reset\(\) is called", ): env.benchmark = "benchmark://cbench-v1/crc32" env.reset() assert env.benchmark == "benchmark://cbench-v1/crc32"
def test_change_benchmark_mid_episode(env: LlvmEnv): """Test that changing the benchmark while in an episode has no effect until the next call to reset().""" env.reset(benchmark="benchmark://cbench-v1/crc32") assert env.benchmark == "benchmark://cbench-v1/crc32" with pytest.warns( UserWarning, match=r"Changing the benchmark has no effect until reset\(\) is called", ): env.benchmark = "benchmark://cbench-v1/dijkstra" assert env.benchmark == "benchmark://cbench-v1/crc32" env.reset() assert env.benchmark == "benchmark://cbench-v1/dijkstra"
def test_benchmark_setter(env: LlvmEnv): env.benchmark = "benchmark://cbench-v1/dijkstra" assert env.benchmark != "benchmark://cbench-v1/dijkstra" env.reset() assert env.benchmark == "benchmark://cbench-v1/dijkstra"
def test_set_benchmark_invalid_type(env: LlvmEnv): with pytest.raises(TypeError) as ctx: env.benchmark = 10 assert str(ctx.value) == "Expected a Benchmark or str, received: 'int'"