: ${TMPDIR:=/var/tmp}
cd $TMPDIR

matchfunc()
{
	echo == LANG=$LANG ==

	touch a p
	echo [[:alpha:]
	rm a p

	case l in
	[[:alpha:])	echo bad 1;;
	*)		echo ok 1;;
	esac

	touch '[a' '[x'
	echo [[:alpha:]
	rm '[a'
	echo [[:alpha:]
	rm '[x'

	case [a in
	[[:alpha:])	echo ok 2;;
	*)		echo bad 2;;
	esac

	case [x in
	[[:alpha:])	echo bad 3;;
	*)		echo ok 3;;
	esac
}

echo invalid bracket expression
export LANG=C
matchfunc

export LANG=en_US.UTF-8
matchfunc

unset -f matchfunc

matchfunc()
{
	echo == LANG=$LANG ==

	case a] in
	[[:aleph:]])	echo bad 1;;
	*)		echo ok 1;;
	esac

	case a in
	[[:aleph:]])	echo bad 2;;
	*)		echo ok 2;;
	esac

	case a] in
	[[:"alpha":]])	echo bad 3;;
	*)		echo ok 3;;
	esac

	case a in
	[[:"alpha":]])	echo bad 4;;
	*)		echo ok 4;;
	esac

	case a in
	[abc[:foo:]])	echo ok 5;;
	*)		echo bad 5 ;;
	esac

	case a in
	[[:foo:]abc])	echo ok 6;;
	*)		echo bad 6 ;;
	esac
}

echo invalid character class
export LANG=C
matchfunc

export LANG=en_US.UTF-8
matchfunc

unset -f matchfunc

matchfunc()
{
	echo == LANG=$LANG ==

	case h in
	[[.hyphen.])	echo bad 1;;
	*)		echo ok 1;;
	esac

	case - in
	[[.hyphen.]])	echo ok 2;;
	*)		echo bad 2;;
	esac

	case slash in
	[[.slash.]])	echo bad 3;;
	*)		echo ok 3;;
	esac

	case a in
	[abc[.nonsense.]])	echo ok 4;;
	*)		echo bad 4 ;;
	esac

	case a in
	[[.nonsense.]abc])	echo ok 5;;
	*)		echo bad 5 ;;
	esac
}

echo invalid collating symbols

export LANG=C
matchfunc

export LANG=en_US.UTF-8
matchfunc
