File size: 1,528 Bytes
43912d4
 
 
 
 
 
 
 
 
 
 
 
37b04ce
43912d4
 
 
 
37b04ce
 
 
 
 
 
 
 
 
 
 
bbcb74d
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import asyncio

from ethicsguard.env import EthicsGuardEnv
from ethicsguard.models import EthicsGuardAction


def test_env_reset_returns_queue() -> None:
    result = asyncio.run(EthicsGuardEnv(difficulty="easy", seed=1000).reset())
    assert result.done is False
    assert len(result.observation.remaining_queue) > 0


def test_skip_removes_item_and_keeps_it_unresolved() -> None:
    env = EthicsGuardEnv(difficulty="easy", seed=1000)
    initial = asyncio.run(env.reset())
    item_id = initial.observation.remaining_queue[0].id
    after = asyncio.run(env.step(EthicsGuardAction(item_id=item_id, action_type="skip")))
    assert all(item.id != item_id for item in after.observation.remaining_queue)
    state = asyncio.run(env.state())
    assert item_id in state.unresolved_item_ids


def test_unknown_item_returns_error_without_ending_episode() -> None:
    env = EthicsGuardEnv(difficulty="easy", seed=1000)
    asyncio.run(env.reset())
    result = asyncio.run(env.step(EthicsGuardAction(item_id="missing", action_type="approve")))
    assert result.done is False
    assert result.last_action_error is not None


def test_terminal_score_is_in_open_interval() -> None:
    env = EthicsGuardEnv(difficulty="easy", seed=1000)
    result = asyncio.run(env.reset())
    while not result.done:
        item_id = result.observation.remaining_queue[0].id
        result = asyncio.run(env.step(EthicsGuardAction(item_id=item_id, action_type="approve")))
    assert result.score is not None
    assert 0.0 < result.score < 1.0