Exercism/bash/bob/bob.bats
2023-04-28 20:30:04 +02:00

202 lines
4.7 KiB
Bash

#!/usr/bin/env bats
load bats-extra
# local version: 1.6.0.0
@test "stating something" {
#[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh 'Tom-ay-to, tom-aaaah-to.'
assert_success
assert_output "Whatever."
}
@test "shouting" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh 'WATCH OUT!'
assert_success
assert_output "Whoa, chill out!"
}
@test "shouting gibberish" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh 'FCECDFCAAB'
assert_success
assert_output "Whoa, chill out!"
}
@test "asking a question" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh 'Does this cryogenic chamber make me look fat?'
assert_success
assert_output "Sure."
}
@test "asking a numeric question" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh 'You are, what, like 15?'
assert_success
assert_output "Sure."
}
@test "asking gibberish" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh 'fffbbcbeab?'
assert_success
assert_output "Sure."
}
@test "talking forcefully" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh "Hi there!"
assert_success
assert_output "Whatever."
}
@test "using acronyms in regular speech" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh "It's OK if you don't want to go work for NASA."
assert_success
assert_output "Whatever."
}
@test "forceful question" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh "WHAT'S GOING ON?"
assert_success
assert_output "Calm down, I know what I'm doing!"
}
@test "shouting numbers" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh '1, 2, 3 GO!'
assert_success
assert_output "Whoa, chill out!"
}
@test "no letters" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh '1, 2, 3'
assert_success
assert_output "Whatever."
}
@test "question with no letters" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh '4?'
assert_success
assert_output "Sure."
}
@test "shouting with special characters" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh 'ZOMG THE %^*@#$(*^ ZOMBIES ARE COMING!!11!!1!'
assert_success
assert_output "Whoa, chill out!"
}
@test "shouting with no exclamation mark" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh 'I HATE THE DENTIST'
assert_success
assert_output "Whoa, chill out!"
}
@test "statement containing question mark" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh 'Ending with ? means a question.'
assert_success
assert_output "Whatever."
}
@test "non-letters with question" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh ':) ?'
assert_success
assert_output "Sure."
}
@test "prattling on" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh 'Wait! Hang on. Are you going to be OK?'
assert_success
assert_output "Sure."
}
@test "silence" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh ''
assert_success
assert_output "Fine. Be that way!"
}
@test "prolonged silence" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh ' '
assert_success
assert_output "Fine. Be that way!"
}
@test "alternate silence" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh $'\t\t\t\t\t\t\t\t\t\t'
assert_success
assert_output "Fine. Be that way!"
}
@test "multiple line question" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh $'\nDoes this cryogenic chamber make me look fat?\nNo'
assert_success
assert_output "Whatever."
}
@test "starting with whitespace" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh ' hmmmmmmm...'
assert_success
assert_output "Whatever."
}
@test "ending with whitespace" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh 'Okay if like my spacebar quite a bit? '
assert_success
assert_output "Sure."
}
# This test might act differently depending on your platform
@test "other whitespace" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh $'\n\r \t'
assert_success
assert_output "Fine. Be that way!"
}
@test "non-question ending with whitespace" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh 'This is a statement ending with whitespace '
assert_success
assert_output "Whatever."
}
@test "no input is silence" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh
assert_success
assert_output "Fine. Be that way!"
}
# bash-specific tests
@test "yelling a filename expansion" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh '*READ* !'
assert_success
assert_output "Whoa, chill out!"
}
@test "asking a filename expansion" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run bash bob.sh 'bob???'
assert_success
assert_output "Sure."
}