@@ -2,6 +2,7 @@ var expect = require("expect.js"),
22detectStrictMode = require ( "../lib/detectStrictMode.js" ) ;
33
44describe ( "detectStrictMode" , function ( ) {
5+
56it ( "should detect all valid uses of \"use strict\";" , function ( ) {
67expect ( detectStrictMode ( '"use strict";' ) ) . to . be ( true ) ;
78expect ( detectStrictMode ( "'use strict';" ) ) . to . be ( true ) ;
@@ -11,13 +12,22 @@ describe("detectStrictMode", function () {
1112expect ( detectStrictMode ( '"use strict"\r\n' ) ) . to . be ( true ) ;
1213expect ( detectStrictMode ( '"use strict" ; test();' ) ) . to . be ( true ) ;
1314} ) ;
15+
16+ it ( "should be allowed to place comments before \"use strict\";" , function ( ) {
17+ expect ( detectStrictMode ( '// some comment\n"use strict";' ) ) . to . be ( true ) ;
18+ expect ( detectStrictMode ( '/* yo! */"use strict"; /* another comment */' ) ) . to . be ( true ) ;
19+ expect ( detectStrictMode ( ' // yes yo\r\n\r\n\r\n /*oh yoh*/\r\n//oh snap!\r /* yoh! */"use strict";' ) ) . to . be ( true ) ;
20+ } ) ;
21+
1422it ( "should not detect invalid uses of \"use strict\";" , function ( ) {
1523expect ( detectStrictMode ( '" use strict ";' ) ) . to . be ( false ) ;
1624expect ( detectStrictMode ( '"use strict".replace("use", "fail");' ) ) . to . be ( false ) ;
1725expect ( detectStrictMode ( '"use strict" .replace("use", "fail");' ) ) . to . be ( false ) ;
1826expect ( detectStrictMode ( ';"use strict";' ) ) . to . be ( false ) ;
1927} ) ;
28+
2029it ( "should not detect \"use strict\"; if it occurs in some nested function" , function ( ) {
2130expect ( detectStrictMode ( 'function () {"use strict";}' ) ) . to . be ( false ) ;
2231} ) ;
23- } ) ;
32+
33+ } ) ;