138 lines
3.4 KiB
Bash
138 lines
3.4 KiB
Bash
#!/usr/bin/env bats
|
|
load bats-extra
|
|
load bats-jq
|
|
|
|
assert_float() {
|
|
local OPTIND OPTARG
|
|
local decimals=2 actual expected
|
|
while getopts :d: opt; do
|
|
case $opt in
|
|
d) decimals=$OPTARG ;;
|
|
*) return 2 ;;
|
|
esac
|
|
done
|
|
shift $((OPTIND - 1))
|
|
# bash can't do floating point: use awk (also uses IEEE754 numbers)
|
|
read -r actual expected < <(
|
|
awk -v d="$decimals" -v a="$1" -v e="$2" '
|
|
BEGIN {
|
|
m = 10 ^ d
|
|
print int(a * m)/m, int(e * m)/m
|
|
}
|
|
'
|
|
)
|
|
# now call a bats-assert command to get the desired output
|
|
assert_equal "$actual" "$expected"
|
|
}
|
|
|
|
@test production_rate_per_hour_for_speed_zero {
|
|
## task 1
|
|
run jq -f assembly-line.jq <<< '{"speed": 0}'
|
|
assert_success
|
|
assert_float -d 4 -- "${lines[0]}" 0
|
|
}
|
|
|
|
@test production_rate_per_hour_for_speed_one {
|
|
## task 1
|
|
run jq -f assembly-line.jq <<< '{"speed": 1}'
|
|
assert_success
|
|
assert_float -d 4 -- "${lines[0]}" 221.0
|
|
}
|
|
|
|
@test production_rate_per_hour_for_speed_two {
|
|
## task 1
|
|
run jq -f assembly-line.jq <<< '{"speed": 2}'
|
|
assert_success
|
|
assert_float -d 4 -- "${lines[0]}" 442.0
|
|
}
|
|
|
|
@test production_rate_per_hour_for_speed_three {
|
|
## task 1
|
|
run jq -f assembly-line.jq <<< '{"speed": 3}'
|
|
assert_success
|
|
assert_float -d 4 -- "${lines[0]}" 663.0
|
|
}
|
|
|
|
@test production_rate_per_hour_for_speed_four {
|
|
## task 1
|
|
run jq -f assembly-line.jq <<< '{"speed": 4}'
|
|
assert_success
|
|
assert_float -d 4 -- "${lines[0]}" 884.0
|
|
}
|
|
|
|
@test production_rate_per_hour_for_speed_five {
|
|
## task 1
|
|
run jq -f assembly-line.jq <<< '{"speed": 5}'
|
|
assert_success
|
|
assert_float -d 4 -- "${lines[0]}" 994.5
|
|
}
|
|
|
|
@test production_rate_per_hour_for_speed_six {
|
|
## task 1
|
|
run jq -f assembly-line.jq <<< '{"speed": 6}'
|
|
assert_success
|
|
assert_float -d 4 -- "${lines[0]}" 1193.4
|
|
}
|
|
|
|
@test production_rate_per_hour_for_speed_seven {
|
|
## task 1
|
|
run jq -f assembly-line.jq <<< '{"speed": 7}'
|
|
assert_success
|
|
assert_float -d 4 -- "${lines[0]}" 1392.3
|
|
}
|
|
|
|
@test production_rate_per_hour_for_speed_eight {
|
|
## task 1
|
|
run jq -f assembly-line.jq <<< '{"speed": 8}'
|
|
assert_success
|
|
assert_float -d 4 -- "${lines[0]}" 1591.2
|
|
}
|
|
|
|
@test production_rate_per_hour_for_speed_nine {
|
|
## task 1
|
|
run jq -f assembly-line.jq <<< '{"speed": 9}'
|
|
assert_success
|
|
assert_float -d 4 -- "${lines[0]}" 1591.2
|
|
}
|
|
|
|
@test production_rate_per_hour_for_speed_ten {
|
|
## task 1
|
|
run jq -f assembly-line.jq <<< '{"speed": 10}'
|
|
assert_success
|
|
assert_float -d 4 -- "${lines[0]}" 1701.7
|
|
}
|
|
|
|
@test working_items_per_minute_for_speed_one {
|
|
## task 2
|
|
run jq -f assembly-line.jq <<< '{"speed": 1}'
|
|
assert_success
|
|
assert_line --index 1 3
|
|
}
|
|
|
|
@test working_items_per_minute_for_speed_five {
|
|
## task 2
|
|
run jq -f assembly-line.jq <<< '{"speed": 5}'
|
|
assert_success
|
|
assert_line --index 1 16
|
|
}
|
|
|
|
@test working_items_per_minute_for_speed_eight {
|
|
## task 2
|
|
run jq -f assembly-line.jq <<< '{"speed": 8}'
|
|
assert_success
|
|
assert_line --index 1 26
|
|
}
|
|
|
|
@test working_items_per_minute_for_speed_nine {
|
|
## task 2
|
|
run jq -f assembly-line.jq <<< '{"speed": 9}'
|
|
assert_success
|
|
assert_line --index 1 26
|
|
}
|
|
|
|
@test working_items_per_minute_for_speed_ten {
|
|
## task 2
|
|
run jq -f assembly-line.jq <<< '{"speed": 10}'
|
|
assert_success
|
|
assert_line --index 1 28
|
|
}
|