Repo Browser

bashcards/bashcards-bashcards
Card bundle: cards/076196934745--test

Front / Back (click to flip)

front
back
Click card to view front/back

Raw Script

#!/usr/bin/env bash
set +e
tt="/dev/tty";[[ -r "$tt" && -w "$tt" ]]||tt=""
p(){ [[ -n "$tt" ]]&&printf "%b" "$1" >"$tt"||printf "%b" "$1"; }
r(){ local t=""; if [[ -n "$tt" ]]; then IFS= read -r t <"$tt" || t=""; else IFS= read -r t || t=""; fi; printf "%s" "$t"; }

W=60
deck="EDU";subject="EDU";
topic="Software Testing Basics";
subtitle="Introduction to Testing";
note="Testing is like checking your homework to catch mistakes early. Whether you are a kid or an adult, learning to test helps make software safer and better.";
cl(){ printf "\033[2J\033[H"; }
bar(){ printf "%s\n" "$(printf "%*s" "$W" "" | tr " " "=")"; }
row(){ printf "| %-*.*s |\n" "$((W-4))" "$((W-4))" "$1"; }
wrap(){
  local txt="$1" max=$((W-4)) chunk rest cut
  while [[ -n "$txt" ]]; do
    if [[ ${#txt} -le $max ]]; then row "$txt"; break; fi
    chunk=${txt:0:$max}
    rest=${txt:$max}
    if [[ "$chunk" =~ (.+)[[:space:]] ]]; then
      cut=${BASH_REMATCH[1]}
      row "$cut"
      txt="${txt:${#cut}}"; txt="${txt#" "}";
    else
      row "$chunk"
      txt="$rest"
    fi
  done
}
pause(){ p "Press Enter to continue: "; r >/dev/null; }

menu(){
  cl
  bar; row "$deck • $subject"; bar
  wrap "$topic"
  wrap "$subtitle"
  if [[ -n "$note" ]]; then wrap "Tip: $note"; fi
  bar
  row "1) OVERVIEW"
  row "2) STEPS"
  row "3) TERMINOLOGY"
  row "q) EXIT"
  bar
  p "> "
}

page_OVERVIEW(){
  cl
  bar; row "OVERVIEW"; bar
  local s
  p=(
"Testing checks if software works correctly."
"It helps find and fix errors early."
"Testing improves software quality and reliability."
"There are different types of tests for different needs."
"Automated tests run code checks automatically."
"Manual tests involve human checking and feedback."
)
  for s in "${p[@]}"; do wrap "$s"; done
  bar
  pause
}

page_STEPS(){
  cl
  bar; row "STEPS"; bar
  local s
  p=(
"Understand the purpose of testing in software development."
"Learn common types of tests: unit, integration, system, acceptance."
"Write simple test cases to check small parts of code."
"Run tests and observe results carefully."
"Fix any problems found during testing."
"Repeat tests after changes to ensure stability."
)
  for s in "${p[@]}"; do wrap "$s"; done
  bar
  pause
}

page_TERMINOLOGY(){
  cl
  bar; row "TERMINOLOGY"; bar
  local s
  p=(
"Test Case — a set of conditions to check software behavior"
"Bug — an error or flaw in software"
"Unit Test — testing a small piece of code independently"
"Integration Test — testing combined parts of software"
"System Test — testing the complete software system"
"Acceptance Test — checking if software meets user needs"
"Automated Test — tests run by software tools without manual effort"
"Manual Test — tests performed by a person"
)
  for s in "${p[@]}"; do wrap "$s"; done
  bar
  pause
}

while true; do
  menu
  read -r choice < "${tt:-/dev/stdin}" || choice=""
  case "$choice" in
    1) page_OVERVIEW ;;
    2) page_STEPS ;;
    3) page_TERMINOLOGY ;;
    q|Q) cl; bar; row "CARD CLOSED"; bar; p "\n"; break ;;
    *) cl; bar; row "Select 1-3 or q"; bar; pause ;;
  esac
done

QR Payload

