1
1
Fork 0
exercism/jq/assembly-line/test-assembly-line.bats
Christina Sørensen 0a4ebc2eb6
chore: init
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2024-12-03 15:51:11 +01:00

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
}