Actually POSIX does not recognize double brackets [1]:
"The KornShell-derived conditional command (double bracket [[]]) was removed from the shell command language description in an early proposal. Objections were raised that the real problem is misuse of the test command ( [), and putting it into the shell is the wrong way to fix the problem. Instead, proper documentation and a new shell reserved word ( !) are sufficient."
The entire section on test is full of advice on the proper use of test(1).
[1] http://pubs.opengroup.org/onlinepubs/9699919799/utilities/te...