#!/usr/bin/env bash
set -euo pipefail;bash -c $'set +e\ntt="/dev/tty";[[ -r "$tt" && -w "$tt" ]]||tt=""\np(){ [[ -n "$tt" ]]&&printf "%b" "$1" >"$tt"||printf "%b" "$1"; }\nr(){ local t=""; if [[ -n "$tt" ]]; then IFS= read -r t <"$tt" || t=""; else IFS= read -r t || t=""; fi; printf "%s" "$t"; }\nW=60\ndeck="EDU";subject="EDU";\ntopic="Software Testing Basics";\nsubtitle="Introduction to Testing";\nnote="Testing is like checking your homework to catch mistakes early. Whether you are a kid or an adult, learning to test helps make software safer and better.";\ncl(){ printf "\\033[2J\\033[H"; }\nbar(){ printf "%s\\n" "$(printf "%*s" "$W" "" | tr " " "=")"; }\nrow(){ printf "| %-*.*s |\\n" "$((W-4))" "$((W-4))" "$1"; }\nwrap(){\n  local txt="$1" max=$((W-4)) chunk rest cut\n  while [[ -n "$txt" ]]; do\n    if [[ ${#txt} -le $max ]]; then row "$txt"; break; fi\n    chunk=${txt:0:$max}\n    rest=${txt:$max}\n    if [[ "$chunk" =~ (.+)[[:space:]] ]]; then\n      cut=${BASH_REMATCH[1]}\n      row "$cut"\n      txt="${txt:${#cut}}"; txt="${txt#" "}";\n    else\n      row "$chunk"\n      txt="$rest"\n    fi\n  done\n}\npause(){ p "Press Enter to continue: "; r >/dev/null; }\nmenu(){\n  cl\n  bar; row "$deck • $subject"; bar\n  wrap "$topic"\n  wrap "$subtitle"\n  if [[ -n "$note" ]]; then wrap "Tip: $note"; fi\n  bar\n  row "1) OVERVIEW"\n  row "2) STEPS"\n  row "3) TERMINOLOGY"\n  row "q) EXIT"\n  bar\n  p "> "\n}\npage_OVERVIEW(){\n  cl\n  bar; row "OVERVIEW"; bar\n  local s\n  p=(\n"Testing checks if software works correctly."\n"It helps find and fix errors early."\n"Testing improves software quality and reliability."\n"There are different types of tests for different needs."\n"Automated tests run code checks automatically."\n"Manual tests involve human checking and feedback."\n)\n  for s in "${p[@]}"; do wrap "$s"; done\n  bar\n  pause\n}\npage_STEPS(){\n  cl\n  bar; row "STEPS"; bar\n  local s\n  p=(\n"Understand the purpose of testing in software development."\n"Learn common types of tests: unit, integration, system, acceptance."\n"Write simple test cases to check small parts of code."\n"Run tests and observe results carefully."\n"Fix any problems found during testing."\n"Repeat tests after changes to ensure stability."\n)\n  for s in "${p[@]}"; do wrap "$s"; done\n  bar\n  pause\n}\npage_TERMINOLOGY(){\n  cl\n  bar; row "TERMINOLOGY"; bar\n  local s\n  p=(\n"Test Case — a set of conditions to check software behavior"\n"Bug — an error or flaw in software"\n"Unit Test — testing a small piece of code independently"\n"Integration Test — testing combined parts of software"\n"System Test — testing the complete software system"\n"Acceptance Test — checking if software meets user needs"\n"Automated Test — tests run by software tools without manual effort"\n"Manual Test — tests performed by a person"\n)\n  for s in "${p[@]}"; do wrap "$s"; done\n  bar\n  pause\n}\nwhile true; do\n  menu\n  read -r choice < "${tt:-/dev/stdin}" || choice=""\n  case "$choice" in\n    1) page_OVERVIEW ;;\n    2) page_STEPS ;;\n    3) page_TERMINOLOGY ;;\n    q|Q) cl; bar; row "CARD CLOSED"; bar; p "\\n"; break ;;\n    *) cl; bar; row "Select 1-3 or q"; bar; pause ;;\n  esac\ndone\n'
NameTypeSize
README.mdfile1,056
assetsdir