74 lines
2.3 KiB
Bash
Executable File
74 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
#===============================================================================
|
|
# Unit tests: Module parsing
|
|
#===============================================================================
|
|
|
|
PASS=0
|
|
FAIL=0
|
|
|
|
test_parse_zone_module() {
|
|
local line="test_zone,notify-send on,notify-send off,zone,0,0,100,100"
|
|
IFS=',' read -r name onexec offexec type args <<< "$line"
|
|
[[ "$name" == "test_zone" ]] || { echo "FAIL: name"; return 1; }
|
|
[[ "$onexec" == "notify-send on" ]] || { echo "FAIL: onexec"; return 1; }
|
|
[[ "$offexec" == "notify-send off" ]] || { echo "FAIL: offexec"; return 1; }
|
|
[[ "$type" == "zone" ]] || { echo "FAIL: type=$type"; return 1; }
|
|
[[ "$args" == "0,0,100,100" ]] || { echo "FAIL: args=$args"; return 1; }
|
|
echo "PASS: parse zone module"
|
|
return 0
|
|
}
|
|
|
|
test_parse_layout_module() {
|
|
local line="monocle_mod,echo on,echo off,layout,M"
|
|
IFS=',' read -r name onexec offexec type args <<< "$line"
|
|
[[ "$name" == "monocle_mod" ]] || { echo "FAIL: name"; return 1; }
|
|
[[ "$type" == "layout" ]] || { echo "FAIL: type=$type"; return 1; }
|
|
[[ "$args" == "M" ]] || { echo "FAIL: args=$args"; return 1; }
|
|
echo "PASS: parse layout module"
|
|
return 0
|
|
}
|
|
|
|
test_parse_focused_module() {
|
|
local line="browser_focus,echo on,echo off,focused,firefox"
|
|
IFS=',' read -r name onexec offexec type args <<< "$line"
|
|
[[ "$name" == "browser_focus" ]] || { echo "FAIL: name"; return 1; }
|
|
[[ "$type" == "focused" ]] || { echo "FAIL: type=$type"; return 1; }
|
|
[[ "$args" == "firefox" ]] || { echo "FAIL: args=$args"; return 1; }
|
|
echo "PASS: parse focused module"
|
|
return 0
|
|
}
|
|
|
|
test_skip_comments() {
|
|
local line="# this is a comment"
|
|
local name
|
|
name=$(echo "$line" | grep -oP '^[^#,]+' || echo "")
|
|
[[ -z "$name" ]] || { echo "FAIL: comment not skipped"; return 1; }
|
|
echo "PASS: skip comments"
|
|
return 0
|
|
}
|
|
|
|
test_skip_empty() {
|
|
local line=""
|
|
[[ -z "$line" ]] || { echo "FAIL: empty not skipped"; return 1; }
|
|
echo "PASS: skip empty lines"
|
|
return 0
|
|
}
|
|
|
|
run_test() {
|
|
local test_name="$1"
|
|
if "$test_name"; then
|
|
((PASS++))
|
|
else
|
|
((FAIL++))
|
|
fi
|
|
}
|
|
|
|
run_test test_parse_zone_module
|
|
run_test test_parse_layout_module
|
|
run_test test_parse_focused_module
|
|
run_test test_skip_comments
|
|
run_test test_skip_empty
|
|
|
|
echo "=== Results: $PASS passed, $FAIL failed ==="
|
|
exit $FAIL
|