Files
emdash/test.sh
T
2025-08-15 00:19:06 -05:00

115 lines
6.0 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/sh
# Portable test runner (no associative arrays required)
API_URL="${API_URL:-http://localhost:3000/emdash}"
# Detect a version-aware sort if available; fall back to plain sort
if sort -V </dev/null >/dev/null 2>&1; then
SORT_CMD='sort -V'
else
SORT_CMD='sort'
fi
# --- Key/Value dataset (TAB-separated): key<TAB>value ---
DATA='
parenthetical_1 My sister — who never cooks — made dinner last night.
parenthetical_2 The car — a bright red convertible — caught everyones attention.
parenthetical_3 This book — my all-time favorite — never gets old.
parenthetical_4 We met John — our old college roommate — at the reunion.
parenthetical_5 The plan — though risky — might just work.
suddenbreak_1 I thought it was a great idea — until I heard the cost.
suddenbreak_2 We were going to leave early — but the rain kept us inside.
suddenbreak_3 She almost told him the truth — and then decided against it.
suddenbreak_4 I started walking toward the door — then stopped.
suddenbreak_5 He was about to sign the contract — when the phone rang.
appositive_1 She is an expert — a true authority in her field.
appositive_2 Hes my best friend — the person I trust most.
appositive_3 This is the real problem — the lack of communication.
appositive_4 Thats the challenge — getting everyone to agree.
appositive_5 Heres your reward — an extra day off.
summary_1 Long nights, endless rehearsals, countless cups of coffee — all for opening night.
summary_2 Broken glass, a smashed door, missing valuables — it was clearly a break-in.
summary_3 Late trains, heavy traffic, bad weather — today was not my day.
summary_4 Jeans, T-shirts, sneakers — his wardrobe never changed.
summary_5 Pain, sweat, and hard work — thats what built this company.
listintro_1 We need several things — bread, milk, eggs, and butter.
listintro_2 She packed everything — sunscreen, towels, snacks, and water bottles.
listintro_3 The class will cover three topics — history, geography, and culture.
listintro_4 He ordered a variety of drinks — coffee, tea, soda, and juice.
listintro_5 They brought the essentials — maps, flashlights, and first-aid kits.
interrupt_1 “I was just about to—”
interrupt_2 “If you think Im going to—”
interrupt_3 “Wait, I didnt mean—”
interrupt_4 “Dont you dare—”
interrupt_5 “I was trying to say—”
dramaticpause_1 And the winner is — Michael.
dramaticpause_2 The answer to your question is — yes.
dramaticpause_3 The person behind it all was — my own brother.
dramaticpause_4 The solution is simple — work together.
dramaticpause_5 Our biggest competitor is — ourselves.
internalcommas_1 She laughed, cried, and shouted — but she never gave up.
internalcommas_2 They came early, stayed late, and worked hard — yet still missed the deadline.
internalcommas_3 He was tired, hungry, and sore — and still kept running.
internalcommas_4 The team played well, passed accurately, and defended strongly — until the final minutes.
internalcommas_5 I planned, packed, and saved — only to have the trip canceled.
namely_1 Theres one thing I cant stand — dishonesty.
namely_2 He has one true passion — music.
namely_3 Our goal is clear — success.
namely_4 This is my greatest fear — failure.
namely_5 She only wants one thing — respect.
pauseemphasis_1 The recipe — though simple — is delicious.
pauseemphasis_2 That trip — despite the rain — was unforgettable.
pauseemphasis_3 The meeting — if it happens — could change everything.
pauseemphasis_4 Her response — as expected — was sarcastic.
pauseemphasis_5 The project — while behind schedule — will still be completed.
listinlist_1 We traveled to Paris, France; Rome, Italy; and Berlin, Germany — all in one summer.
listinlist_2 The menu included pasta, salad, and breadsticks; steak, potatoes, and vegetables — everything we could want.
listinlist_3 They visited Chicago, Illinois; Denver, Colorado; and Austin, Texas — and still had time for more.
listinlist_4 The tour covered Madrid, Spain; Lisbon, Portugal; and Dublin, Ireland — a whirlwind trip.
listinlist_5 We met clients from Tokyo, Japan; Seoul, South Korea; and Beijing, China — all in the same week.
daterange_1 Office hours are 9:00 a.m.—5:00 p.m.
daterange_2 The sale runs June 1—June 15.
daterange_3 The conference is scheduled for March 10—March 14.
daterange_4 The course is offered September—December.
daterange_5 The store is open Monday—Saturday.
attribution_1 “The best way out is always through.” — Robert Frost
attribution_2 “Do or do not, there is no try.” — Yoda
attribution_3 “Injustice anywhere is a threat to justice everywhere.” — Martin Luther King Jr.
attribution_4 “I think, therefore I am.” — René Descartes
attribution_5 “The only thing we have to fear is fear itself.” — Franklin D. Roosevelt
punchend_1 I was ready to forgive — until he laughed.
punchend_2 We almost won — if not for that last-minute mistake.
punchend_3 She looked happy — until she saw the bill.
punchend_4 He was about to say yes — when the phone rang.
punchend_5 I thought we were friends — until you lied to me.
'
echo "Running tests..."
# Print DATA, strip empty lines, sort by key, then read lines
printf "%s" "$DATA" | awk 'NF' | $SORT_CMD |
while IFS="$(printf '\t')" read -r key text; do
# Safety: skip if no key or text
[ -z "$key" ] && continue
[ -z "$text" ] && continue
echo "-----------------------------------"
echo "Testing [$key]: $text"
# Hit API with URL-encoded text
response="$(curl -s -G --data-urlencode "text=$text" "$API_URL")"
# Pretty-print JSON if jq exists AND response is valid JSON
if command -v jq >/dev/null 2>&1 && printf '%s' "$response" | jq -e . >/dev/null 2>&1; then
printf '%s' "$response" | jq '.original, .result'
else
printf '%s\n' "$response"
if ! command -v jq >/dev/null 2>&1; then
echo "(Install jq for better formatting)"
fi
fi
done
echo "-----------------------------------"
echo "Tests complete."