| | |
| | | PY |
| | | } |
| | | |
| | | assert_direct_space_double_click_report() { |
| | | /usr/bin/python3 - "$1" <<'PY' |
| | | import json |
| | | import sys |
| | | |
| | | path = sys.argv[1] |
| | | with open(path, "r", encoding="utf-8") as file: |
| | | report = json.load(file) |
| | | |
| | | def require(condition, message): |
| | | if not condition: |
| | | print(message, file=sys.stderr) |
| | | print(json.dumps(report, indent=2, ensure_ascii=False), file=sys.stderr) |
| | | sys.exit(1) |
| | | |
| | | root = report.get("rootView", {}) |
| | | |
| | | require(report.get("quickSwitchVisible") is False, "direct double-click Space must close Quick Switch") |
| | | require(report.get("spaceFilterActive") is False, "direct double-click Space must not leave filter active") |
| | | require(root.get("spaceFilterActive") is False, "root must show no filter after direct Space activation") |
| | | require(report.get("lastSpaceFilterAction") == "activateSpace", "direct double-click Space must record activateSpace") |
| | | require(report.get("lastCommittedWindowID") is None, "direct double-click Space must not commit a window") |
| | | require(report.get("lastActivationWindowID") is None, "direct double-click Space must not target a window") |
| | | require(report.get("lastActivationResult") is None, "direct double-click Space must not run window activation") |
| | | require(report.get("lastCommitSource") is None, "direct double-click Space must not have a commit source") |
| | | require(report.get("lastSpaceActivationSpaceID") == 1, "direct double-click A1 must request Space 1 activation") |
| | | require(report.get("lastSpaceActivationDidRequestFocus") is True, "debug Space activation must request focus") |
| | | require(report.get("lastSpaceActivationDisplayIdentifier") == "debug", "fixture must use debug Space activation service") |
| | | require(report.get("lastSpaceActivationError") is None, "debug Space activation must not fail") |
| | | require(root.get("lastMouseCommand") == "double-click-space:1", "last mouse command must be double-click-space:1") |
| | | |
| | | print(json.dumps({ |
| | | "case": "direct-space-double-click", |
| | | "quickSwitchVisible": report.get("quickSwitchVisible"), |
| | | "lastSpaceFilterAction": report.get("lastSpaceFilterAction"), |
| | | "lastSpaceActivationSpaceID": report.get("lastSpaceActivationSpaceID"), |
| | | "lastSpaceActivationDisplayIdentifier": report.get("lastSpaceActivationDisplayIdentifier") |
| | | }, indent=2, ensure_ascii=False)) |
| | | PY |
| | | } |
| | | |
| | | assert_single_fullscreen_report() { |
| | | local report="$1" |
| | | local expected_previous_action="$2" |
| | |
| | | FULLSCREEN_REPORT="$REPORT_PREFIX-fullscreen-report.json" |
| | | LOCK_THEN_FULLSCREEN_REPORT="$REPORT_PREFIX-lock-then-fullscreen-report.json" |
| | | LOCKED_DOUBLE_CLICK_REPORT="$REPORT_PREFIX-locked-double-click-report.json" |
| | | DIRECT_DOUBLE_CLICK_REPORT="$REPORT_PREFIX-direct-double-click-report.json" |
| | | |
| | | run_report "$LOCK_A1_REPORT" "click-space:1" "click-space:1" "visible" "lock" |
| | | assert_lock_a1_report "$LOCK_A1_REPORT" |
| | |
| | | run_report "$LOCKED_DOUBLE_CLICK_REPORT" "click-space:1,double-click-space:1" "double-click-space:1" "space-hidden" |
| | | assert_locked_space_double_click_report "$LOCKED_DOUBLE_CLICK_REPORT" |
| | | |
| | | run_report "$DIRECT_DOUBLE_CLICK_REPORT" "double-click-space:1" "double-click-space:1" "space-hidden" |
| | | assert_direct_space_double_click_report "$DIRECT_DOUBLE_CLICK_REPORT" |
| | | |
| | | trap - EXIT |
| | | cleanup |
| | | |