88 lines
4.6 KiB
Python
88 lines
4.6 KiB
Python
import numpy as np
|
|
|
|
from browser_env import *
|
|
|
|
|
|
def test_is_equivalent() -> None:
|
|
for action_type in ActionTypes.__members__.values():
|
|
action_a = create_random_action()
|
|
action_b = create_random_action()
|
|
if action_a["action_type"] != action_b["action_type"]:
|
|
assert not is_equivalent(action_a, action_b)
|
|
action_a["action_type"] = action_type
|
|
action_b["action_type"] = action_type
|
|
match action_type:
|
|
case ActionTypes.MOUSE_CLICK | ActionTypes.MOUSE_HOVER:
|
|
if not np.allclose(action_a["coords"], action_b["coords"]):
|
|
assert not is_equivalent(action_a, action_b)
|
|
action_a["coords"] = action_b["coords"]
|
|
assert is_equivalent(action_a, action_b)
|
|
case ActionTypes.KEYBOARD_TYPE:
|
|
if action_a["text"] != action_b["text"]:
|
|
assert not is_equivalent(action_a, action_b)
|
|
action_a["text"] = action_b["text"]
|
|
assert is_equivalent(action_a, action_b)
|
|
case ActionTypes.CLICK | ActionTypes.HOVER | ActionTypes.TYPE:
|
|
if action_a["element_id"] and action_b["element_id"]:
|
|
if action_a["element_id"] != action_b["element_id"]:
|
|
assert not is_equivalent(action_a, action_b)
|
|
action_a["element_id"] = action_b["element_id"]
|
|
assert is_equivalent(action_a, action_b)
|
|
elif action_a["element_id"] and action_b["element_id"]:
|
|
if action_a["element_role"] != action_b["element_role"]:
|
|
assert not is_equivalent(action_a, action_b)
|
|
action_a["element_role"] = action_b["element_role"]
|
|
if action_a["element_name"] != action_b["element_name"]:
|
|
assert not is_equivalent(action_a, action_b)
|
|
action_a["element_name"] = action_b["element_name"]
|
|
assert is_equivalent(action_a, action_b)
|
|
elif action_a["pw_code"] and action_b["pw_code"]:
|
|
if action_a["pw_code"] != action_b["pw_code"]:
|
|
assert not is_equivalent(action_a, action_b)
|
|
action_a["pw_code"] = action_b["pw_code"]
|
|
assert is_equivalent(action_a, action_b)
|
|
else:
|
|
action_a["element_id"] = action_b["element_id"]
|
|
assert is_equivalent(action_a, action_b)
|
|
case ActionTypes.GOTO_URL:
|
|
if action_a["url"] != action_b["url"]:
|
|
assert not is_equivalent(action_a, action_b)
|
|
action_a["url"] = action_b["url"]
|
|
assert is_equivalent(action_a, action_b)
|
|
case ActionTypes.PAGE_FOCUS:
|
|
if action_a["page_number"] != action_b["page_number"]:
|
|
assert not is_equivalent(action_a, action_b)
|
|
action_a["page_number"] = action_b["page_number"]
|
|
assert is_equivalent(action_a, action_b)
|
|
case ActionTypes.SCROLL:
|
|
da = "up" if "up" in action_a["direction"] else "down"
|
|
db = "up" if "up" in action_b["direction"] else "down"
|
|
if da != db:
|
|
assert not is_equivalent(action_a, action_b)
|
|
action_a["direction"] = action_b["direction"]
|
|
assert is_equivalent(action_a, action_b)
|
|
case ActionTypes.KEY_PRESS:
|
|
if action_a["key_comb"] != action_b["key_comb"]:
|
|
assert not is_equivalent(action_a, action_b)
|
|
action_a["key_comb"] = action_b["key_comb"]
|
|
assert is_equivalent(action_a, action_b)
|
|
case ActionTypes.CHECK | ActionTypes.SELECT_OPTION:
|
|
if action_a["pw_code"] != action_b["pw_code"]:
|
|
assert not is_equivalent(action_a, action_b)
|
|
action_a["pw_code"] = action_b["pw_code"]
|
|
assert is_equivalent(action_a, action_b)
|
|
case ActionTypes.STOP:
|
|
if action_a["answer"] != action_b["answer"]:
|
|
assert not is_equivalent(action_a, action_b)
|
|
action_a["answer"] = action_b["answer"]
|
|
assert is_equivalent(action_a, action_b)
|
|
case _:
|
|
assert is_equivalent(action_a, action_b)
|
|
|
|
|
|
def test_action2create_function() -> None:
|
|
for _ in range(1000):
|
|
action = create_random_action()
|
|
create_function = action2create_function(action)
|
|
assert is_equivalent(action, eval(create_function))
|