File size: 1,237 Bytes
a03a89b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
40
41
42
43
44
45
46
47
48
"""Unit tests for text-to-action parsing."""

from MiniGridEnv.env.action_parser import parse_action


def test_exact_match():
    assert parse_action("go forward") == (2, "go forward", True)


def test_case_insensitive():
    assert parse_action("Turn Left") == (0, "turn left", True)


def test_structured_format():
    action_idx, canonical, valid = parse_action("Thought: I see a key.\nAction: pickup")
    assert (action_idx, canonical, valid) == (3, "pickup", True)


def test_alias():
    assert parse_action("left") == (0, "turn left", True)


def test_substring():
    assert parse_action("I should go forward now") == (2, "go forward", True)


def test_invalid_fallback():
    action_idx, canonical, valid = parse_action("fly to the moon")
    assert (action_idx, canonical, valid) == (2, "go forward", False)


def test_all_canonical_actions():
    expected = [
        ("turn left", 0),
        ("turn right", 1),
        ("go forward", 2),
        ("pickup", 3),
        ("drop", 4),
        ("toggle", 5),
        ("done", 6),
    ]
    for command, index in expected:
        assert parse_action(command)[0] == index


def test_whitespace_handling():
    assert parse_action("  go forward  \n") == (2, "go forward", True)