1
1
Fork 0
exercism/jq/remote-control-car/test-remote-control-car.bats
Christina Sørensen 215e3d084b
feat(jq): remote-control-car
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2024-12-09 19:05:58 +01:00

118 lines
2.7 KiB
Bash

#!/usr/bin/env bats
load bats-extra
load bats-jq
assert_key_value() {
local expected=$1 key=$2
local result
result=$(echo "$output" | jq -r --arg key "$key" --argjson val "$expected" '.[$key] == $val')
[[ $result == "true" ]]
}
@test "new car" {
## task 1
run jq -n '
include "remote-control-car";
new_remote_control_car
'
assert_success
assert_key_value 100 "battery_percentage"
assert_key_value 0 "distance_driven_in_meters"
assert_key_value "null" "nickname"
}
@test "new car with nickname" {
## task 2
run jq -n '
include "remote-control-car";
new_remote_control_car("Red")
'
assert_success
assert_key_value 100 "battery_percentage"
assert_key_value 0 "distance_driven_in_meters"
assert_key_value '"Red"' "nickname"
}
@test "display distance for new car is zero" {
## task 3
run jq -r -n '
include "remote-control-car";
new_remote_control_car | display_distance
'
assert_success
assert_output '0 meters'
}
@test "display distance for car with some distance" {
## task 3
run jq -r -n '
include "remote-control-car";
new_remote_control_car
| .distance_driven_in_meters += 20
| display_distance
'
assert_success
assert_output '20 meters'
}
@test "display battery for new car is 100%" {
## task 4
run jq -r -n '
include "remote-control-car";
new_remote_control_car | display_battery
'
assert_success
assert_output 'Battery at 100%'
}
@test "display battery for car with some usage" {
## task 4
run jq -r -n '
include "remote-control-car";
new_remote_control_car
| .battery_percentage -= 40
| display_battery
'
assert_success
assert_output 'Battery at 60%'
}
@test "display battery for car with empty battery" {
## task 4
run jq -r -n '
include "remote-control-car";
new_remote_control_car
| .battery_percentage = 0
| display_battery
'
assert_success
assert_output 'Battery empty'
}
@test "drive a new car" {
## task 5
run jq -n '
include "remote-control-car";
new_remote_control_car | drive
'
assert_success
assert_key_value 99 "battery_percentage"
assert_key_value 20 "distance_driven_in_meters"
}
@test "drive a car with a dead battery" {
## task 6
run jq -n '
include "remote-control-car";
new_remote_control_car
| drive
| .battery_percentage = 0
| drive
'
assert_success
assert_key_value 0 "battery_percentage"
assert_key_value 20 "distance_driven_in_meters"
}
# vim: sw=4 ts=8