# Test basic add and list
abbr __abbr1 alpha beta gamma
abbr | grep __abbr1

# Erasing one that doesn't exist should do nothing
abbr --erase NOT_AN_ABBR
abbr | grep __abbr1

# Adding existing one should be idempotent
abbr __abbr1 alpha beta gamma
abbr | grep __abbr1

# Replacing
abbr __abbr1 delta 
abbr | grep __abbr1

# -s and --show tests
abbr -s | grep __abbr1
abbr --show | grep __abbr1

# Test erasing
abbr -e __abbr1
abbr | grep __abbr1

# Ensure we escape special characters on output
abbr '~__abbr2' '$xyz'
abbr | grep __abbr2
abbr -e '~__abbr2'

# Ensure we handle leading dashes in abbreviation names properly
abbr -- '--__abbr3' 'xyz'
abbr | grep __abbr3
abbr -e -- '--__abbr3'

# Ensure we are not recognizing later "=" as separators
abbr d2 env a=b banana
abbr -l | string match -q d2; or echo "= test failed"

abbr "a b c" "d e f"; or true