build: Enable qunit/no-assert-equal and enforce
authorEd Sanders <esanders@wikimedia.org>
Wed, 6 Jun 2018 10:44:23 +0000 (11:44 +0100)
committerEd Sanders <esanders@wikimedia.org>
Wed, 6 Jun 2018 10:49:12 +0000 (11:49 +0100)
This is the equivalent of the '===' rule ("eqeqeq") in eslint core.

Change-Id: I1e6ea8bc1e86c6629ebe938f1b4a6bd288bcfcf7

38 files changed:
tests/qunit/.eslintrc.json
tests/qunit/data/generateJqueryMsgData.php
tests/qunit/data/testrunner.js
tests/qunit/suites/resources/jquery/jquery.accessKeyLabel.test.js
tests/qunit/suites/resources/jquery/jquery.colorUtil.test.js
tests/qunit/suites/resources/jquery/jquery.hidpi.test.js
tests/qunit/suites/resources/jquery/jquery.highlightText.test.js
tests/qunit/suites/resources/jquery/jquery.lengthLimit.test.js
tests/qunit/suites/resources/jquery/jquery.makeCollapsible.test.js
tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js
tests/qunit/suites/resources/jquery/jquery.textSelection.test.js
tests/qunit/suites/resources/mediawiki.api/mediawiki.api.category.test.js
tests/qunit/suites/resources/mediawiki.api/mediawiki.api.edit.test.js
tests/qunit/suites/resources/mediawiki.api/mediawiki.api.parse.test.js
tests/qunit/suites/resources/mediawiki.api/mediawiki.api.test.js
tests/qunit/suites/resources/mediawiki.api/mediawiki.api.watch.test.js
tests/qunit/suites/resources/mediawiki.rcfilters/UriProcessor.test.js
tests/qunit/suites/resources/mediawiki.rcfilters/dm.FilterItem.test.js
tests/qunit/suites/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js
tests/qunit/suites/resources/mediawiki.rcfilters/dm.SavedQueriesModel.test.js
tests/qunit/suites/resources/mediawiki.rcfilters/dm.SavedQueryItemModel.test.js
tests/qunit/suites/resources/mediawiki.widgets/MediaSearch/mediawiki.widgets.APIResultsQueue.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.RegExp.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.String.byteLength.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.String.trimByteLength.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.experiments.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.html.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.inspect.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.jscompat.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.loader.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.user.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js

index b741204..e6d2511 100644 (file)
@@ -14,6 +14,7 @@
                "operator-linebreak": 0,
                "quote-props": [ "error", "as-needed" ],
                "valid-jsdoc": 0,
                "operator-linebreak": 0,
                "quote-props": [ "error", "as-needed" ],
                "valid-jsdoc": 0,
+               "qunit/no-assert-equal": "error",
                "qunit/no-early-return": "error",
                "qunit/no-negated-ok": "error",
                "qunit/require-expect": 0,
                "qunit/no-early-return": "error",
                "qunit/no-negated-ok": "error",
                "qunit/require-expect": 0,
index e4f87f8..a85e41a 100644 (file)
@@ -22,7 +22,7 @@
                        QUnit.stop();
                        getMwLanguage( test.lang, function ( langClass ) {
                                var parser = new mw.jqueryMsg.Parser( { language: langClass } );
                        QUnit.stop();
                        getMwLanguage( test.lang, function ( langClass ) {
                                var parser = new mw.jqueryMsg.Parser( { language: langClass } );
-                               assert.equal(
+                               assert.strictEqual(
                                        parser.parse( test.key, test.args ).html(),
                                        test.result,
                                        test.name
                                        parser.parse( test.key, test.args ).html(),
                                        test.result,
                                        test.name
index 9074aba..d8972ab 100644 (file)
        } ) );
 
        QUnit.test( 'Setup', function ( assert ) {
        } ) );
 
        QUnit.test( 'Setup', function ( assert ) {
-               assert.equal( mw.html.escape( 'foo' ), 'mocked', 'setup() callback was ran.' );
-               assert.equal( mw.config.get( 'testVar' ), 'foo', 'config object applied' );
-               assert.equal( mw.messages.get( 'testMsg' ), 'Foo.', 'messages object applied' );
+               assert.strictEqual( mw.html.escape( 'foo' ), 'mocked', 'setup() callback was ran.' );
+               assert.strictEqual( mw.config.get( 'testVar' ), 'foo', 'config object applied' );
+               assert.strictEqual( mw.messages.get( 'testMsg' ), 'Foo.', 'messages object applied' );
 
                mw.config.set( 'testVar', 'bar' );
                mw.messages.set( 'testMsg', 'Bar.' );
        } );
 
        QUnit.test( 'Teardown', function ( assert ) {
 
                mw.config.set( 'testVar', 'bar' );
                mw.messages.set( 'testMsg', 'Bar.' );
        } );
 
        QUnit.test( 'Teardown', function ( assert ) {
-               assert.equal( mw.config.get( 'testVar' ), 'foo', 'config object restored and re-applied after test()' );
-               assert.equal( mw.messages.get( 'testMsg' ), 'Foo.', 'messages object restored and re-applied after test()' );
+               assert.strictEqual( mw.config.get( 'testVar' ), 'foo', 'config object restored and re-applied after test()' );
+               assert.strictEqual( mw.messages.get( 'testMsg' ), 'Foo.', 'messages object restored and re-applied after test()' );
        } );
 
        QUnit.test( 'Loader status', function ( assert ) {
        } );
 
        QUnit.test( 'Loader status', function ( assert ) {
        QUnit.module( 'testrunner-after', QUnit.newMwEnvironment() );
 
        QUnit.test( 'Teardown', function ( assert ) {
        QUnit.module( 'testrunner-after', QUnit.newMwEnvironment() );
 
        QUnit.test( 'Teardown', function ( assert ) {
-               assert.equal( mw.html.escape( '<' ), '&lt;', 'teardown() callback was ran.' );
-               assert.equal( mw.config.get( 'testVar' ), null, 'config object restored to live in next module()' );
-               assert.equal( mw.messages.get( 'testMsg' ), null, 'messages object restored to live in next module()' );
+               assert.strictEqual( mw.html.escape( '<' ), '&lt;', 'teardown() callback was ran.' );
+               assert.strictEqual( mw.config.get( 'testVar' ), null, 'config object restored to live in next module()' );
+               assert.strictEqual( mw.messages.get( 'testMsg' ), null, 'messages object restored to live in next module()' );
        } );
 
        QUnit.module( 'testrunner-each', {
        } );
 
        QUnit.module( 'testrunner-each', {
                mw.html = null;
        } );
        QUnit.test( 'afterEach', function ( assert ) {
                mw.html = null;
        } );
        QUnit.test( 'afterEach', function ( assert ) {
-               assert.equal( mw.html.escape( '<' ), '&lt;', 'afterEach() ran' );
+               assert.strictEqual( mw.html.escape( '<' ), '&lt;', 'afterEach() ran' );
        } );
 
        QUnit.module( 'testrunner-each-compat', {
        } );
 
        QUnit.module( 'testrunner-each-compat', {
                mw.html = null;
        } );
        QUnit.test( 'teardown', function ( assert ) {
                mw.html = null;
        } );
        QUnit.test( 'teardown', function ( assert ) {
-               assert.equal( mw.html.escape( '<' ), '&lt;', 'teardown() ran' );
+               assert.strictEqual( mw.html.escape( '<' ), '&lt;', 'teardown() ran' );
        } );
 
        // Regression test for 'this.sandbox undefined' error, fixed by
        } );
 
        // Regression test for 'this.sandbox undefined' error, fixed by
index e4b6157..c064275 100644 (file)
@@ -51,7 +51,7 @@
        QUnit.test( 'getAccessKeyPrefix', function ( assert ) {
                var i;
                for ( i = 0; i < getAccessKeyPrefixTestData.length; i++ ) {
        QUnit.test( 'getAccessKeyPrefix', function ( assert ) {
                var i;
                for ( i = 0; i < getAccessKeyPrefixTestData.length; i++ ) {
-                       assert.equal( $.fn.updateTooltipAccessKeys.getAccessKeyPrefix( {
+                       assert.strictEqual( $.fn.updateTooltipAccessKeys.getAccessKeyPrefix( {
                                userAgent: getAccessKeyPrefixTestData[ i ][ 0 ],
                                platform: getAccessKeyPrefixTestData[ i ][ 1 ]
                        } ), getAccessKeyPrefixTestData[ i ][ 2 ], 'Correct prefix for ' + getAccessKeyPrefixTestData[ i ][ 0 ] );
                                userAgent: getAccessKeyPrefixTestData[ i ][ 0 ],
                                platform: getAccessKeyPrefixTestData[ i ][ 1 ]
                        } ), getAccessKeyPrefixTestData[ i ][ 2 ], 'Correct prefix for ' + getAccessKeyPrefixTestData[ i ][ 0 ] );
@@ -75,7 +75,7 @@
                        $input = $( makeInput( oldTitle ) );
                        $( '#qunit-fixture' ).append( $input );
                        newTitle = $input.updateTooltipAccessKeys().prop( 'title' );
                        $input = $( makeInput( oldTitle ) );
                        $( '#qunit-fixture' ).append( $input );
                        newTitle = $input.updateTooltipAccessKeys().prop( 'title' );
-                       assert.equal( newTitle, 'Title', 'title="' + oldTitle + '"' );
+                       assert.strictEqual( newTitle, 'Title', 'title="' + oldTitle + '"' );
                }
        } );
 
                }
        } );
 
@@ -87,7 +87,7 @@
                        $input = $( makeInput( oldTitle, 'a' ) );
                        $( '#qunit-fixture' ).append( $input );
                        newTitle = $input.updateTooltipAccessKeys().prop( 'title' );
                        $input = $( makeInput( oldTitle, 'a' ) );
                        $( '#qunit-fixture' ).append( $input );
                        newTitle = $input.updateTooltipAccessKeys().prop( 'title' );
-                       assert.equal( newTitle, 'Title [test-a]', 'title="' + oldTitle + '"' );
+                       assert.strictEqual( newTitle, 'Title [test-a]', 'title="' + oldTitle + '"' );
                }
                $.fn.updateTooltipAccessKeys.setTestMode( false );
        } );
                }
                $.fn.updateTooltipAccessKeys.setTestMode( false );
        } );
                $label = $( '#qunit-fixture label' );
                $input = $( '#qunit-fixture input' );
                $input.updateTooltipAccessKeys();
                $label = $( '#qunit-fixture label' );
                $input = $( '#qunit-fixture input' );
                $input.updateTooltipAccessKeys();
-               assert.equal( $input.prop( 'title' ), '', 'No title attribute added to input element.' );
-               assert.equal( $label.prop( 'title' ), 'Title [test-a]', 'title updated for associated label element.' );
+               assert.strictEqual( $input.prop( 'title' ), '', 'No title attribute added to input element.' );
+               assert.strictEqual( $label.prop( 'title' ), 'Title [test-a]', 'title updated for associated label element.' );
                $.fn.updateTooltipAccessKeys.setTestMode( false );
        } );
 
                $.fn.updateTooltipAccessKeys.setTestMode( false );
        } );
 
                $label = $( '#qunit-fixture label' );
                $input = $( '#qunit-fixture input' );
                $input.updateTooltipAccessKeys();
                $label = $( '#qunit-fixture label' );
                $input = $( '#qunit-fixture input' );
                $input.updateTooltipAccessKeys();
-               assert.equal( $input.prop( 'title' ), '', 'No title attribute added to input element.' );
-               assert.equal( $label.prop( 'title' ), 'Title [test-a]', 'title updated for associated label element.' );
+               assert.strictEqual( $input.prop( 'title' ), '', 'No title attribute added to input element.' );
+               assert.strictEqual( $label.prop( 'title' ), 'Title [test-a]', 'title updated for associated label element.' );
                $.fn.updateTooltipAccessKeys.setTestMode( false );
        } );
 
                $.fn.updateTooltipAccessKeys.setTestMode( false );
        } );
 
index d6208e9..bd6e7b2 100644 (file)
@@ -55,9 +55,9 @@
        QUnit.test( 'getColorBrightness', function ( assert ) {
                var a, b;
                a = $.colorUtil.getColorBrightness( 'red', +0.1 );
        QUnit.test( 'getColorBrightness', function ( assert ) {
                var a, b;
                a = $.colorUtil.getColorBrightness( 'red', +0.1 );
-               assert.equal( a, 'rgb(255,50,50)', 'Start with named color "red", brighten 10%' );
+               assert.strictEqual( a, 'rgb(255,50,50)', 'Start with named color "red", brighten 10%' );
 
                b = $.colorUtil.getColorBrightness( 'rgb(200,50,50)', -0.2 );
 
                b = $.colorUtil.getColorBrightness( 'rgb(200,50,50)', -0.2 );
-               assert.equal( b, 'rgb(118,29,29)', 'Start with rgb string "rgb(200,50,50)", darken 20%' );
+               assert.strictEqual( b, 'rgb(118,29,29)', 'Start with rgb string "rgb(200,50,50)", darken 20%' );
        } );
 }( jQuery ) );
        } );
 }( jQuery ) );
index 6a265eb..3f17ca5 100644 (file)
@@ -3,36 +3,36 @@
 
        QUnit.test( 'devicePixelRatio', function ( assert ) {
                var devicePixelRatio = $.devicePixelRatio();
 
        QUnit.test( 'devicePixelRatio', function ( assert ) {
                var devicePixelRatio = $.devicePixelRatio();
-               assert.equal( typeof devicePixelRatio, 'number', '$.devicePixelRatio() returns a number' );
+               assert.strictEqual( typeof devicePixelRatio, 'number', '$.devicePixelRatio() returns a number' );
        } );
 
        QUnit.test( 'bracketedDevicePixelRatio', function ( assert ) {
                var ratio = $.bracketedDevicePixelRatio();
        } );
 
        QUnit.test( 'bracketedDevicePixelRatio', function ( assert ) {
                var ratio = $.bracketedDevicePixelRatio();
-               assert.equal( typeof ratio, 'number', '$.bracketedDevicePixelRatio() returns a number' );
+               assert.strictEqual( typeof ratio, 'number', '$.bracketedDevicePixelRatio() returns a number' );
        } );
 
        QUnit.test( 'bracketDevicePixelRatio', function ( assert ) {
        } );
 
        QUnit.test( 'bracketDevicePixelRatio', function ( assert ) {
-               assert.equal( $.bracketDevicePixelRatio( 0.75 ), 1, '0.75 gives 1' );
-               assert.equal( $.bracketDevicePixelRatio( 1 ), 1, '1 gives 1' );
-               assert.equal( $.bracketDevicePixelRatio( 1.25 ), 1.5, '1.25 gives 1.5' );
-               assert.equal( $.bracketDevicePixelRatio( 1.5 ), 1.5, '1.5 gives 1.5' );
-               assert.equal( $.bracketDevicePixelRatio( 1.75 ), 2, '1.75 gives 2' );
-               assert.equal( $.bracketDevicePixelRatio( 2 ), 2, '2 gives 2' );
-               assert.equal( $.bracketDevicePixelRatio( 2.5 ), 2, '2.5 gives 2' );
-               assert.equal( $.bracketDevicePixelRatio( 3 ), 2, '3 gives 2' );
+               assert.strictEqual( $.bracketDevicePixelRatio( 0.75 ), 1, '0.75 gives 1' );
+               assert.strictEqual( $.bracketDevicePixelRatio( 1 ), 1, '1 gives 1' );
+               assert.strictEqual( $.bracketDevicePixelRatio( 1.25 ), 1.5, '1.25 gives 1.5' );
+               assert.strictEqual( $.bracketDevicePixelRatio( 1.5 ), 1.5, '1.5 gives 1.5' );
+               assert.strictEqual( $.bracketDevicePixelRatio( 1.75 ), 2, '1.75 gives 2' );
+               assert.strictEqual( $.bracketDevicePixelRatio( 2 ), 2, '2 gives 2' );
+               assert.strictEqual( $.bracketDevicePixelRatio( 2.5 ), 2, '2.5 gives 2' );
+               assert.strictEqual( $.bracketDevicePixelRatio( 3 ), 2, '3 gives 2' );
        } );
 
        QUnit.test( 'matchSrcSet', function ( assert ) {
                var srcset = 'onefive.png 1.5x, two.png 2x';
 
                // Nice exact matches
        } );
 
        QUnit.test( 'matchSrcSet', function ( assert ) {
                var srcset = 'onefive.png 1.5x, two.png 2x';
 
                // Nice exact matches
-               assert.equal( $.matchSrcSet( 1, srcset ), null, '1.0 gives no match' );
-               assert.equal( $.matchSrcSet( 1.5, srcset ), 'onefive.png', '1.5 gives match' );
-               assert.equal( $.matchSrcSet( 2, srcset ), 'two.png', '2 gives match' );
+               assert.strictEqual( $.matchSrcSet( 1, srcset ), null, '1.0 gives no match' );
+               assert.strictEqual( $.matchSrcSet( 1.5, srcset ), 'onefive.png', '1.5 gives match' );
+               assert.strictEqual( $.matchSrcSet( 2, srcset ), 'two.png', '2 gives match' );
 
                // Non-exact matches; should return the next-biggest specified
 
                // Non-exact matches; should return the next-biggest specified
-               assert.equal( $.matchSrcSet( 1.25, srcset ), null, '1.25 gives no match' );
-               assert.equal( $.matchSrcSet( 1.75, srcset ), 'onefive.png', '1.75 gives match to 1.5' );
-               assert.equal( $.matchSrcSet( 2.25, srcset ), 'two.png', '2.25 gives match to 2' );
+               assert.strictEqual( $.matchSrcSet( 1.25, srcset ), null, '1.25 gives no match' );
+               assert.strictEqual( $.matchSrcSet( 1.75, srcset ), 'onefive.png', '1.75 gives match to 1.5' );
+               assert.strictEqual( $.matchSrcSet( 2.25, srcset ), 'two.png', '2.25 gives match to 2' );
        } );
 }( jQuery ) );
        } );
 }( jQuery ) );
index 277ba3f..0e34e34 100644 (file)
 
                cases.forEach( function ( item ) {
                        $fixture = $( '<p>' ).text( item.text ).highlightText( item.highlight );
 
                cases.forEach( function ( item ) {
                        $fixture = $( '<p>' ).text( item.text ).highlightText( item.highlight );
-                       assert.equal(
+                       assert.strictEqual(
                                $fixture.html(),
                                // Re-parse to normalize
                                $( '<p>' ).html( item.expected ).html(),
                                $fixture.html(),
                                // Re-parse to normalize
                                $( '<p>' ).html( item.expected ).html(),
index 7117d1f..9d4f8dd 100644 (file)
@@ -55,7 +55,7 @@
                        // Simulate pressing keys for each of the sample characters
                        addChars( opt.$input, opt.sample );
 
                        // Simulate pressing keys for each of the sample characters
                        addChars( opt.$input, opt.sample );
 
-                       assert.equal(
+                       assert.strictEqual(
                                opt.$input.val(),
                                opt.expected,
                                'New value matches the expected string'
                                opt.$input.val(),
                                opt.expected,
                                'New value matches the expected string'
index d3f6533..df29ee6 100644 (file)
@@ -50,8 +50,8 @@
                        $content = $collapsible.find( '.mw-collapsible-content' ),
                        $toggle = $collapsible.find( '.mw-collapsible-toggle' );
 
                        $content = $collapsible.find( '.mw-collapsible-content' ),
                        $toggle = $collapsible.find( '.mw-collapsible-toggle' );
 
-               assert.equal( $content.length, 1, 'content is present' );
-               assert.equal( $content.find( $toggle ).length, 0, 'toggle is not a descendant of content' );
+               assert.strictEqual( $content.length, 1, 'content is present' );
+               assert.strictEqual( $content.find( $toggle ).length, 0, 'toggle is not a descendant of content' );
 
                assert.assertTrue( $content.is( ':visible' ), 'content is visible' );
 
 
                assert.assertTrue( $content.is( ':visible' ), 'content is visible' );
 
@@ -80,7 +80,7 @@
                        $contentRow = $collapsible.find( 'tr:last' ),
                        $toggle = $headerRow.find( 'td:last .mw-collapsible-toggle' );
 
                        $contentRow = $collapsible.find( 'tr:last' ),
                        $toggle = $headerRow.find( 'td:last .mw-collapsible-toggle' );
 
-               assert.equal( $toggle.length, 1, 'toggle is added to last cell of first row' );
+               assert.strictEqual( $toggle.length, 1, 'toggle is added to last cell of first row' );
 
                assert.assertTrue( $headerRow.is( ':visible' ), 'headerRow is visible' );
                assert.assertTrue( $contentRow.is( ':visible' ), 'contentRow is visible' );
 
                assert.assertTrue( $headerRow.is( ':visible' ), 'headerRow is visible' );
                assert.assertTrue( $contentRow.is( ':visible' ), 'contentRow is visible' );
                        $contentRow = $collapsible.find( 'tr:last' ),
                        $toggle = $caption.find( '.mw-collapsible-toggle' );
 
                        $contentRow = $collapsible.find( 'tr:last' ),
                        $toggle = $caption.find( '.mw-collapsible-toggle' );
 
-               assert.equal( $toggle.length, 1, 'toggle is added to the end of the caption' );
+               assert.strictEqual( $toggle.length, 1, 'toggle is added to the end of the caption' );
 
                assert.assertTrue( $caption.is( ':visible' ), 'caption is visible' );
                assert.assertTrue( $headerRow.is( ':visible' ), 'headerRow is visible' );
 
                assert.assertTrue( $caption.is( ':visible' ), 'caption is visible' );
                assert.assertTrue( $headerRow.is( ':visible' ), 'headerRow is visible' );
                        $contentItem = $collapsible.find( 'li:last' ),
                        $toggle = $toggleItem.find( '.mw-collapsible-toggle' );
 
                        $contentItem = $collapsible.find( 'li:last' ),
                        $toggle = $toggleItem.find( '.mw-collapsible-toggle' );
 
-               assert.equal( $toggle.length, 1, 'toggle is present, added inside new zeroth list item' );
+               assert.strictEqual( $toggle.length, 1, 'toggle is present, added inside new zeroth list item' );
 
                assert.assertTrue( $toggleItem.is( ':visible' ), 'toggleItem is visible' );
                assert.assertTrue( $contentItem.is( ':visible' ), 'contentItem is visible' );
 
                assert.assertTrue( $toggleItem.is( ':visible' ), 'toggleItem is visible' );
                assert.assertTrue( $contentItem.is( ':visible' ), 'contentItem is visible' );
                        '<div>' + loremIpsum + '</div>'
                );
 
                        '<div>' + loremIpsum + '</div>'
                );
 
-               assert.equal( $collapsible.data( 'mw-made-collapsible' ), true, 'mw-made-collapsible data present' );
+               assert.strictEqual( $collapsible.data( 'mw-made-collapsible' ), true, 'mw-made-collapsible data present' );
        } );
 
        QUnit.test( 'mw-collapsible added when missing', function ( assert ) {
        } );
 
        QUnit.test( 'mw-collapsible added when missing', function ( assert ) {
                        ),
                        $toggleText = $collapsible.find( '.mw-collapsible-text' );
 
                        ),
                        $toggleText = $collapsible.find( '.mw-collapsible-text' );
 
-               assert.equal( $toggleText.text(), 'Collapse me!', 'data-collapsetext is respected' );
+               assert.strictEqual( $toggleText.text(), 'Collapse me!', 'data-collapsetext is respected' );
 
                $collapsible.on( 'afterCollapse.mw-collapsible', function () {
 
                $collapsible.on( 'afterCollapse.mw-collapsible', function () {
-                       assert.equal( $toggleText.text(), 'Expand me!', 'data-expandtext is respected' );
+                       assert.strictEqual( $toggleText.text(), 'Expand me!', 'data-expandtext is respected' );
                } );
 
                $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
                } );
 
                $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
                        ),
                        $toggleText = $collapsible.find( '.mw-collapsible-text' );
 
                        ),
                        $toggleText = $collapsible.find( '.mw-collapsible-text' );
 
-               assert.equal( $toggleText.text(), 'Collapse me!', 'options.collapseText is respected' );
+               assert.strictEqual( $toggleText.text(), 'Collapse me!', 'options.collapseText is respected' );
 
                $collapsible.on( 'afterCollapse.mw-collapsible', function () {
 
                $collapsible.on( 'afterCollapse.mw-collapsible', function () {
-                       assert.equal( $toggleText.text(), 'Expand me!', 'options.expandText is respected' );
+                       assert.strictEqual( $toggleText.text(), 'Expand me!', 'options.expandText is respected' );
                } );
 
                $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
                } );
 
                $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
                        ),
                        $toggleText = $collapsible.find( '.mw-collapsible-text' );
 
                        ),
                        $toggleText = $collapsible.find( '.mw-collapsible-text' );
 
-               assert.equal( $toggleText.text(), 'Toggle', 'predefined text remains' );
+               assert.strictEqual( $toggleText.text(), 'Toggle', 'predefined text remains' );
 
                $collapsible.on( 'afterCollapse.mw-collapsible', function () {
 
                $collapsible.on( 'afterCollapse.mw-collapsible', function () {
-                       assert.equal( $toggleText.text(), 'Show', 'predefined text is toggled' );
+                       assert.strictEqual( $toggleText.text(), 'Show', 'predefined text is toggled' );
 
                        $collapsible.on( 'afterExpand.mw-collapsible', function () {
 
                        $collapsible.on( 'afterExpand.mw-collapsible', function () {
-                               assert.equal( $toggleText.text(), 'Hide', 'predefined text is toggled back' );
+                               assert.strictEqual( $toggleText.text(), 'Hide', 'predefined text is toggled back' );
                        } );
 
                        $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
                        } );
 
                        $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
index 495ce74..69a5cec 100644 (file)
                );
                $table.data( 'tablesorter' ).sort( [] );
 
                );
                $table.data( 'tablesorter' ).sort( [] );
 
-               assert.equal(
+               assert.strictEqual(
                        $table.find( 'th.headerSortUp' ).length + $table.find( 'th.headerSortDown' ).length,
                        0,
                        'No sort specific sort classes addign to header cells'
                );
 
                        $table.find( 'th.headerSortUp' ).length + $table.find( 'th.headerSortDown' ).length,
                        0,
                        'No sort specific sort classes addign to header cells'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        $table.find( 'th' ).first().attr( 'title' ),
                        mw.msg( 'sort-ascending' ),
                        'First header cell has default title'
                );
 
                        $table.find( 'th' ).first().attr( 'title' ),
                        mw.msg( 'sort-ascending' ),
                        'First header cell has default title'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        $table.find( 'th' ).first().attr( 'title' ),
                        $table.find( 'th' ).last().attr( 'title' ),
                        'Both header cells\' titles match'
                        $table.find( 'th' ).first().attr( 'title' ),
                        $table.find( 'th' ).last().attr( 'title' ),
                        'Both header cells\' titles match'
                $cell = $table.find( 'tr:eq(0) > th:eq(0)' );
                $table.find( 'tr:eq(0) > th:eq(1)' ).click();
 
                $cell = $table.find( 'tr:eq(0) > th:eq(0)' );
                $table.find( 'tr:eq(0) > th:eq(1)' ).click();
 
-               assert.equal(
+               assert.strictEqual(
                        $cell.hasClass( 'headerSortUp' ) || $cell.hasClass( 'headerSortDown' ),
                        false,
                        'after sort: no class headerSortUp or headerSortDown'
                );
 
                        $cell.hasClass( 'headerSortUp' ) || $cell.hasClass( 'headerSortDown' ),
                        false,
                        'after sort: no class headerSortUp or headerSortDown'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        $cell.attr( 'title' ),
                        undefined,
                        'after sort: no title tag added'
                        $cell.attr( 'title' ),
                        undefined,
                        'after sort: no title tag added'
 
                $table.tablesorter();
 
 
                $table.tablesorter();
 
-               assert.equal(
+               assert.strictEqual(
                        $table.find( 'tr:eq(2) td:eq(1)' ).prop( 'rowSpan' ),
                        3,
                        'Rowspan not exploded'
                        $table.find( 'tr:eq(2) td:eq(1)' ).prop( 'rowSpan' ),
                        3,
                        'Rowspan not exploded'
                $table.tablesorter();
                $table.find( '.headerSort:eq(0)' ).click();
 
                $table.tablesorter();
                $table.find( '.headerSort:eq(0)' ).click();
 
-               assert.equal(
+               assert.strictEqual(
                        $table.data( 'tablesorter' ).config.parsers[ 0 ].id,
                        'number',
                        'Correctly detected column content skipping sortbottom'
                        $table.data( 'tablesorter' ).config.parsers[ 0 ].id,
                        'number',
                        'Correctly detected column content skipping sortbottom'
                );
                $table.tablesorter();
 
                );
                $table.tablesorter();
 
-               assert.equal(
+               assert.strictEqual(
                        $table.children().get( 0 ).nodeName,
                        'CAPTION',
                        'First element after <thead> must be <caption> (T34047)'
                        $table.children().get( 0 ).nodeName,
                        'CAPTION',
                        'First element after <thead> must be <caption> (T34047)'
                );
                $table.tablesorter();
 
                );
                $table.tablesorter();
 
-               assert.equal(
+               assert.strictEqual(
                        $table.find( '> thead:eq(0) > tr > th.headerSort' ).length,
                        1,
                        'Child tables inside a headercell should not interfere with sortable headers (T34888)'
                );
                        $table.find( '> thead:eq(0) > tr > th.headerSort' ).length,
                        1,
                        'Child tables inside a headercell should not interfere with sortable headers (T34888)'
                );
-               assert.equal(
+               assert.strictEqual(
                        $( '#mw-bug-32888-2' ).find( 'th.headerSort' ).length,
                        0,
                        'The headers of child tables inside a headercell should not be sortable themselves (T34888)'
                        $( '#mw-bug-32888-2' ).find( 'th.headerSort' ).length,
                        0,
                        'The headers of child tables inside a headercell should not be sortable themselves (T34888)'
                );
                $table.tablesorter().find( '.headerSort:eq(0)' ).click();
 
                );
                $table.tablesorter().find( '.headerSort:eq(0)' ).click();
 
-               assert.equal(
+               assert.strictEqual(
                        $table.find( 'td' ).first().text(),
                        '1',
                        'Applied correct sorting order'
                        $table.find( 'td' ).first().text(),
                        '1',
                        'Applied correct sorting order'
                );
                $table.tablesorter().find( '.headerSort:eq(0)' ).click();
 
                );
                $table.tablesorter().find( '.headerSort:eq(0)' ).click();
 
-               assert.equal(
+               assert.strictEqual(
                        $table.find( 'td' ).text(),
                        'CDEFCCA',
                        'Applied correct sorting order'
                        $table.find( 'td' ).text(),
                        'CDEFCCA',
                        'Applied correct sorting order'
                );
                $table.tablesorter().find( '.headerSort:eq(0)' ).click();
 
                );
                $table.tablesorter().find( '.headerSort:eq(0)' ).click();
 
-               assert.equal(
+               assert.strictEqual(
                        $table.find( 'td' ).text(),
                        '4517',
                        'Applied correct sorting order'
                        $table.find( 'td' ).text(),
                        '4517',
                        'Applied correct sorting order'
                );
                $table.tablesorter();
 
                );
                $table.tablesorter();
 
-               assert.equal(
+               assert.strictEqual(
                        $table.find( '#A1' ).attr( 'class' ),
                        'headerSort',
                        'The first column of the first row should be sortable'
                );
                        $table.find( '#A1' ).attr( 'class' ),
                        'headerSort',
                        'The first column of the first row should be sortable'
                );
-               assert.equal(
+               assert.strictEqual(
                        $table.find( '#B2b' ).attr( 'class' ),
                        'headerSort',
                        'The th element of the 2nd row of the 2nd column should be sortable'
                );
                        $table.find( '#B2b' ).attr( 'class' ),
                        'headerSort',
                        'The th element of the 2nd row of the 2nd column should be sortable'
                );
-               assert.equal(
+               assert.strictEqual(
                        $table.find( '#C2b' ).attr( 'class' ),
                        'headerSort',
                        'The th element of the 2nd row of the 3rd column should be sortable'
                        $table.find( '#C2b' ).attr( 'class' ),
                        'headerSort',
                        'The th element of the 2nd row of the 3rd column should be sortable'
                );
                $table.tablesorter();
 
                );
                $table.tablesorter();
 
-               assert.equal(
+               assert.strictEqual(
                        $table.find( '#A1' ).attr( 'class' ),
                        'headerSort',
                        'The first column of the first row should be sortable'
                );
                        $table.find( '#A1' ).attr( 'class' ),
                        'headerSort',
                        'The first column of the first row should be sortable'
                );
-               assert.equal(
+               assert.strictEqual(
                        $table.find( '#B2b' ).attr( 'class' ),
                        'headerSort',
                        'The th element of the 2nd row of the 2nd column should be sortable'
                        $table.find( '#B2b' ).attr( 'class' ),
                        'headerSort',
                        'The th element of the 2nd row of the 2nd column should be sortable'
                                '</table>'
                );
                $table.tablesorter();
                                '</table>'
                );
                $table.tablesorter();
-               assert.equal( $table.find( '#A2' ).data( 'headerIndex' ),
+               assert.strictEqual( $table.find( '#A2' ).data( 'headerIndex' ),
                        undefined,
                        'A2 should not be a sort header'
                );
                        undefined,
                        'A2 should not be a sort header'
                );
-               assert.equal( $table.find( '#C1' ).data( 'headerIndex' ),
+               assert.strictEqual( $table.find( '#C1' ).data( 'headerIndex' ),
                        2,
                        'C1 should be a sort header'
                );
                        2,
                        'C1 should be a sort header'
                );
                                '</table>'
                );
                $table.tablesorter();
                                '</table>'
                );
                $table.tablesorter();
-               assert.equal( $table.find( '#C2' ).data( 'headerIndex' ),
+               assert.strictEqual( $table.find( '#C2' ).data( 'headerIndex' ),
                        2,
                        'C2 should be a sort header'
                );
                        2,
                        'C2 should be a sort header'
                );
-               assert.equal( $table.find( '#C1' ).data( 'headerIndex' ),
+               assert.strictEqual( $table.find( '#C1' ).data( 'headerIndex' ),
                        undefined,
                        'C1 should not be a sort header'
                );
                        undefined,
                        'C1 should not be a sort header'
                );
                                '</tbody></table>' );
 
                        $table.tablesorter();
                                '</tbody></table>' );
 
                        $table.tablesorter();
-                       assert.equal( $table.find( 'tr:eq(1) th:eq(1)' ).data( 'headerIndex' ),
+                       assert.strictEqual( $table.find( 'tr:eq(1) th:eq(1)' ).data( 'headerIndex' ),
                                2,
                                'Incorrect index of sort header'
                        );
                                2,
                                'Incorrect index of sort header'
                        );
 
                parsers = $table.data( 'tablesorter' ).config.parsers;
 
 
                parsers = $table.data( 'tablesorter' ).config.parsers;
 
-               assert.equal(
+               assert.strictEqual(
                        parsers.length,
                        2,
                        'detectParserForColumn() detect 2 parsers'
                );
 
                        parsers.length,
                        2,
                        'detectParserForColumn() detect 2 parsers'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        parsers[ 1 ].id,
                        'number',
                        'detectParserForColumn() detect parser.id "number" for second column'
                );
 
                        parsers[ 1 ].id,
                        'number',
                        'detectParserForColumn() detect parser.id "number" for second column'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        parsers[ 1 ].format( $table.find( 'tbody > tr > td:eq(1)' ).text() ),
                        -Infinity,
                        'empty cell is sorted as number -Infinity'
                        parsers[ 1 ].format( $table.find( 'tbody > tr > td:eq(1)' ).text() ),
                        -Infinity,
                        'empty cell is sorted as number -Infinity'
                );
 
                parsers = $table.data( 'tablesorter' ).config.parsers;
                );
 
                parsers = $table.data( 'tablesorter' ).config.parsers;
-               assert.equal(
+               assert.strictEqual(
                        parsers[ 1 ].id,
                        'number',
                        'detectParserForColumn() detect parser.id "number" for second column'
                        parsers[ 1 ].id,
                        'number',
                        'detectParserForColumn() detect parser.id "number" for second column'
                );
 
                parsers = $table.data( 'tablesorter' ).config.parsers;
                );
 
                parsers = $table.data( 'tablesorter' ).config.parsers;
-               assert.equal(
+               assert.strictEqual(
                        parsers[ 0 ].id,
                        'number',
                        'detectParserForColumn() detect parser.id "number"'
                        parsers[ 0 ].id,
                        'number',
                        'detectParserForColumn() detect parser.id "number"'
index 1e183fb..d598586 100644 (file)
 
                        text = $textarea.textSelection( 'getContents' ).replace( /\r\n/g, '\n' );
 
 
                        text = $textarea.textSelection( 'getContents' ).replace( /\r\n/g, '\n' );
 
-                       assert.equal( text, opt.after.text, 'Checking full text after encapsulation' );
+                       assert.strictEqual( text, opt.after.text, 'Checking full text after encapsulation' );
 
                        if ( opt.after.selected !== null ) {
                                selected = $textarea.textSelection( 'getSelection' );
 
                        if ( opt.after.selected !== null ) {
                                selected = $textarea.textSelection( 'getSelection' );
-                               assert.equal( selected, opt.after.selected, 'Checking selected text after encapsulation.' );
+                               assert.strictEqual( selected, opt.after.selected, 'Checking selected text after encapsulation.' );
                        }
 
                } );
                        }
 
                } );
 
                        function among( actual, expected, message ) {
                                if ( Array.isArray( expected ) ) {
 
                        function among( actual, expected, message ) {
                                if ( Array.isArray( expected ) ) {
-                                       assert.equal( expected.indexOf( actual ) !== -1, true, message + ' (got ' + actual + '; expected one of ' + expected.join( ', ' ) + ')' );
+                                       assert.strictEqual( expected.indexOf( actual ) !== -1, true, message + ' (got ' + actual + '; expected one of ' + expected.join( ', ' ) + ')' );
                                } else {
                                } else {
-                                       assert.equal( actual, expected, message );
+                                       assert.strictEqual( actual, expected, message );
                                }
                        }
 
                                }
                        }
 
index 50fa6d1..fdf90dd 100644 (file)
@@ -30,7 +30,7 @@
                        '{"batchcomplete":true}'
                ] );
                return new mw.Api().isCategory( '' ).then( function ( response ) {
                        '{"batchcomplete":true}'
                ] );
                return new mw.Api().isCategory( '' ).then( function ( response ) {
-                       assert.equal( response, false );
+                       assert.strictEqual( response, false );
                } );
        } );
 
                } );
        } );
 
@@ -41,7 +41,7 @@
                        '{"batchcomplete":true,"query":{"normalized":[{"fromencoded":false,"from":"#","to":""}]}}'
                ] );
                return new mw.Api().isCategory( '#' ).then( function ( response ) {
                        '{"batchcomplete":true,"query":{"normalized":[{"fromencoded":false,"from":"#","to":""}]}}'
                ] );
                return new mw.Api().isCategory( '#' ).then( function ( response ) {
-                       assert.equal( response, false );
+                       assert.strictEqual( response, false );
                } );
        } );
 
                } );
        } );
 
@@ -52,7 +52,7 @@
                        '{"batchcomplete":true,"query":{"interwiki":[{"title":"mw:","iw":"mw"}]}}'
                ] );
                return new mw.Api().isCategory( 'mw:' ).then( function ( response ) {
                        '{"batchcomplete":true,"query":{"interwiki":[{"title":"mw:","iw":"mw"}]}}'
                ] );
                return new mw.Api().isCategory( 'mw:' ).then( function ( response ) {
-                       assert.equal( response, false );
+                       assert.strictEqual( response, false );
                } );
        } );
 
                } );
        } );
 
@@ -63,7 +63,7 @@
                        '{"batchcomplete":true,"query":{"pages":[{"title":"|","invalidreason":"The requested page title contains invalid characters: \\"|\\".","invalid":true}]}}'
                ] );
                return new mw.Api().isCategory( '|' ).then( function ( response ) {
                        '{"batchcomplete":true,"query":{"pages":[{"title":"|","invalidreason":"The requested page title contains invalid characters: \\"|\\".","invalid":true}]}}'
                ] );
                return new mw.Api().isCategory( '|' ).then( function ( response ) {
-                       assert.equal( response, false );
+                       assert.strictEqual( response, false );
                } );
        } );
 
                } );
        } );
 
@@ -74,7 +74,7 @@
                        '{"batchcomplete":true}'
                ] );
                return new mw.Api().getCategories( '' ).then( function ( response ) {
                        '{"batchcomplete":true}'
                ] );
                return new mw.Api().getCategories( '' ).then( function ( response ) {
-                       assert.equal( response, false );
+                       assert.strictEqual( response, false );
                } );
        } );
 
                } );
        } );
 
@@ -85,7 +85,7 @@
                        '{"batchcomplete":true,"query":{"normalized":[{"fromencoded":false,"from":"#","to":""}]}}'
                ] );
                return new mw.Api().getCategories( '#' ).then( function ( response ) {
                        '{"batchcomplete":true,"query":{"normalized":[{"fromencoded":false,"from":"#","to":""}]}}'
                ] );
                return new mw.Api().getCategories( '#' ).then( function ( response ) {
-                       assert.equal( response, false );
+                       assert.strictEqual( response, false );
                } );
        } );
 
                } );
        } );
 
@@ -96,7 +96,7 @@
                        '{"batchcomplete":true,"query":{"interwiki":[{"title":"mw:","iw":"mw"}]}}'
                ] );
                return new mw.Api().getCategories( 'mw:' ).then( function ( response ) {
                        '{"batchcomplete":true,"query":{"interwiki":[{"title":"mw:","iw":"mw"}]}}'
                ] );
                return new mw.Api().getCategories( 'mw:' ).then( function ( response ) {
-                       assert.equal( response, false );
+                       assert.strictEqual( response, false );
                } );
        } );
 
                } );
        } );
 
                        '{"batchcomplete":true,"query":{"pages":[{"title":"|","invalidreason":"The requested page title contains invalid characters: \\"|\\".","invalid":true}]}}'
                ] );
                return new mw.Api().getCategories( '|' ).then( function ( response ) {
                        '{"batchcomplete":true,"query":{"pages":[{"title":"|","invalidreason":"The requested page title contains invalid characters: \\"|\\".","invalid":true}]}}'
                ] );
                return new mw.Api().getCategories( '|' ).then( function ( response ) {
-                       assert.equal( response, false );
+                       assert.strictEqual( response, false );
                } );
        } );
 
                } );
        } );
 
index 4ce7c5d..ff5cb2c 100644 (file)
@@ -43,7 +43,7 @@
                                return revision.content.replace( 'Sand', 'Box' );
                        } )
                        .then( function ( edit ) {
                                return revision.content.replace( 'Sand', 'Box' );
                        } )
                        .then( function ( edit ) {
-                               assert.equal( edit.newrevid, 13 );
+                               assert.strictEqual( edit.newrevid, 13 );
                        } );
        } );
 
                        } );
        } );
 
@@ -84,7 +84,7 @@
                                return revision.content.replace( 'Sand', 'Box' );
                        } )
                        .then( function ( edit ) {
                                return revision.content.replace( 'Sand', 'Box' );
                        } )
                        .then( function ( edit ) {
-                               assert.equal( edit.newrevid, 13 );
+                               assert.strictEqual( edit.newrevid, 13 );
                        } );
        } );
 
                        } );
        } );
 
                                return $.Deferred().resolve( revision.content.replace( 'Async', 'Promise' ) );
                        } )
                        .then( function ( edit ) {
                                return $.Deferred().resolve( revision.content.replace( 'Async', 'Promise' ) );
                        } )
                        .then( function ( edit ) {
-                               assert.equal( edit.newrevid, 23 );
+                               assert.strictEqual( edit.newrevid, 23 );
                        } );
        } );
 
                        } );
        } );
 
                                return { text: 'Content', summary: 'Sum' };
                        } )
                        .then( function ( edit ) {
                                return { text: 'Content', summary: 'Sum' };
                        } )
                        .then( function ( edit ) {
-                               assert.equal( edit.newrevid, 33 );
+                               assert.strictEqual( edit.newrevid, 33 );
                        } );
        } );
 
                        } );
        } );
 
                        .then( function () {
                                return $.Deferred().reject( 'Unexpected success' );
                        }, function ( reason ) {
                        .then( function () {
                                return $.Deferred().reject( 'Unexpected success' );
                        }, function ( reason ) {
-                               assert.equal( reason, 'invalidtitle' );
+                               assert.strictEqual( reason, 'invalidtitle' );
                        } );
        } );
 
                        } );
        } );
 
                return new mw.Api()
                        .create( 'Sandbox', { summary: 'Load sand particles.' }, 'Sand.' )
                        .then( function ( page ) {
                return new mw.Api()
                        .create( 'Sandbox', { summary: 'Load sand particles.' }, 'Sand.' )
                        .then( function ( page ) {
-                               assert.equal( page.newrevid, 41 );
+                               assert.strictEqual( page.newrevid, 41 );
                        } );
        } );
 
                        } );
        } );
 
index 74da009..5673227 100644 (file)
@@ -13,7 +13,7 @@
                ] );
 
                return new mw.Api().parse( '\'\'\'Hello world\'\'\'' ).done( function ( html ) {
                ] );
 
                return new mw.Api().parse( '\'\'\'Hello world\'\'\'' ).done( function ( html ) {
-                       assert.equal( html, '<p><b>Hello world</b></p>', 'Parse wikitext by string' );
+                       assert.strictEqual( html, '<p><b>Hello world</b></p>', 'Parse wikitext by string' );
                } );
        } );
 
                } );
        } );
 
@@ -28,7 +28,7 @@
                                return '\'\'\'Hello world\'\'\'';
                        }
                } ).done( function ( html ) {
                                return '\'\'\'Hello world\'\'\'';
                        }
                } ).done( function ( html ) {
-                       assert.equal( html, '<p><b>Hello world</b></p>', 'Parse wikitext by toString object' );
+                       assert.strictEqual( html, '<p><b>Hello world</b></p>', 'Parse wikitext by toString object' );
                } );
        } );
 
                } );
        } );
 
@@ -39,7 +39,7 @@
                ] );
 
                return new mw.Api().parse( new mw.Title( 'Earth' ) ).done( function ( html ) {
                ] );
 
                return new mw.Api().parse( new mw.Title( 'Earth' ) ).done( function ( html ) {
-                       assert.equal( html, '<p><b>Earth</b> is a planet.</p>', 'Parse page by Title object' );
+                       assert.strictEqual( html, '<p><b>Earth</b> is a planet.</p>', 'Parse page by Title object' );
                } );
        } );
 }( mediaWiki ) );
                } );
        } );
 }( mediaWiki ) );
index 28799e9..5ae0e94 100644 (file)
@@ -59,7 +59,7 @@
 
                api.get( { action: 'doesntexist' } )
                        .fail( function ( errorCode ) {
 
                api.get( { action: 'doesntexist' } )
                        .fail( function ( errorCode ) {
-                               assert.equal( errorCode, 'unknown_action', 'API error should reject the deferred' );
+                               assert.strictEqual( errorCode, 'unknown_action', 'API error should reject the deferred' );
                        } )
                        .always( assert.async() );
        } );
                        } )
                        .always( assert.async() );
        } );
@@ -73,7 +73,7 @@
 
                api.get( { action: 'doesntexist' } )
                        .fail( function ( errorCode ) {
 
                api.get( { action: 'doesntexist' } )
                        .fail( function ( errorCode ) {
-                               assert.equal( errorCode, 'unknown_action', 'API error should reject the deferred' );
+                               assert.strictEqual( errorCode, 'unknown_action', 'API error should reject the deferred' );
                        } )
                        .always( assert.async() );
        } );
                        } )
                        .always( assert.async() );
        } );
@@ -87,7 +87,7 @@
                                assert.ok( request.requestBody instanceof FormData, 'Request uses FormData body' );
                        } else {
                                assert.notOk( request.url.match( /action=test/ ), 'Request has no query string' );
                                assert.ok( request.requestBody instanceof FormData, 'Request uses FormData body' );
                        } else {
                                assert.notOk( request.url.match( /action=test/ ), 'Request has no query string' );
-                               assert.equal( request.requestBody, 'action=test&format=json', 'Request uses query string body' );
+                               assert.strictEqual( request.requestBody, 'action=test&format=json', 'Request uses query string body' );
                        }
                        request.respond( 200, { 'Content-Type': 'application/json' }, '[]' );
                } );
                        }
                        request.respond( 200, { 'Content-Type': 'application/json' }, '[]' );
                } );
@@ -99,7 +99,7 @@
                var api = new mw.Api();
 
                this.server.respond( function ( request ) {
                var api = new mw.Api();
 
                this.server.respond( function ( request ) {
-                       assert.equal( match( request.url, /test=([^&]+)/ ), 'foo%7Cbar%7Cbaz', 'Pipe-separated value was submitted' );
+                       assert.strictEqual( match( request.url, /test=([^&]+)/ ), 'foo%7Cbar%7Cbaz', 'Pipe-separated value was submitted' );
                        request.respond( 200, { 'Content-Type': 'application/json' }, '[]' );
                } );
 
                        request.respond( 200, { 'Content-Type': 'application/json' }, '[]' );
                } );
 
                var api = new mw.Api();
 
                this.server.respond( function ( request ) {
                var api = new mw.Api();
 
                this.server.respond( function ( request ) {
-                       assert.equal( match( request.url, /test=([^&]+)/ ), 'Foo%7CBar', 'Pipe-separated value was submitted' );
+                       assert.strictEqual( match( request.url, /test=([^&]+)/ ), 'Foo%7CBar', 'Pipe-separated value was submitted' );
                        request.respond( 200, { 'Content-Type': 'application/json' }, '[]' );
                } );
 
                        request.respond( 200, { 'Content-Type': 'application/json' }, '[]' );
                } );
 
                var api = new mw.Api();
 
                this.server.respond( function ( request ) {
                var api = new mw.Api();
 
                this.server.respond( function ( request ) {
-                       assert.equal( match( request.url, /test=([^&]+)/ ), 'true%7Cfalse%7C%7C%7C0%7C1%2E2', 'Pipe-separated value was submitted' );
+                       assert.strictEqual( match( request.url, /test=([^&]+)/ ), 'true%7Cfalse%7C%7C%7C0%7C1%2E2', 'Pipe-separated value was submitted' );
                        request.respond( 200, { 'Content-Type': 'application/json' }, '[]' );
                } );
 
                        request.respond( 200, { 'Content-Type': 'application/json' }, '[]' );
                } );
 
                        .then( function ( token ) {
                                assert.ok( token.length, 'Got a token' );
                        }, function ( err ) {
                        .then( function ( token ) {
                                assert.ok( token.length, 'Got a token' );
                        }, function ( err ) {
-                               assert.equal( err, '', 'API error' );
+                               assert.strictEqual( err, '', 'API error' );
                        } )
                        .then( function () {
                        } )
                        .then( function () {
-                               assert.equal( test.server.requests.length, 0, 'Requests made' );
+                               assert.strictEqual( test.server.requests.length, 0, 'Requests made' );
                        } );
        } );
 
                        } );
        } );
 
                // be added to user.tokens, use a fake one instead.
                api.getToken( 'testuncached' )
                        .done( function ( token ) {
                // be added to user.tokens, use a fake one instead.
                api.getToken( 'testuncached' )
                        .done( function ( token ) {
-                               assert.equal( token, 'good', 'The token' );
+                               assert.strictEqual( token, 'good', 'The token' );
                        } )
                        .fail( function ( err ) {
                        } )
                        .fail( function ( err ) {
-                               assert.equal( err, '', 'API error' );
+                               assert.strictEqual( err, '', 'API error' );
                        } )
                        .always( firstDone );
 
                api.getToken( 'testuncached' )
                        .done( function ( token ) {
                        } )
                        .always( firstDone );
 
                api.getToken( 'testuncached' )
                        .done( function ( token ) {
-                               assert.equal( token, 'good', 'The cached token' );
+                               assert.strictEqual( token, 'good', 'The cached token' );
                        } )
                        .fail( function ( err ) {
                        } )
                        .fail( function ( err ) {
-                               assert.equal( err, '', 'API error' );
+                               assert.strictEqual( err, '', 'API error' );
                        } )
                        .always( secondDone );
 
                        } )
                        .always( secondDone );
 
-               assert.equal( this.server.requests.length, 1, 'Requests made' );
+               assert.strictEqual( this.server.requests.length, 1, 'Requests made' );
        } );
 
        QUnit.test( 'getToken() - error', function ( assert ) {
        } );
 
        QUnit.test( 'getToken() - error', function ( assert ) {
                // Don't cache error (T67268)
                return api.getToken( 'testerror' )
                        .catch( function ( err ) {
                // Don't cache error (T67268)
                return api.getToken( 'testerror' )
                        .catch( function ( err ) {
-                               assert.equal( err, 'bite-me', 'Expected error' );
+                               assert.strictEqual( err, 'bite-me', 'Expected error' );
 
                                return api.getToken( 'testerror' );
                        } )
                        .then( function ( token ) {
 
                                return api.getToken( 'testerror' );
                        } )
                        .then( function ( token ) {
-                               assert.equal( token, 'good', 'The token' );
+                               assert.strictEqual( token, 'good', 'The token' );
                        } );
        } );
 
                        } );
        } );
 
                return api.getToken( 'testnoquery' )
                        .then( function () { assert.fail( 'Expected response missing a query to be rejected' ); } )
                        .catch( function ( err, rsp ) {
                return api.getToken( 'testnoquery' )
                        .then( function () { assert.fail( 'Expected response missing a query to be rejected' ); } )
                        .catch( function ( err, rsp ) {
-                               assert.equal( err, 'query-missing', 'Expected no query error code' );
+                               assert.strictEqual( err, 'query-missing', 'Expected no query error code' );
                                assert.deepEqual( rsp, serverRsp );
                        } );
        } );
                                assert.deepEqual( rsp, serverRsp );
                        } );
        } );
                // Get a token of a type that is in the legacy map.
                return api.getToken( 'email' )
                        .done( function ( token ) {
                // Get a token of a type that is in the legacy map.
                return api.getToken( 'email' )
                        .done( function ( token ) {
-                               assert.equal( token, 'csrfgood', 'Token' );
+                               assert.strictEqual( token, 'csrfgood', 'Token' );
                        } )
                        .fail( function ( err ) {
                        } )
                        .fail( function ( err ) {
-                               assert.equal( err, '', 'API error' );
+                               assert.strictEqual( err, '', 'API error' );
                        } )
                        .always( function () {
                        } )
                        .always( function () {
-                               assert.equal( test.server.requests.length, 1, 'Requests made' );
+                               assert.strictEqual( test.server.requests.length, 1, 'Requests made' );
                        } );
        } );
 
                        } );
        } );
 
                                return api.getToken( 'testbad' );
                        } )
                        .then( function ( token ) {
                                return api.getToken( 'testbad' );
                        } )
                        .then( function ( token ) {
-                               assert.equal( token, 'good', 'The token' );
-                               assert.equal( test.server.requests.length, 2, 'Requests made' );
+                               assert.strictEqual( token, 'good', 'The token' );
+                               assert.strictEqual( test.server.requests.length, 2, 'Requests made' );
                        } );
 
        } );
                        } );
 
        } );
                                return api.getToken( 'options' );
                        } )
                        .then( function ( token ) {
                                return api.getToken( 'options' );
                        } )
                        .then( function ( token ) {
-                               assert.equal( token, 'goodlegacy', 'The token' );
-                               assert.equal( test.server.requests.length, 2, 'Request made' );
+                               assert.strictEqual( token, 'goodlegacy', 'The token' );
+                               assert.strictEqual( test.server.requests.length, 2, 'Request made' );
                        } );
 
        } );
                        } );
 
        } );
                        .then( function () {
                                return $.Deferred().reject( 'Unexpected success' );
                        }, function ( errorCode ) {
                        .then( function () {
                                return $.Deferred().reject( 'Unexpected success' );
                        }, function ( errorCode ) {
-                               assert.equal( errorCode, 'assertuserfailed', 'getToken fails assert' );
+                               assert.strictEqual( errorCode, 'assertuserfailed', 'getToken fails assert' );
                                return $.Deferred().resolve();
                        } )
                        .then( function () {
                                return $.Deferred().resolve();
                        } )
                        .then( function () {
-                               assert.equal( test.server.requests.length, 1, 'Requests made' );
+                               assert.strictEqual( test.server.requests.length, 1, 'Requests made' );
                        } );
        } );
 
                        } );
        } );
 
                                }
                        }
                ).then( function () {
                                }
                        }
                ).then( function () {
-                       assert.equal( test.server.requests[ 0 ].requestHeaders[ 'X-Foo' ], 'Bar', 'Header sent' );
+                       assert.strictEqual( test.server.requests[ 0 ].requestHeaders[ 'X-Foo' ], 'Bar', 'Header sent' );
 
                        return api.postWithToken( 'csrf',
                                { action: 'example' },
 
                        return api.postWithToken( 'csrf',
                                { action: 'example' },
                                }
                        );
                } ).then( function ( data ) {
                                }
                        );
                } ).then( function ( data ) {
-                       assert.equal( data.example, 'quux' );
+                       assert.strictEqual( data.example, 'quux' );
 
 
-                       assert.equal( test.server.requests.length, 2, 'Request made' );
+                       assert.strictEqual( test.server.requests.length, 2, 'Request made' );
                } );
        } );
 
                } );
        } );
 
                        b: 2
                } );
                this.api.abort();
                        b: 2
                } );
                this.api.abort();
-               assert.equal( this.requests.length, 2, 'Check both requests triggered' );
+               assert.strictEqual( this.requests.length, 2, 'Check both requests triggered' );
                this.requests.forEach( function ( request, i ) {
                        assert.ok( request.abort.calledOnce, 'abort request number ' + i );
                } );
                this.requests.forEach( function ( request, i ) {
                        assert.ok( request.abort.calledOnce, 'abort request number ' + i );
                } );
index 8641469..649bf03 100644 (file)
@@ -17,7 +17,7 @@
                } );
 
                return new mw.Api().watch( 'Foo' ).done( function ( item ) {
                } );
 
                return new mw.Api().watch( 'Foo' ).done( function ( item ) {
-                       assert.equal( item.title, 'Foo' );
+                       assert.strictEqual( item.title, 'Foo' );
                } );
        } );
 
                } );
        } );
 
@@ -34,7 +34,7 @@
                } );
 
                return new mw.Api().watch( [ 'Foo' ] ).done( function ( items ) {
                } );
 
                return new mw.Api().watch( [ 'Foo' ] ).done( function ( items ) {
-                       assert.equal( items[ 0 ].title, 'Foo' );
+                       assert.strictEqual( items[ 0 ].title, 'Foo' );
                } );
        } );
 
                } );
        } );
 
@@ -52,8 +52,8 @@
                } );
 
                return new mw.Api().watch( [ 'Foo', 'Bar' ] ).done( function ( items ) {
                } );
 
                return new mw.Api().watch( [ 'Foo', 'Bar' ] ).done( function ( items ) {
-                       assert.equal( items[ 0 ].title, 'Foo' );
-                       assert.equal( items[ 1 ].title, 'Bar' );
+                       assert.strictEqual( items[ 0 ].title, 'Foo' );
+                       assert.strictEqual( items[ 1 ].title, 'Bar' );
                } );
        } );
 
                } );
        } );
 
index a6c56a9..79a1b26 100644 (file)
        QUnit.test( 'getVersion', function ( assert ) {
                var uriProcessor = new mw.rcfilters.UriProcessor( new mw.rcfilters.dm.FiltersViewModel() );
 
        QUnit.test( 'getVersion', function ( assert ) {
                var uriProcessor = new mw.rcfilters.UriProcessor( new mw.rcfilters.dm.FiltersViewModel() );
 
-               assert.equal(
+               assert.strictEqual(
                        uriProcessor.getVersion( { param1: 'foo', urlversion: '2' } ),
                        2,
                        'Retrieving the version from the URI query'
                );
 
                        uriProcessor.getVersion( { param1: 'foo', urlversion: '2' } ),
                        2,
                        'Retrieving the version from the URI query'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        uriProcessor.getVersion( { param1: 'foo' } ),
                        1,
                        'Getting version 1 if no version is specified'
                        uriProcessor.getVersion( { param1: 'foo' } ),
                        1,
                        'Getting version 1 if no version is specified'
                uriProcessor = new mw.rcfilters.UriProcessor( filtersModel );
 
                cases.forEach( function ( testCase ) {
                uriProcessor = new mw.rcfilters.UriProcessor( filtersModel );
 
                cases.forEach( function ( testCase ) {
-                       assert.equal(
+                       assert.strictEqual(
                                uriProcessor.isNewState( testCase.states.curr, testCase.states.new ),
                                testCase.result,
                                testCase.message
                                uriProcessor.isNewState( testCase.states.curr, testCase.states.new ),
                                testCase.result,
                                testCase.message
                uriProcessor = new mw.rcfilters.UriProcessor( filtersModel );
 
                cases.forEach( function ( testCase ) {
                uriProcessor = new mw.rcfilters.UriProcessor( filtersModel );
 
                cases.forEach( function ( testCase ) {
-                       assert.equal(
+                       assert.strictEqual(
                                uriProcessor.doesQueryContainRecognizedParams( testCase.query ),
                                testCase.result,
                                testCase.message
                                uriProcessor.doesQueryContainRecognizedParams( testCase.query ),
                                testCase.result,
                                testCase.message
                                }
                        );
 
                                }
                        );
 
-                       assert.equal(
+                       assert.strictEqual(
                                uriProcessor._normalizeTargetInUri(
                                        new mw.Uri( testCase.input )
                                ).toString(),
                                uriProcessor._normalizeTargetInUri(
                                        new mw.Uri( testCase.input )
                                ).toString(),
index 18a2c9c..03ef387 100644 (file)
@@ -8,12 +8,12 @@
                        group2 = new mw.rcfilters.dm.FilterGroup( 'group2' );
 
                item = new mw.rcfilters.dm.FilterItem( 'filter1', group1 );
                        group2 = new mw.rcfilters.dm.FilterGroup( 'group2' );
 
                item = new mw.rcfilters.dm.FilterItem( 'filter1', group1 );
-               assert.equal(
+               assert.strictEqual(
                        item.getName(),
                        'group1__filter1',
                        'Filter name is retained.'
                );
                        item.getName(),
                        'group1__filter1',
                        'Filter name is retained.'
                );
-               assert.equal(
+               assert.strictEqual(
                        item.getGroupName(),
                        'group1',
                        'Group name is retained.'
                        item.getGroupName(),
                        'group1',
                        'Group name is retained.'
                                description: 'test description'
                        }
                );
                                description: 'test description'
                        }
                );
-               assert.equal(
+               assert.strictEqual(
                        item.getLabel(),
                        'test label',
                        'Label information is retained.'
                );
                        item.getLabel(),
                        'test label',
                        'Label information is retained.'
                );
-               assert.equal(
+               assert.strictEqual(
                        item.getLabel(),
                        'test label',
                        'Description information is retained.'
                        item.getLabel(),
                        'test label',
                        'Description information is retained.'
                                selected: true
                        }
                );
                                selected: true
                        }
                );
-               assert.equal(
+               assert.strictEqual(
                        item.isSelected(),
                        true,
                        'Item can be selected in the config.'
                );
                item.toggleSelected( true );
                        item.isSelected(),
                        true,
                        'Item can be selected in the config.'
                );
                item.toggleSelected( true );
-               assert.equal(
+               assert.strictEqual(
                        item.isSelected(),
                        true,
                        'Item can toggle its selected state.'
                        item.isSelected(),
                        true,
                        'Item can toggle its selected state.'
                        [ 'sub1', 'sub2', 'sub3' ],
                        'Subset information is retained.'
                );
                        [ 'sub1', 'sub2', 'sub3' ],
                        'Subset information is retained.'
                );
-               assert.equal(
+               assert.strictEqual(
                        item.existsInSubset( 'sub1' ),
                        true,
                        'Specific item exists in subset.'
                );
                        item.existsInSubset( 'sub1' ),
                        true,
                        'Specific item exists in subset.'
                );
-               assert.equal(
+               assert.strictEqual(
                        item.existsInSubset( 'sub10' ),
                        false,
                        'Specific item does not exists in subset.'
                );
                        item.existsInSubset( 'sub10' ),
                        false,
                        'Specific item does not exists in subset.'
                );
-               assert.equal(
+               assert.strictEqual(
                        item.isIncluded(),
                        false,
                        'Initial state of "included" is false.'
                );
 
                item.toggleIncluded( true );
                        item.isIncluded(),
                        false,
                        'Initial state of "included" is false.'
                );
 
                item.toggleIncluded( true );
-               assert.equal(
+               assert.strictEqual(
                        item.isIncluded(),
                        true,
                        'Item toggles its included state.'
                        item.isIncluded(),
                        true,
                        'Item toggles its included state.'
                        },
                        'Conflict information is retained.'
                );
                        },
                        'Conflict information is retained.'
                );
-               assert.equal(
+               assert.strictEqual(
                        item.existsInConflicts( new mw.rcfilters.dm.FilterItem( 'conflict1', group2 ) ),
                        true,
                        'Specific item exists in conflicts.'
                );
                        item.existsInConflicts( new mw.rcfilters.dm.FilterItem( 'conflict1', group2 ) ),
                        true,
                        'Specific item exists in conflicts.'
                );
-               assert.equal(
+               assert.strictEqual(
                        item.existsInConflicts( new mw.rcfilters.dm.FilterItem( 'conflict10', group1 ) ),
                        false,
                        'Specific item does not exists in conflicts.'
                );
                        item.existsInConflicts( new mw.rcfilters.dm.FilterItem( 'conflict10', group1 ) ),
                        false,
                        'Specific item does not exists in conflicts.'
                );
-               assert.equal(
+               assert.strictEqual(
                        item.isConflicted(),
                        false,
                        'Initial state of "conflicted" is false.'
                );
 
                item.toggleConflicted( true );
                        item.isConflicted(),
                        false,
                        'Initial state of "conflicted" is false.'
                );
 
                item.toggleConflicted( true );
-               assert.equal(
+               assert.strictEqual(
                        item.isConflicted(),
                        true,
                        'Item toggles its conflicted state.'
                        item.isConflicted(),
                        true,
                        'Item toggles its conflicted state.'
 
                // Fully covered
                item = new mw.rcfilters.dm.FilterItem( 'filter1', group1 );
 
                // Fully covered
                item = new mw.rcfilters.dm.FilterItem( 'filter1', group1 );
-               assert.equal(
+               assert.strictEqual(
                        item.isFullyCovered(),
                        false,
                        'Initial state of "full coverage" is false.'
                );
                item.toggleFullyCovered( true );
                        item.isFullyCovered(),
                        false,
                        'Initial state of "full coverage" is false.'
                );
                item.toggleFullyCovered( true );
-               assert.equal(
+               assert.strictEqual(
                        item.isFullyCovered(),
                        true,
                        'Item toggles its fully coverage state.'
                        item.isFullyCovered(),
                        true,
                        'Item toggles its fully coverage state.'
 
                item.setValue( '1' );
 
 
                item.setValue( '1' );
 
-               assert.equal( item.getValue(), true, 'Value is coerced to boolean' );
+               assert.strictEqual( item.getValue(), true, 'Value is coerced to boolean' );
        } );
 
        QUnit.test( 'get/set any value', function ( assert ) {
        } );
 
        QUnit.test( 'get/set any value', function ( assert ) {
 
                item.setValue( '1' );
 
 
                item.setValue( '1' );
 
-               assert.equal( item.getValue(), '1', 'Value is kept as-is' );
+               assert.strictEqual( item.getValue(), '1', 'Value is kept as-is' );
        } );
 }( mediaWiki ) );
        } );
 }( mediaWiki ) );
index 65ef43c..45d591d 100644 (file)
 
                model.initializeFilters( definition );
 
 
                model.initializeFilters( definition );
 
-               assert.equal(
+               assert.strictEqual(
                        model.isHighlightEnabled(),
                        false,
                        'Initially, highlight is disabled.'
                );
 
                model.toggleHighlight( true );
                        model.isHighlightEnabled(),
                        false,
                        'Initially, highlight is disabled.'
                );
 
                model.toggleHighlight( true );
-               assert.equal(
+               assert.strictEqual(
                        model.isHighlightEnabled(),
                        true,
                        'Highlight is enabled on toggle.'
                        model.isHighlightEnabled(),
                        true,
                        'Highlight is enabled on toggle.'
                        'Highlighted items are highlighted.'
                );
 
                        'Highlighted items are highlighted.'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        model.getItemByName( 'group1__filter1' ).getHighlightColor(),
                        'color1',
                        'Item highlight color is set.'
                );
 
                model.setHighlightColor( 'group1__filter1', 'color1changed' );
                        model.getItemByName( 'group1__filter1' ).getHighlightColor(),
                        'color1',
                        'Item highlight color is set.'
                );
 
                model.setHighlightColor( 'group1__filter1', 'color1changed' );
-               assert.equal(
+               assert.strictEqual(
                        model.getItemByName( 'group1__filter1' ).getHighlightColor(),
                        'color1changed',
                        'Item highlight color is changed on setHighlightColor.'
                        model.getItemByName( 'group1__filter1' ).getHighlightColor(),
                        'color1changed',
                        'Item highlight color is changed on setHighlightColor.'
                model.initializeFilters( shortFilterDefinition, null );
 
                model.emptyAllFilters();
                model.initializeFilters( shortFilterDefinition, null );
 
                model.emptyAllFilters();
-               assert.equal( model.areVisibleFiltersEmpty(), true );
+               assert.strictEqual( model.areVisibleFiltersEmpty(), true );
 
                model.toggleFiltersSelected( {
                        group3__filter5: true // sticky
                } );
 
                model.toggleFiltersSelected( {
                        group3__filter5: true // sticky
                } );
-               assert.equal( model.areVisibleFiltersEmpty(), true );
+               assert.strictEqual( model.areVisibleFiltersEmpty(), true );
 
                model.toggleFiltersSelected( {
                        group1__filter1: true
                } );
 
                model.toggleFiltersSelected( {
                        group1__filter1: true
                } );
-               assert.equal( model.areVisibleFiltersEmpty(), false );
+               assert.strictEqual( model.areVisibleFiltersEmpty(), false );
        } );
 }( mediaWiki, jQuery ) );
        } );
 }( mediaWiki, jQuery ) );
index ed054bd..92e5f2e 100644 (file)
                                testCase.msg + ' (itemState)'
                        );
 
                                testCase.msg + ' (itemState)'
                        );
 
-                       assert.equal(
+                       assert.strictEqual(
                                item.isDefault(),
                                testCase.result.isDefault,
                                testCase.msg + ' (isDefault)'
                        );
 
                        if ( testCase.result.id !== undefined ) {
                                item.isDefault(),
                                testCase.result.isDefault,
                                testCase.msg + ' (isDefault)'
                        );
 
                        if ( testCase.result.id !== undefined ) {
-                               assert.equal(
+                               assert.strictEqual(
                                        item.getID(),
                                        testCase.result.id,
                                        testCase.msg + ' (item ID)'
                                        item.getID(),
                                        testCase.result.id,
                                        testCase.msg + ' (item ID)'
                );
                item1 = queriesModel.getItemByID( id1 );
 
                );
                item1 = queriesModel.getItemByID( id1 );
 
-               assert.equal(
+               assert.strictEqual(
                        item1.getID(),
                        id1,
                        'Item created and its data retained successfully'
                        item1.getID(),
                        id1,
                        'Item created and its data retained successfully'
index ee3be94..5e35c18 100644 (file)
                        $.extend( true, {}, itemData )
                );
 
                        $.extend( true, {}, itemData )
                );
 
-               assert.equal(
+               assert.strictEqual(
                        model.getID(),
                        'randomID',
                        'Item ID is retained'
                );
 
                        model.getID(),
                        'randomID',
                        'Item ID is retained'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        model.getLabel(),
                        'Some label',
                        'Item label is retained'
                        model.getLabel(),
                        'Some label',
                        'Item label is retained'
@@ -41,7 +41,7 @@
                        'Item data is retained'
                );
 
                        'Item data is retained'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        model.isDefault(),
                        false,
                        'Item default state is retained.'
                        model.isDefault(),
                        false,
                        'Item default state is retained.'
                        $.extend( true, {}, itemData )
                );
 
                        $.extend( true, {}, itemData )
                );
 
-               assert.equal(
+               assert.strictEqual(
                        model.isDefault(),
                        false,
                        'Default state represented when item initialized with default:false.'
                );
 
                model.toggleDefault( true );
                        model.isDefault(),
                        false,
                        'Default state represented when item initialized with default:false.'
                );
 
                model.toggleDefault( true );
-               assert.equal(
+               assert.strictEqual(
                        model.isDefault(),
                        true,
                        'Default state toggles to true successfully'
                );
 
                model.toggleDefault( false );
                        model.isDefault(),
                        true,
                        'Default state toggles to true successfully'
                );
 
                model.toggleDefault( false );
-               assert.equal(
+               assert.strictEqual(
                        model.isDefault(),
                        false,
                        'Default state toggles to false successfully'
                        model.isDefault(),
                        false,
                        'Default state toggles to false successfully'
@@ -85,7 +85,7 @@
                        { default: true }
                );
 
                        { default: true }
                );
 
-               assert.equal(
+               assert.strictEqual(
                        model.isDefault(),
                        true,
                        'Default state represented when item initialized with default:true.'
                        model.isDefault(),
                        true,
                        'Default state represented when item initialized with default:true.'
index 74ffe65..a343aa5 100644 (file)
@@ -107,18 +107,18 @@ QUnit.module( 'mediawiki.widgets.APIResultsQueue' );
                queue.get( 10 )
                        .then( function ( data ) {
                                // Check that we received all requested results
                queue.get( 10 )
                        .then( function ( data ) {
                                // Check that we received all requested results
-                               assert.equal( data.length, 10, 'Query 1: Results received.' );
+                               assert.strictEqual( data.length, 10, 'Query 1: Results received.' );
                                // We've asked for 10 items + 2 threshold from all providers.
                                // Provider 1 returned 12 results
                                // Provider 2 returned 0 results
                                // Provider 3 returned 1 results
                                // Overall 13 results. 10 were retrieved. 3 left in queue.
                                // We've asked for 10 items + 2 threshold from all providers.
                                // Provider 1 returned 12 results
                                // Provider 2 returned 0 results
                                // Provider 3 returned 1 results
                                // Overall 13 results. 10 were retrieved. 3 left in queue.
-                               assert.equal( queue.getQueueSize(), 3, 'Query 1: Remaining queue size.' );
+                               assert.strictEqual( queue.getQueueSize(), 3, 'Query 1: Remaining queue size.' );
 
                                // Check if sources are depleted
 
                                // Check if sources are depleted
-                               assert.equal( providers[ 0 ].isDepleted(), false, 'Query 1: Full provider not depleted.' );
-                               assert.equal( providers[ 1 ].isDepleted(), true, 'Query 1: Empty provider is depleted.' );
-                               assert.equal( providers[ 2 ].isDepleted(), true, 'Query 1: Single result provider is depleted.' );
+                               assert.strictEqual( providers[ 0 ].isDepleted(), false, 'Query 1: Full provider not depleted.' );
+                               assert.strictEqual( providers[ 1 ].isDepleted(), true, 'Query 1: Empty provider is depleted.' );
+                               assert.strictEqual( providers[ 2 ].isDepleted(), true, 'Query 1: Single result provider is depleted.' );
 
                                // Ask for more results
                                return queue.get( 10 );
 
                                // Ask for more results
                                return queue.get( 10 );
@@ -131,26 +131,26 @@ QUnit.module( 'mediawiki.widgets.APIResultsQueue' );
                                // * The queue queried provider #1 for 12 items
                                // * The queue returned 10 results as requested
                                // * 5 results are now left in the queue.
                                // * The queue queried provider #1 for 12 items
                                // * The queue returned 10 results as requested
                                // * 5 results are now left in the queue.
-                               assert.equal( data1.length, 10, 'Query 1: Second set of results received.' );
-                               assert.equal( queue.getQueueSize(), 5, 'Query 1: Remaining queue size.' );
+                               assert.strictEqual( data1.length, 10, 'Query 1: Second set of results received.' );
+                               assert.strictEqual( queue.getQueueSize(), 5, 'Query 1: Remaining queue size.' );
 
                                // Change the query
                                queue.setParams( { foo: 'baz' } );
                                // Check if sources are depleted
 
                                // Change the query
                                queue.setParams( { foo: 'baz' } );
                                // Check if sources are depleted
-                               assert.equal( providers[ 0 ].isDepleted(), false, 'Query 2: Full provider not depleted.' );
-                               assert.equal( providers[ 1 ].isDepleted(), false, 'Query 2: Empty provider not depleted.' );
-                               assert.equal( providers[ 2 ].isDepleted(), false, 'Query 2: Single result provider not depleted.' );
+                               assert.strictEqual( providers[ 0 ].isDepleted(), false, 'Query 2: Full provider not depleted.' );
+                               assert.strictEqual( providers[ 1 ].isDepleted(), false, 'Query 2: Empty provider not depleted.' );
+                               assert.strictEqual( providers[ 2 ].isDepleted(), false, 'Query 2: Single result provider not depleted.' );
 
                                return queue.get( 10 );
                        } )
                        .then( function ( data2 ) {
                                // This should be the same as the very first result
 
                                return queue.get( 10 );
                        } )
                        .then( function ( data2 ) {
                                // This should be the same as the very first result
-                               assert.equal( data2.length, 10, 'Query 2: Results received.' );
-                               assert.equal( queue.getQueueSize(), 3, 'Query 2: Remaining queue size.' );
+                               assert.strictEqual( data2.length, 10, 'Query 2: Results received.' );
+                               assert.strictEqual( queue.getQueueSize(), 3, 'Query 2: Remaining queue size.' );
                                // Check if sources are depleted
                                // Check if sources are depleted
-                               assert.equal( providers[ 0 ].isDepleted(), false, 'Query 2: Full provider not depleted.' );
-                               assert.equal( providers[ 1 ].isDepleted(), true, 'Query 2: Empty provider is not depleted.' );
-                               assert.equal( providers[ 2 ].isDepleted(), true, 'Query 2: Single result provider is not depleted.' );
+                               assert.strictEqual( providers[ 0 ].isDepleted(), false, 'Query 2: Full provider not depleted.' );
+                               assert.strictEqual( providers[ 1 ].isDepleted(), true, 'Query 2: Empty provider is not depleted.' );
+                               assert.strictEqual( providers[ 2 ].isDepleted(), true, 'Query 2: Single result provider is not depleted.' );
                        } )
                        // Finish the async test
                        .then( done );
                        } )
                        // Finish the async test
                        .then( done );
@@ -189,7 +189,7 @@ QUnit.module( 'mediawiki.widgets.APIResultsQueue' );
                biggerQueue.setParams( { foo: 'baz' } );
                biggerQueue.get( 10 )
                        .then( function () {
                biggerQueue.setParams( { foo: 'baz' } );
                biggerQueue.get( 10 )
                        .then( function () {
-                               assert.equal( completed, false, 'Provider promises aborted.' );
+                               assert.strictEqual( completed, false, 'Provider promises aborted.' );
                        } )
                        // Finish the async test
                        .then( done );
                        } )
                        // Finish the async test
                        .then( done );
index 4e15cf0..485bac0 100644 (file)
@@ -32,7 +32,7 @@
                        assert.propEqual( str.match( new RegExp( mw.RegExp.escape( str ) ) ), [ str ], 'Match ' + str );
                } );
 
                        assert.propEqual( str.match( new RegExp( mw.RegExp.escape( str ) ) ), [ str ], 'Match ' + str );
                } );
 
-               assert.equal( mw.RegExp.escape( normal ), normal, 'Alphanumerals are left alone' );
+               assert.strictEqual( mw.RegExp.escape( normal ), normal, 'Alphanumerals are left alone' );
        } );
 
 }( mediaWiki ) );
        } );
 
 }( mediaWiki ) );
index ae3ebbf..61b8f34 100644 (file)
                        x = '*',
                        space = '   ';
 
                        x = '*',
                        space = '   ';
 
-               assert.equal( byteLength( azLc ), 26, 'Lowercase a-z' );
-               assert.equal( byteLength( azUc ), 26, 'Uppercase A-Z' );
-               assert.equal( byteLength( num ), 10, 'Numbers 0-9' );
-               assert.equal( byteLength( x ), 1, 'An asterisk' );
-               assert.equal( byteLength( space ), 3, '3 spaces' );
+               assert.strictEqual( byteLength( azLc ), 26, 'Lowercase a-z' );
+               assert.strictEqual( byteLength( azUc ), 26, 'Uppercase A-Z' );
+               assert.strictEqual( byteLength( num ), 10, 'Numbers 0-9' );
+               assert.strictEqual( byteLength( x ), 1, 'An asterisk' );
+               assert.strictEqual( byteLength( space ), 3, '3 spaces' );
 
        } );
 
 
        } );
 
index e2eea94..0898afd 100644 (file)
@@ -40,7 +40,7 @@
                QUnit.test( opt.description, function ( assert ) {
                        var res = trimByteLength( opt.initial, opt.sample, opt.limit, opt.fn );
 
                QUnit.test( opt.description, function ( assert ) {
                        var res = trimByteLength( opt.initial, opt.sample, opt.limit, opt.fn );
 
-                       assert.equal(
+                       assert.strictEqual(
                                res.newVal,
                                opt.expected,
                                'New value matches the expected string'
                                res.newVal,
                                opt.expected,
                                'New value matches the expected string'
index d6fe744..8d67b4b 100644 (file)
        QUnit.test( 'newFromText', function ( assert ) {
                var i;
                for ( i = 0; i < cases.valid.length; i++ ) {
        QUnit.test( 'newFromText', function ( assert ) {
                var i;
                for ( i = 0; i < cases.valid.length; i++ ) {
-                       assert.equal(
+                       assert.strictEqual(
                                $.type( mw.Title.newFromText( cases.valid[ i ] ) ),
                                'object',
                                cases.valid[ i ]
                        );
                }
                for ( i = 0; i < cases.invalid.length; i++ ) {
                                $.type( mw.Title.newFromText( cases.valid[ i ] ) ),
                                'object',
                                cases.valid[ i ]
                        );
                }
                for ( i = 0; i < cases.invalid.length; i++ ) {
-                       assert.equal(
+                       assert.strictEqual(
                                $.type( mw.Title.newFromText( cases.invalid[ i ] ) ),
                                'null',
                                cases.invalid[ i ]
                                $.type( mw.Title.newFromText( cases.invalid[ i ] ) ),
                                'null',
                                cases.invalid[ i ]
                var title;
                title = new mw.Title( 'File:Foo_bar.JPG' );
 
                var title;
                title = new mw.Title( 'File:Foo_bar.JPG' );
 
-               assert.equal( title.getNamespaceId(), 6 );
-               assert.equal( title.getNamespacePrefix(), 'File:' );
-               assert.equal( title.getName(), 'Foo_bar' );
-               assert.equal( title.getNameText(), 'Foo bar' );
-               assert.equal( title.getExtension(), 'JPG' );
-               assert.equal( title.getDotExtension(), '.JPG' );
-               assert.equal( title.getMain(), 'Foo_bar.JPG' );
-               assert.equal( title.getMainText(), 'Foo bar.JPG' );
-               assert.equal( title.getPrefixedDb(), 'File:Foo_bar.JPG' );
-               assert.equal( title.getPrefixedText(), 'File:Foo bar.JPG' );
+               assert.strictEqual( title.getNamespaceId(), 6 );
+               assert.strictEqual( title.getNamespacePrefix(), 'File:' );
+               assert.strictEqual( title.getName(), 'Foo_bar' );
+               assert.strictEqual( title.getNameText(), 'Foo bar' );
+               assert.strictEqual( title.getExtension(), 'JPG' );
+               assert.strictEqual( title.getDotExtension(), '.JPG' );
+               assert.strictEqual( title.getMain(), 'Foo_bar.JPG' );
+               assert.strictEqual( title.getMainText(), 'Foo bar.JPG' );
+               assert.strictEqual( title.getPrefixedDb(), 'File:Foo_bar.JPG' );
+               assert.strictEqual( title.getPrefixedText(), 'File:Foo bar.JPG' );
 
                title = new mw.Title( 'Foo#bar' );
 
                title = new mw.Title( 'Foo#bar' );
-               assert.equal( title.getPrefixedText(), 'Foo' );
-               assert.equal( title.getFragment(), 'bar' );
+               assert.strictEqual( title.getPrefixedText(), 'Foo' );
+               assert.strictEqual( title.getFragment(), 'bar' );
 
                title = new mw.Title( '.foo' );
 
                title = new mw.Title( '.foo' );
-               assert.equal( title.getPrefixedText(), '.foo' );
-               assert.equal( title.getName(), '' );
-               assert.equal( title.getNameText(), '' );
-               assert.equal( title.getExtension(), 'foo' );
-               assert.equal( title.getDotExtension(), '.foo' );
-               assert.equal( title.getMain(), '.foo' );
-               assert.equal( title.getMainText(), '.foo' );
-               assert.equal( title.getPrefixedDb(), '.foo' );
-               assert.equal( title.getPrefixedText(), '.foo' );
+               assert.strictEqual( title.getPrefixedText(), '.foo' );
+               assert.strictEqual( title.getName(), '' );
+               assert.strictEqual( title.getNameText(), '' );
+               assert.strictEqual( title.getExtension(), 'foo' );
+               assert.strictEqual( title.getDotExtension(), '.foo' );
+               assert.strictEqual( title.getMain(), '.foo' );
+               assert.strictEqual( title.getMainText(), '.foo' );
+               assert.strictEqual( title.getPrefixedDb(), '.foo' );
+               assert.strictEqual( title.getPrefixedText(), '.foo' );
        } );
 
        QUnit.test( 'Transformation', function ( assert ) {
                var title;
 
                title = new mw.Title( 'File:quux pif.jpg' );
        } );
 
        QUnit.test( 'Transformation', function ( assert ) {
                var title;
 
                title = new mw.Title( 'File:quux pif.jpg' );
-               assert.equal( title.getNameText(), 'Quux pif', 'First character of title' );
+               assert.strictEqual( title.getNameText(), 'Quux pif', 'First character of title' );
 
                title = new mw.Title( 'File:Glarg_foo_glang.jpg' );
 
                title = new mw.Title( 'File:Glarg_foo_glang.jpg' );
-               assert.equal( title.getNameText(), 'Glarg foo glang', 'Underscores' );
+               assert.strictEqual( title.getNameText(), 'Glarg foo glang', 'Underscores' );
 
                title = new mw.Title( 'User:ABC.DEF' );
 
                title = new mw.Title( 'User:ABC.DEF' );
-               assert.equal( title.toText(), 'User:ABC.DEF', 'Round trip text' );
-               assert.equal( title.getNamespaceId(), 2, 'Parse canonical namespace prefix' );
+               assert.strictEqual( title.toText(), 'User:ABC.DEF', 'Round trip text' );
+               assert.strictEqual( title.getNamespaceId(), 2, 'Parse canonical namespace prefix' );
 
                title = new mw.Title( 'Image:quux pix.jpg' );
 
                title = new mw.Title( 'Image:quux pix.jpg' );
-               assert.equal( title.getNamespacePrefix(), 'File:', 'Transform alias to canonical namespace' );
+               assert.strictEqual( title.getNamespacePrefix(), 'File:', 'Transform alias to canonical namespace' );
 
                title = new mw.Title( 'uSEr:hAshAr' );
 
                title = new mw.Title( 'uSEr:hAshAr' );
-               assert.equal( title.toText(), 'User:HAshAr' );
-               assert.equal( title.getNamespaceId(), 2, 'Case-insensitive namespace prefix' );
+               assert.strictEqual( title.toText(), 'User:HAshAr' );
+               assert.strictEqual( title.getNamespaceId(), 2, 'Case-insensitive namespace prefix' );
 
                title = new mw.Title( 'Foo \u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000 bar' );
 
                title = new mw.Title( 'Foo \u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000 bar' );
-               assert.equal( title.getMain(), 'Foo_bar', 'Merge multiple types of whitespace/underscores into a single underscore' );
+               assert.strictEqual( title.getMain(), 'Foo_bar', 'Merge multiple types of whitespace/underscores into a single underscore' );
 
                title = new mw.Title( 'Foo\u200E\u200F\u202A\u202B\u202C\u202D\u202Ebar' );
 
                title = new mw.Title( 'Foo\u200E\u200F\u202A\u202B\u202C\u202D\u202Ebar' );
-               assert.equal( title.getMain(), 'Foobar', 'Strip Unicode bidi override characters' );
+               assert.strictEqual( title.getMain(), 'Foobar', 'Strip Unicode bidi override characters' );
 
                // Regression test: Previously it would only detect an extension if there is no space after it
                title = new mw.Title( 'Example.js  ' );
 
                // Regression test: Previously it would only detect an extension if there is no space after it
                title = new mw.Title( 'Example.js  ' );
-               assert.equal( title.getExtension(), 'js', 'Space after an extension is stripped' );
+               assert.strictEqual( title.getExtension(), 'js', 'Space after an extension is stripped' );
 
                title = new mw.Title( 'Example#foo' );
 
                title = new mw.Title( 'Example#foo' );
-               assert.equal( title.getFragment(), 'foo', 'Fragment' );
+               assert.strictEqual( title.getFragment(), 'foo', 'Fragment' );
 
                title = new mw.Title( 'Example#_foo_bar baz_' );
 
                title = new mw.Title( 'Example#_foo_bar baz_' );
-               assert.equal( title.getFragment(), ' foo bar baz', 'Fragment' );
+               assert.strictEqual( title.getFragment(), ' foo bar baz', 'Fragment' );
        } );
 
        QUnit.test( 'Namespace detection and conversion', function ( assert ) {
                var title;
 
                title = new mw.Title( 'File:User:Example' );
        } );
 
        QUnit.test( 'Namespace detection and conversion', function ( assert ) {
                var title;
 
                title = new mw.Title( 'File:User:Example' );
-               assert.equal( title.getNamespaceId(), 6, 'Titles can contain namespace prefixes, which are otherwise ignored' );
+               assert.strictEqual( title.getNamespaceId(), 6, 'Titles can contain namespace prefixes, which are otherwise ignored' );
 
                title = new mw.Title( 'Example', 6 );
 
                title = new mw.Title( 'Example', 6 );
-               assert.equal( title.getNamespaceId(), 6, 'Default namespace passed is used' );
+               assert.strictEqual( title.getNamespaceId(), 6, 'Default namespace passed is used' );
 
                title = new mw.Title( 'User:Example', 6 );
 
                title = new mw.Title( 'User:Example', 6 );
-               assert.equal( title.getNamespaceId(), 2, 'Included namespace prefix overrides the given default' );
+               assert.strictEqual( title.getNamespaceId(), 2, 'Included namespace prefix overrides the given default' );
 
                title = new mw.Title( ':Example', 6 );
 
                title = new mw.Title( ':Example', 6 );
-               assert.equal( title.getNamespaceId(), 0, 'Colon forces main namespace' );
+               assert.strictEqual( title.getNamespaceId(), 0, 'Colon forces main namespace' );
 
                title = new mw.Title( 'something.PDF', 6 );
 
                title = new mw.Title( 'something.PDF', 6 );
-               assert.equal( title.toString(), 'File:Something.PDF' );
+               assert.strictEqual( title.toString(), 'File:Something.PDF' );
 
                title = new mw.Title( 'NeilK', 3 );
 
                title = new mw.Title( 'NeilK', 3 );
-               assert.equal( title.toString(), 'User_talk:NeilK' );
-               assert.equal( title.toText(), 'User talk:NeilK' );
+               assert.strictEqual( title.toString(), 'User_talk:NeilK' );
+               assert.strictEqual( title.toText(), 'User talk:NeilK' );
 
                title = new mw.Title( 'Frobisher', 100 );
 
                title = new mw.Title( 'Frobisher', 100 );
-               assert.equal( title.toString(), 'Penguins:Frobisher' );
+               assert.strictEqual( title.toString(), 'Penguins:Frobisher' );
 
                title = new mw.Title( 'antarctic_waterfowl:flightless_yet_cute.jpg' );
 
                title = new mw.Title( 'antarctic_waterfowl:flightless_yet_cute.jpg' );
-               assert.equal( title.toString(), 'Penguins:Flightless_yet_cute.jpg' );
+               assert.strictEqual( title.toString(), 'Penguins:Flightless_yet_cute.jpg' );
 
                title = new mw.Title( 'Penguins:flightless_yet_cute.jpg' );
 
                title = new mw.Title( 'Penguins:flightless_yet_cute.jpg' );
-               assert.equal( title.toString(), 'Penguins:Flightless_yet_cute.jpg' );
+               assert.strictEqual( title.toString(), 'Penguins:Flightless_yet_cute.jpg' );
        } );
 
        QUnit.test( 'Throw error on invalid title', function ( assert ) {
        } );
 
        QUnit.test( 'Throw error on invalid title', function ( assert ) {
                mw.config.set( 'wgCaseSensitiveNamespaces', [] );
 
                title = new mw.Title( 'article' );
                mw.config.set( 'wgCaseSensitiveNamespaces', [] );
 
                title = new mw.Title( 'article' );
-               assert.equal( title.toString(), 'Article', 'Default config: No sensitive namespaces by default. First-letter becomes uppercase' );
+               assert.strictEqual( title.toString(), 'Article', 'Default config: No sensitive namespaces by default. First-letter becomes uppercase' );
 
                title = new mw.Title( 'ß' );
 
                title = new mw.Title( 'ß' );
-               assert.equal( title.toString(), 'ß', 'Uppercasing matches PHP behaviour (ß -> ß, not SS)' );
+               assert.strictEqual( title.toString(), 'ß', 'Uppercasing matches PHP behaviour (ß -> ß, not SS)' );
 
                title = new mw.Title( 'dž (digraph)' );
 
                title = new mw.Title( 'dž (digraph)' );
-               assert.equal( title.toString(), 'Dž_(digraph)', 'Uppercasing matches PHP behaviour (dž -> Dž, not DŽ)' );
+               assert.strictEqual( title.toString(), 'Dž_(digraph)', 'Uppercasing matches PHP behaviour (dž -> Dž, not DŽ)' );
 
                // $wgCapitalLinks = false;
                mw.config.set( 'wgCaseSensitiveNamespaces', [ 0, -2, 1, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15 ] );
 
                title = new mw.Title( 'article' );
 
                // $wgCapitalLinks = false;
                mw.config.set( 'wgCaseSensitiveNamespaces', [ 0, -2, 1, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15 ] );
 
                title = new mw.Title( 'article' );
-               assert.equal( title.toString(), 'article', '$wgCapitalLinks=false: Article namespace is sensitive, first-letter case stays lowercase' );
+               assert.strictEqual( title.toString(), 'article', '$wgCapitalLinks=false: Article namespace is sensitive, first-letter case stays lowercase' );
 
                title = new mw.Title( 'john', 2 );
 
                title = new mw.Title( 'john', 2 );
-               assert.equal( title.toString(), 'User:John', '$wgCapitalLinks=false: User namespace is insensitive, first-letter becomes uppercase' );
+               assert.strictEqual( title.toString(), 'User:John', '$wgCapitalLinks=false: User namespace is insensitive, first-letter becomes uppercase' );
        } );
 
        QUnit.test( 'toString / toText', function ( assert ) {
                var title = new mw.Title( 'Some random page' );
 
        } );
 
        QUnit.test( 'toString / toText', function ( assert ) {
                var title = new mw.Title( 'Some random page' );
 
-               assert.equal( title.toString(), title.getPrefixedDb() );
-               assert.equal( title.toText(), title.getPrefixedText() );
+               assert.strictEqual( title.toString(), title.getPrefixedDb() );
+               assert.strictEqual( title.toText(), title.getPrefixedText() );
        } );
 
        QUnit.test( 'getExtension', function ( assert ) {
                function extTest( pagename, ext, description ) {
                        var title = new mw.Title( pagename );
        } );
 
        QUnit.test( 'getExtension', function ( assert ) {
                function extTest( pagename, ext, description ) {
                        var title = new mw.Title( pagename );
-                       assert.equal( title.getExtension(), ext, description || pagename );
+                       assert.strictEqual( title.getExtension(), ext, description || pagename );
                }
 
                extTest( 'MediaWiki:Vector.js', 'js' );
                }
 
                extTest( 'MediaWiki:Vector.js', 'js' );
                } );
 
                title = new mw.Title( 'Foobar' );
                } );
 
                title = new mw.Title( 'Foobar' );
-               assert.equal( title.getUrl(), '/wiki/Foobar', 'Basic functionality, getUrl uses mw.util.getUrl' );
-               assert.equal( title.getUrl( { action: 'edit' } ), '/w/index.php?title=Foobar&action=edit', 'Basic functionality, \'params\' parameter' );
+               assert.strictEqual( title.getUrl(), '/wiki/Foobar', 'Basic functionality, getUrl uses mw.util.getUrl' );
+               assert.strictEqual( title.getUrl( { action: 'edit' } ), '/w/index.php?title=Foobar&action=edit', 'Basic functionality, \'params\' parameter' );
 
                title = new mw.Title( 'John Doe', 3 );
 
                title = new mw.Title( 'John Doe', 3 );
-               assert.equal( title.getUrl(), '/wiki/User_talk:John_Doe', 'Escaping in title and namespace for urls' );
+               assert.strictEqual( title.getUrl(), '/wiki/User_talk:John_Doe', 'Escaping in title and namespace for urls' );
 
                title = new mw.Title( 'John Cena#And_His_Name_Is', 3 );
 
                title = new mw.Title( 'John Cena#And_His_Name_Is', 3 );
-               assert.equal( title.getUrl( { meme: true } ), '/w/index.php?title=User_talk:John_Cena&meme=true#And_His_Name_Is', 'title with fragment and query parameter' );
+               assert.strictEqual( title.getUrl( { meme: true } ), '/w/index.php?title=User_talk:John_Cena&meme=true#And_His_Name_Is', 'title with fragment and query parameter' );
        } );
 
        QUnit.test( 'newFromImg', function ( assert ) {
        } );
 
        QUnit.test( 'newFromImg', function ( assert ) {
                                prefix = '[' + thisCase.typeOfUrl + ' URL] ';
 
                                assert.notStrictEqual( title, null, prefix + 'Parses successfully' );
                                prefix = '[' + thisCase.typeOfUrl + ' URL] ';
 
                                assert.notStrictEqual( title, null, prefix + 'Parses successfully' );
-                               assert.equal( title.getNameText(), thisCase.nameText, prefix + 'Filename matches original' );
-                               assert.equal( title.getPrefixedText(), thisCase.prefixedText, prefix + 'File page title matches original' );
-                               assert.equal( title.getNamespaceId(), 6, prefix + 'Namespace ID matches File namespace' );
+                               assert.strictEqual( title.getNameText(), thisCase.nameText, prefix + 'Filename matches original' );
+                               assert.strictEqual( title.getPrefixedText(), thisCase.prefixedText, prefix + 'File page title matches original' );
+                               assert.strictEqual( title.getNamespaceId(), 6, prefix + 'Namespace ID matches File namespace' );
                        } else {
                                assert.strictEqual( title, null, thisCase.typeOfUrl + ', should not produce an mw.Title object' );
                        }
                        } else {
                                assert.strictEqual( title, null, thisCase.typeOfUrl + ', should not produce an mw.Title object' );
                        }
                        thisCase = cases[ i ];
 
                        title = mw.Title.newFromText( thisCase.text );
                        thisCase = cases[ i ];
 
                        title = mw.Title.newFromText( thisCase.text );
-                       assert.equal( title.getRelativeText( thisCase.relativeTo ), thisCase.expectedResult );
+                       assert.strictEqual( title.getRelativeText( thisCase.relativeTo ), thisCase.expectedResult );
                }
        } );
 
                }
        } );
 
                        extension = mw.Title.normalizeExtension( thisCase.extension );
 
                        prefix = '[' + thisCase.description + '] ';
                        extension = mw.Title.normalizeExtension( thisCase.extension );
 
                        prefix = '[' + thisCase.description + '] ';
-                       assert.equal( extension, thisCase.expected, prefix + 'Extension as expected' );
+                       assert.strictEqual( extension, thisCase.expected, prefix + 'Extension as expected' );
                }
        } );
 
                }
        } );
 
                                prefix = '[' + thisCase.description + '] ';
 
                                assert.notStrictEqual( title, null, prefix + 'Parses successfully' );
                                prefix = '[' + thisCase.description + '] ';
 
                                assert.notStrictEqual( title, null, prefix + 'Parses successfully' );
-                               assert.equal( title.toText(), thisCase.expected, prefix + 'Title as expected' );
+                               assert.strictEqual( title.toText(), thisCase.expected, prefix + 'Title as expected' );
                        } else {
                                assert.strictEqual( title, null, thisCase.description + ', should not produce an mw.Title object' );
                        }
                        } else {
                                assert.strictEqual( title, null, thisCase.description + ', should not produce an mw.Title object' );
                        }
                                prefix = '[' + thisCase.typeOfName + '] ';
 
                                assert.notStrictEqual( title, null, prefix + 'Parses successfully' );
                                prefix = '[' + thisCase.typeOfName + '] ';
 
                                assert.notStrictEqual( title, null, prefix + 'Parses successfully' );
-                               assert.equal( title.getNameText(), thisCase.nameText, prefix + 'Filename matches original' );
-                               assert.equal( title.getPrefixedText(), thisCase.prefixedText, prefix + 'File page title matches original' );
-                               assert.equal( title.getNamespaceId(), 6, prefix + 'Namespace ID matches File namespace' );
+                               assert.strictEqual( title.getNameText(), thisCase.nameText, prefix + 'Filename matches original' );
+                               assert.strictEqual( title.getPrefixedText(), thisCase.prefixedText, prefix + 'File page title matches original' );
+                               assert.strictEqual( title.getNamespaceId(), 6, prefix + 'Namespace ID matches File namespace' );
                        } else {
                                assert.strictEqual( title, null, thisCase.typeOfName + ', should not produce an mw.Title object' );
                        }
                        } else {
                                assert.strictEqual( title, null, thisCase.typeOfName + ', should not produce an mw.Title object' );
                        }
index f2cb70b..eece8c0 100644 (file)
                uri = new mw.Uri( 'example.com/bar/baz', {
                        strictMode: false
                } );
                uri = new mw.Uri( 'example.com/bar/baz', {
                        strictMode: false
                } );
-               assert.equal( uri.toString(), 'http://example.com/bar/baz', 'normalize URI without protocol or // in loose mode' );
+               assert.strictEqual( uri.toString(), 'http://example.com/bar/baz', 'normalize URI without protocol or // in loose mode' );
 
                uri = new mw.Uri( 'http://example.com/index.php?key=key&hasOwnProperty=hasOwnProperty&constructor=constructor&watch=watch' );
                assert.deepEqual(
 
                uri = new mw.Uri( 'http://example.com/index.php?key=key&hasOwnProperty=hasOwnProperty&constructor=constructor&watch=watch' );
                assert.deepEqual(
                        host: 'www.foo.local',
                        path: '/this'
                } );
                        host: 'www.foo.local',
                        path: '/this'
                } );
-               assert.equal( uri.toString(), 'http://www.foo.local/this', 'Basic properties' );
+               assert.strictEqual( uri.toString(), 'http://www.foo.local/this', 'Basic properties' );
 
                uri = new mw.Uri( {
                        protocol: 'http',
 
                uri = new mw.Uri( {
                        protocol: 'http',
                        query: { hi: 'there' },
                        fragment: 'blah'
                } );
                        query: { hi: 'there' },
                        fragment: 'blah'
                } );
-               assert.equal( uri.toString(), 'http://www.foo.local/this?hi=there#blah', 'More complex properties' );
+               assert.strictEqual( uri.toString(), 'http://www.foo.local/this?hi=there#blah', 'More complex properties' );
 
                assert.throws(
                        function () {
 
                assert.throws(
                        function () {
                MyUri = mw.UriRelative( testuri );
 
                uri = new MyUri();
                MyUri = mw.UriRelative( testuri );
 
                uri = new MyUri();
-               assert.equal( uri.toString(), testuri, 'no arguments' );
+               assert.strictEqual( uri.toString(), testuri, 'no arguments' );
 
                uri = new MyUri( undefined );
 
                uri = new MyUri( undefined );
-               assert.equal( uri.toString(), testuri, 'undefined' );
+               assert.strictEqual( uri.toString(), testuri, 'undefined' );
 
                uri = new MyUri( null );
 
                uri = new MyUri( null );
-               assert.equal( uri.toString(), testuri, 'null' );
+               assert.strictEqual( uri.toString(), testuri, 'null' );
 
                uri = new MyUri( '' );
 
                uri = new MyUri( '' );
-               assert.equal( uri.toString(), testuri, 'empty string' );
+               assert.strictEqual( uri.toString(), testuri, 'empty string' );
 
                uri = new MyUri( null, { overrideKeys: true } );
                assert.deepEqual( uri.query, { a: '2' }, 'null, with options' );
 
                uri = new MyUri( null, { overrideKeys: true } );
                assert.deepEqual( uri.query, { a: '2' }, 'null, with options' );
 
                uri = uriBase.clone();
                uri.fragment = 'frag';
 
                uri = uriBase.clone();
                uri.fragment = 'frag';
-               assert.equal( uri.toString(), 'http://en.wiki.local/w/api.php#frag', 'add a fragment' );
+               assert.strictEqual( uri.toString(), 'http://en.wiki.local/w/api.php#frag', 'add a fragment' );
                uri.fragment = 'café';
                uri.fragment = 'café';
-               assert.equal( uri.toString(), 'http://en.wiki.local/w/api.php#caf%C3%A9', 'fragment is url-encoded' );
+               assert.strictEqual( uri.toString(), 'http://en.wiki.local/w/api.php#caf%C3%A9', 'fragment is url-encoded' );
 
                uri = uriBase.clone();
                uri.host = 'fr.wiki.local';
                uri.port = '8080';
 
                uri = uriBase.clone();
                uri.host = 'fr.wiki.local';
                uri.port = '8080';
-               assert.equal( uri.toString(), 'http://fr.wiki.local:8080/w/api.php', 'change host and port' );
+               assert.strictEqual( uri.toString(), 'http://fr.wiki.local:8080/w/api.php', 'change host and port' );
 
                uri = uriBase.clone();
                uri.query.foo = 'bar';
 
                uri = uriBase.clone();
                uri.query.foo = 'bar';
-               assert.equal( uri.toString(), 'http://en.wiki.local/w/api.php?foo=bar', 'add query arguments' );
+               assert.strictEqual( uri.toString(), 'http://en.wiki.local/w/api.php?foo=bar', 'add query arguments' );
 
                delete uri.query.foo;
 
                delete uri.query.foo;
-               assert.equal( uri.toString(), 'http://en.wiki.local/w/api.php', 'delete query arguments' );
+               assert.strictEqual( uri.toString(), 'http://en.wiki.local/w/api.php', 'delete query arguments' );
 
                uri = uriBase.clone();
                uri.query.foo = 'bar';
 
                uri = uriBase.clone();
                uri.query.foo = 'bar';
-               assert.equal( uri.toString(), 'http://en.wiki.local/w/api.php?foo=bar', 'extend query arguments' );
+               assert.strictEqual( uri.toString(), 'http://en.wiki.local/w/api.php?foo=bar', 'extend query arguments' );
                uri.extend( {
                        foo: 'quux',
                        pif: 'paf'
                } );
                uri.extend( {
                        foo: 'quux',
                        pif: 'paf'
                } );
-               assert.equal( uri.toString().indexOf( 'foo=quux' ) !== -1, true, 'extend query arguments' );
-               assert.equal( uri.toString().indexOf( 'foo=bar' ) !== -1, false, 'extend query arguments' );
-               assert.equal( uri.toString().indexOf( 'pif=paf' ) !== -1, true, 'extend query arguments' );
+               assert.strictEqual( uri.toString().indexOf( 'foo=quux' ) !== -1, true, 'extend query arguments' );
+               assert.strictEqual( uri.toString().indexOf( 'foo=bar' ) !== -1, false, 'extend query arguments' );
+               assert.strictEqual( uri.toString().indexOf( 'pif=paf' ) !== -1, true, 'extend query arguments' );
        } );
 
        QUnit.test( '.getQueryString()', function ( assert ) {
        } );
 
        QUnit.test( '.getQueryString()', function ( assert ) {
                );
 
                uri = new mw.Uri( 'https://example.com/mw/index.php?title=Sandbox/7&other=Sandbox/7&foo' );
                );
 
                uri = new mw.Uri( 'https://example.com/mw/index.php?title=Sandbox/7&other=Sandbox/7&foo' );
-               assert.equal(
+               assert.strictEqual(
                        uri.getQueryString(),
                        'title=Sandbox/7&other=Sandbox%2F7&foo',
                        'title parameter is escaped the wiki-way'
                        uri.getQueryString(),
                        'title=Sandbox/7&other=Sandbox%2F7&foo',
                        'title parameter is escaped the wiki-way'
                clone = original.clone();
 
                assert.deepEqual( clone, original, 'clone has equivalent properties' );
                clone = original.clone();
 
                assert.deepEqual( clone, original, 'clone has equivalent properties' );
-               assert.equal( original.toString(), clone.toString(), 'toString matches original' );
+               assert.strictEqual( original.toString(), clone.toString(), 'toString matches original' );
 
                assert.notStrictEqual( clone, original, 'clone is a different object when compared by reference' );
 
 
                assert.notStrictEqual( clone, original, 'clone is a different object when compared by reference' );
 
 
                // Verify parts and total length instead of entire string because order
                // of iteration can vary.
 
                // Verify parts and total length instead of entire string because order
                // of iteration can vary.
-               assert.equal( uri.toString().indexOf( 'm=bar' ) !== -1, true, 'toString preserves other values' );
-               assert.equal( uri.toString().indexOf( 'n=x&n=y&n=z' ) !== -1, true, 'toString parameter includes all values of an array query parameter' );
-               assert.equal( uri.toString().length, 'http://www.example.com/dir/?m=bar&n=x&n=y&n=z'.length, 'toString matches expected string' );
+               assert.strictEqual( uri.toString().indexOf( 'm=bar' ) !== -1, true, 'toString preserves other values' );
+               assert.strictEqual( uri.toString().indexOf( 'n=x&n=y&n=z' ) !== -1, true, 'toString parameter includes all values of an array query parameter' );
+               assert.strictEqual( uri.toString().length, 'http://www.example.com/dir/?m=bar&n=x&n=y&n=z'.length, 'toString matches expected string' );
 
                uri = new mw.Uri( 'http://www.example.com/dir/?m=foo&m=bar&n=1', {
                        overrideKeys: false
 
                uri = new mw.Uri( 'http://www.example.com/dir/?m=foo&m=bar&n=1', {
                        overrideKeys: false
 
                // Verify parts and total length instead of entire string because order
                // of iteration can vary.
 
                // Verify parts and total length instead of entire string because order
                // of iteration can vary.
-               assert.equal( uri.toString().indexOf( 'm=foo&m=bar' ) !== -1, true, 'toString preserves other values' );
-               assert.equal( uri.toString().indexOf( 'n=x&n=y&n=z' ) !== -1, true, 'toString parameter includes all values of an array query parameter' );
-               assert.equal( uri.toString().length, 'http://www.example.com/dir/?m=foo&m=bar&n=x&n=y&n=z'.length, 'toString matches expected string' );
+               assert.strictEqual( uri.toString().indexOf( 'm=foo&m=bar' ) !== -1, true, 'toString preserves other values' );
+               assert.strictEqual( uri.toString().indexOf( 'n=x&n=y&n=z' ) !== -1, true, 'toString parameter includes all values of an array query parameter' );
+               assert.strictEqual( uri.toString().length, 'http://www.example.com/dir/?m=foo&m=bar&n=x&n=y&n=z'.length, 'toString matches expected string' );
 
                // Remove query values
                uri.query.m.splice( 0, 1 );
                delete uri.query.n;
 
 
                // Remove query values
                uri.query.m.splice( 0, 1 );
                delete uri.query.n;
 
-               assert.equal( uri.toString(), 'http://www.example.com/dir/?m=bar', 'deletion properties' );
+               assert.strictEqual( uri.toString(), 'http://www.example.com/dir/?m=bar', 'deletion properties' );
 
                // Remove more query values, leaving an empty array
                uri.query.m.splice( 0, 1 );
 
                // Remove more query values, leaving an empty array
                uri.query.m.splice( 0, 1 );
-               assert.equal( uri.toString(), 'http://www.example.com/dir/', 'empty array value is ommitted' );
+               assert.strictEqual( uri.toString(), 'http://www.example.com/dir/', 'empty array value is ommitted' );
        } );
 
        QUnit.test( 'Variable defaultUri', function ( assert ) {
        } );
 
        QUnit.test( 'Variable defaultUri', function ( assert ) {
                        'basic object properties'
                );
 
                        'basic object properties'
                );
 
-               assert.equal( uri.getUserInfo(), 'auth', 'user info' );
+               assert.strictEqual( uri.getUserInfo(), 'auth', 'user info' );
 
 
-               assert.equal( uri.getAuthority(), 'auth@www.example.com:81', 'authority equal to auth@hostport' );
+               assert.strictEqual( uri.getAuthority(), 'auth@www.example.com:81', 'authority equal to auth@hostport' );
 
 
-               assert.equal( uri.getHostPort(), 'www.example.com:81', 'hostport equal to host:port' );
+               assert.strictEqual( uri.getHostPort(), 'www.example.com:81', 'hostport equal to host:port' );
 
                queryString = uri.getQueryString();
 
                queryString = uri.getQueryString();
-               assert.equal( queryString.indexOf( 'q1=0' ) !== -1, true, 'query param with numbers' );
-               assert.equal( queryString.indexOf( 'test1' ) !== -1, true, 'query param with null value is included' );
-               assert.equal( queryString.indexOf( 'test1=' ) !== -1, false, 'query param with null value does not generate equals sign' );
-               assert.equal( queryString.indexOf( 'test2=value+%28escaped%29' ) !== -1, true, 'query param is url escaped' );
+               assert.strictEqual( queryString.indexOf( 'q1=0' ) !== -1, true, 'query param with numbers' );
+               assert.strictEqual( queryString.indexOf( 'test1' ) !== -1, true, 'query param with null value is included' );
+               assert.strictEqual( queryString.indexOf( 'test1=' ) !== -1, false, 'query param with null value does not generate equals sign' );
+               assert.strictEqual( queryString.indexOf( 'test2=value+%28escaped%29' ) !== -1, true, 'query param is url escaped' );
 
                relativePath = uri.getRelativePath();
                assert.ok( relativePath.indexOf( uri.path ) >= 0, 'path in relative path' );
 
                relativePath = uri.getRelativePath();
                assert.ok( relativePath.indexOf( uri.path ) >= 0, 'path in relative path' );
                UriRel = mw.UriRelative( 'glork://en.wiki.local/foo.php' );
 
                uri = new UriRel( '//en.wiki.local/w/api.php' );
                UriRel = mw.UriRelative( 'glork://en.wiki.local/foo.php' );
 
                uri = new UriRel( '//en.wiki.local/w/api.php' );
-               assert.equal( uri.protocol, 'glork', 'create protocol-relative URLs with same protocol as document' );
+               assert.strictEqual( uri.protocol, 'glork', 'create protocol-relative URLs with same protocol as document' );
 
                uri = new UriRel( '/foo.com' );
 
                uri = new UriRel( '/foo.com' );
-               assert.equal( uri.toString(), 'glork://en.wiki.local/foo.com', 'handle absolute paths by supplying protocol and host from document in loose mode' );
+               assert.strictEqual( uri.toString(), 'glork://en.wiki.local/foo.com', 'handle absolute paths by supplying protocol and host from document in loose mode' );
 
                uri = new UriRel( 'http:/foo.com' );
 
                uri = new UriRel( 'http:/foo.com' );
-               assert.equal( uri.toString(), 'http://en.wiki.local/foo.com', 'handle absolute paths by supplying host from document in loose mode' );
+               assert.strictEqual( uri.toString(), 'http://en.wiki.local/foo.com', 'handle absolute paths by supplying host from document in loose mode' );
 
                uri = new UriRel( '/foo.com', true );
 
                uri = new UriRel( '/foo.com', true );
-               assert.equal( uri.toString(), 'glork://en.wiki.local/foo.com', 'handle absolute paths by supplying protocol and host from document in strict mode' );
+               assert.strictEqual( uri.toString(), 'glork://en.wiki.local/foo.com', 'handle absolute paths by supplying protocol and host from document in strict mode' );
 
                uri = new UriRel( 'http:/foo.com', true );
 
                uri = new UriRel( 'http:/foo.com', true );
-               assert.equal( uri.toString(), 'http://en.wiki.local/foo.com', 'handle absolute paths by supplying host from document in strict mode' );
+               assert.strictEqual( uri.toString(), 'http://en.wiki.local/foo.com', 'handle absolute paths by supplying host from document in strict mode' );
        } );
 
        QUnit.test( 'T37658', function ( assert ) {
        } );
 
        QUnit.test( 'T37658', function ( assert ) {
                UriClass = mw.UriRelative( testProtocol + testServer + '/some/path/index.html' );
                uri = new UriClass( testPath );
                href = uri.toString();
                UriClass = mw.UriRelative( testProtocol + testServer + '/some/path/index.html' );
                uri = new UriClass( testPath );
                href = uri.toString();
-               assert.equal( href, testProtocol + testServer + testPath, 'Root-relative URL gets host & protocol supplied' );
+               assert.strictEqual( href, testProtocol + testServer + testPath, 'Root-relative URL gets host & protocol supplied' );
 
                UriClass = mw.UriRelative( testProtocol + testServer + ':' + testPort + '/some/path.php' );
                uri = new UriClass( testPath );
                href = uri.toString();
 
                UriClass = mw.UriRelative( testProtocol + testServer + ':' + testPort + '/some/path.php' );
                uri = new UriClass( testPath );
                href = uri.toString();
-               assert.equal( href, testProtocol + testServer + ':' + testPort + testPath, 'Root-relative URL gets host, protocol, and port supplied' );
+               assert.strictEqual( href, testProtocol + testServer + ':' + testPort + testPath, 'Root-relative URL gets host, protocol, and port supplied' );
        } );
 }( mediaWiki ) );
        } );
 }( mediaWiki ) );
index 4170897..17eaa7e 100644 (file)
@@ -65,7 +65,7 @@
                QUnit.test( 'Plural Test for ' + langCode, function ( assert ) {
                        var i;
                        for ( i = 0; i < tests.length; i++ ) {
                QUnit.test( 'Plural Test for ' + langCode, function ( assert ) {
                        var i;
                        for ( i = 0; i < tests.length; i++ ) {
-                               assert.equal(
+                               assert.strictEqual(
                                        mw.language.convertPlural( tests[ i ][ 0 ], tests[ i ][ 1 ] ),
                                        tests[ i ][ 2 ],
                                        tests[ i ][ 3 ]
                                        mw.language.convertPlural( tests[ i ][ 0 ], tests[ i ][ 1 ] ),
                                        tests[ i ][ 2 ],
                                        tests[ i ][ 3 ]
index 9bff988..c2abc08 100644 (file)
@@ -21,7 +21,7 @@
                var experiment = createExperiment(),
                        token = '123457890';
 
                var experiment = createExperiment(),
                        token = '123457890';
 
-               assert.equal(
+               assert.strictEqual(
                        getBucket( experiment, token ),
                        getBucket( experiment, token ),
                        'It returns the same bucket for the same experiment-token pair.'
                        getBucket( experiment, token ),
                        getBucket( experiment, token ),
                        'It returns the same bucket for the same experiment-token pair.'
@@ -33,7 +33,7 @@
                        A: 0.314159265359
                };
 
                        A: 0.314159265359
                };
 
-               assert.equal(
+               assert.strictEqual(
                        getBucket( experiment, token ),
                        'A',
                        'It returns the bucket if only one is defined.'
                        getBucket( experiment, token ),
                        'A',
                        'It returns the bucket if only one is defined.'
@@ -43,7 +43,7 @@
                experiment = createExperiment();
                experiment.enabled = false;
 
                experiment = createExperiment();
                experiment.enabled = false;
 
-               assert.equal(
+               assert.strictEqual(
                        getBucket( experiment, token ),
                        'control',
                        'It returns "control" if the experiment is disabled.'
                        getBucket( experiment, token ),
                        'control',
                        'It returns "control" if the experiment is disabled.'
@@ -53,7 +53,7 @@
                experiment = createExperiment();
                experiment.buckets = {};
 
                experiment = createExperiment();
                experiment.buckets = {};
 
-               assert.equal(
+               assert.strictEqual(
                        getBucket( experiment, token ),
                        'control',
                        'It returns "control" if the experiment doesn\'t have any buckets.'
                        getBucket( experiment, token ),
                        'control',
                        'It returns "control" if the experiment doesn\'t have any buckets.'
index 16f8cf3..91afec3 100644 (file)
@@ -10,7 +10,7 @@
                        'throw a TypeError if argument is not a string'
                );
 
                        'throw a TypeError if argument is not a string'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        mw.html.escape( '<mw awesome="awesome" value=\'test\' />' ),
                        '&lt;mw awesome=&quot;awesome&quot; value=&#039;test&#039; /&gt;',
                        'Escape special characters to html entities'
                        mw.html.escape( '<mw awesome="awesome" value=\'test\' />' ),
                        '&lt;mw awesome=&quot;awesome&quot; value=&#039;test&#039; /&gt;',
                        'Escape special characters to html entities'
@@ -18,7 +18,7 @@
        } );
 
        QUnit.test( 'element()', function ( assert ) {
        } );
 
        QUnit.test( 'element()', function ( assert ) {
-               assert.equal(
+               assert.strictEqual(
                        mw.html.element(),
                        '<undefined/>',
                        'return valid html even without arguments'
                        mw.html.element(),
                        '<undefined/>',
                        'return valid html even without arguments'
        } );
 
        QUnit.test( 'element( tagName )', function ( assert ) {
        } );
 
        QUnit.test( 'element( tagName )', function ( assert ) {
-               assert.equal( mw.html.element( 'div' ), '<div/>', 'DIV' );
+               assert.strictEqual( mw.html.element( 'div' ), '<div/>', 'DIV' );
        } );
 
        QUnit.test( 'element( tagName, attrs )', function ( assert ) {
        } );
 
        QUnit.test( 'element( tagName, attrs )', function ( assert ) {
-               assert.equal( mw.html.element( 'div', {} ), '<div/>', 'DIV' );
+               assert.strictEqual( mw.html.element( 'div', {} ), '<div/>', 'DIV' );
 
 
-               assert.equal(
+               assert.strictEqual(
                        mw.html.element(
                                'div', {
                                        id: 'foobar'
                        mw.html.element(
                                'div', {
                                        id: 'foobar'
 
        QUnit.test( 'element( tagName, attrs, content )', function ( assert ) {
 
 
        QUnit.test( 'element( tagName, attrs, content )', function ( assert ) {
 
-               assert.equal( mw.html.element( 'div', {}, '' ), '<div></div>', 'DIV with empty attributes and content' );
+               assert.strictEqual( mw.html.element( 'div', {}, '' ), '<div></div>', 'DIV with empty attributes and content' );
 
 
-               assert.equal( mw.html.element( 'p', {}, 12 ), '<p>12</p>', 'numbers as content cast to strings' );
+               assert.strictEqual( mw.html.element( 'p', {}, 12 ), '<p>12</p>', 'numbers as content cast to strings' );
 
 
-               assert.equal( mw.html.element( 'p', { title: 12 }, '' ), '<p title="12"></p>', 'number as attribute value' );
+               assert.strictEqual( mw.html.element( 'p', { title: 12 }, '' ), '<p title="12"></p>', 'number as attribute value' );
 
 
-               assert.equal(
+               assert.strictEqual(
                        mw.html.element(
                                'div',
                                {},
                        mw.html.element(
                                'div',
                                {},
@@ -63,7 +63,7 @@
                        'unescaped content with mw.html.Raw'
                );
 
                        'unescaped content with mw.html.Raw'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        mw.html.element(
                                'option',
                                {
                        mw.html.element(
                                'option',
                                {
@@ -75,7 +75,7 @@
                        'boolean true attribute value'
                );
 
                        'boolean true attribute value'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        mw.html.element(
                                'option',
                                {
                        mw.html.element(
                                'option',
                                {
                        'boolean false attribute value'
                );
 
                        'boolean false attribute value'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        mw.html.element( 'div', null, 'a' ),
                        '<div>a</div>',
                        'Skip attributes with null' );
 
                        mw.html.element( 'div', null, 'a' ),
                        '<div>a</div>',
                        'Skip attributes with null' );
 
-               assert.equal(
+               assert.strictEqual(
                        mw.html.element( 'a', {
                                href: 'http://mediawiki.org/w/index.php?title=RL&action=history'
                        }, 'a' ),
                        mw.html.element( 'a', {
                                href: 'http://mediawiki.org/w/index.php?title=RL&action=history'
                        }, 'a' ),
index 1f7a5ec..3d3eedd 100644 (file)
@@ -9,7 +9,7 @@
                );
 
                return mw.loader.using( 'test.inspect.script' ).then( function () {
                );
 
                return mw.loader.using( 'test.inspect.script' ).then( function () {
-                       assert.equal(
+                       assert.strictEqual(
                                mw.inspect.getModuleSize( 'test.inspect.script' ),
                                // name, script function
                                43,
                                mw.inspect.getModuleSize( 'test.inspect.script' ),
                                // name, script function
                                43,
@@ -26,7 +26,7 @@
                );
 
                return mw.loader.using( 'test.inspect.both' ).then( function () {
                );
 
                return mw.loader.using( 'test.inspect.both' ).then( function () {
-                       assert.equal(
+                       assert.strictEqual(
                                mw.inspect.getModuleSize( 'test.inspect.both' ),
                                // name, script function, styles object
                                64,
                                mw.inspect.getModuleSize( 'test.inspect.both' ),
                                // name, script function, styles object
                                64,
@@ -44,7 +44,7 @@
                );
 
                return mw.loader.using( 'test.inspect.scriptmsg' ).then( function () {
                );
 
                return mw.loader.using( 'test.inspect.scriptmsg' ).then( function () {
-                       assert.equal(
+                       assert.strictEqual(
                                mw.inspect.getModuleSize( 'test.inspect.scriptmsg' ),
                                // name, script function, empty styles object, messages object
                                74,
                                mw.inspect.getModuleSize( 'test.inspect.scriptmsg' ),
                                // name, script function, empty styles object, messages object
                                74,
@@ -63,7 +63,7 @@
                );
 
                return mw.loader.using( 'test.inspect.all' ).then( function () {
                );
 
                return mw.loader.using( 'test.inspect.all' ).then( function () {
-                       assert.equal(
+                       assert.strictEqual(
                                mw.inspect.getModuleSize( 'test.inspect.all' ),
                                // name, script function, styles object, messages object, templates object
                                126,
                                mw.inspect.getModuleSize( 'test.inspect.all' ),
                                // name, script function, styles object, messages object, templates object
                                126,
index 71362fd..7701170 100644 (file)
@@ -7,8 +7,8 @@
 
        // When the expected result is the same in both modes
        function assertBothModes( assert, parserArguments, expectedResult, assertMessage ) {
 
        // When the expected result is the same in both modes
        function assertBothModes( assert, parserArguments, expectedResult, assertMessage ) {
-               assert.equal( formatText.apply( null, parserArguments ), expectedResult, assertMessage + ' when format is \'text\'' );
-               assert.equal( formatParse.apply( null, parserArguments ), expectedResult, assertMessage + ' when format is \'parse\'' );
+               assert.strictEqual( formatText.apply( null, parserArguments ), expectedResult, assertMessage + ' when format is \'text\'' );
+               assert.strictEqual( formatParse.apply( null, parserArguments ), expectedResult, assertMessage + ' when format is \'parse\'' );
        }
 
        QUnit.module( 'mediawiki.jqueryMsg', QUnit.newMwEnvironment( {
        }
 
        QUnit.module( 'mediawiki.jqueryMsg', QUnit.newMwEnvironment( {
        QUnit.test( 'Replace', function ( assert ) {
                mw.messages.set( 'simple', 'Foo $1 baz $2' );
 
        QUnit.test( 'Replace', function ( assert ) {
                mw.messages.set( 'simple', 'Foo $1 baz $2' );
 
-               assert.equal( formatParse( 'simple' ), 'Foo $1 baz $2', 'Replacements with no substitutes' );
-               assert.equal( formatParse( 'simple', 'bar' ), 'Foo bar baz $2', 'Replacements with less substitutes' );
-               assert.equal( formatParse( 'simple', 'bar', 'quux' ), 'Foo bar baz quux', 'Replacements with all substitutes' );
+               assert.strictEqual( formatParse( 'simple' ), 'Foo $1 baz $2', 'Replacements with no substitutes' );
+               assert.strictEqual( formatParse( 'simple', 'bar' ), 'Foo bar baz $2', 'Replacements with less substitutes' );
+               assert.strictEqual( formatParse( 'simple', 'bar', 'quux' ), 'Foo bar baz quux', 'Replacements with all substitutes' );
 
                mw.messages.set( 'plain-input', '<foo foo="foo">x$1y&lt;</foo>z' );
 
 
                mw.messages.set( 'plain-input', '<foo foo="foo">x$1y&lt;</foo>z' );
 
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'plain-input', 'bar' ),
                        '&lt;foo foo="foo"&gt;xbary&amp;lt;&lt;/foo&gt;z',
                        'Input is not considered html'
                        formatParse( 'plain-input', 'bar' ),
                        '&lt;foo foo="foo"&gt;xbary&amp;lt;&lt;/foo&gt;z',
                        'Input is not considered html'
 
                mw.messages.set( 'plain-replace', 'Foo $1' );
 
 
                mw.messages.set( 'plain-replace', 'Foo $1' );
 
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'plain-replace', '<bar bar="bar">&gt;</bar>' ),
                        'Foo &lt;bar bar="bar"&gt;&amp;gt;&lt;/bar&gt;',
                        'Replacement is not considered html'
                        formatParse( 'plain-replace', '<bar bar="bar">&gt;</bar>' ),
                        'Foo &lt;bar bar="bar"&gt;&amp;gt;&lt;/bar&gt;',
                        'Replacement is not considered html'
 
                mw.messages.set( 'object-replace', 'Foo $1' );
 
 
                mw.messages.set( 'object-replace', 'Foo $1' );
 
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'object-replace', $( '<div class="bar">&gt;</div>' ) ),
                        'Foo <div class="bar">&gt;</div>',
                        'jQuery objects are preserved as raw html'
                );
 
                        formatParse( 'object-replace', $( '<div class="bar">&gt;</div>' ) ),
                        'Foo <div class="bar">&gt;</div>',
                        'jQuery objects are preserved as raw html'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'object-replace', $( '<div class="bar">&gt;</div>' ).get( 0 ) ),
                        'Foo <div class="bar">&gt;</div>',
                        'HTMLElement objects are preserved as raw html'
                );
 
                        formatParse( 'object-replace', $( '<div class="bar">&gt;</div>' ).get( 0 ) ),
                        'Foo <div class="bar">&gt;</div>',
                        'HTMLElement objects are preserved as raw html'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'object-replace', $( '<div class="bar">&gt;</div>' ).toArray() ),
                        'Foo <div class="bar">&gt;</div>',
                        'HTMLElement[] arrays are preserved as raw html'
                );
 
                        formatParse( 'object-replace', $( '<div class="bar">&gt;</div>' ).toArray() ),
                        'Foo <div class="bar">&gt;</div>',
                        'HTMLElement[] arrays are preserved as raw html'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'external-link-replace', 'http://example.org/?x=y&z' ),
                        'Foo <a href="http://example.org/?x=y&amp;z">bar</a>',
                        'Href is not double-escaped in wikilink function'
                );
                        formatParse( 'external-link-replace', 'http://example.org/?x=y&z' ),
                        'Foo <a href="http://example.org/?x=y&amp;z">bar</a>',
                        'Href is not double-escaped in wikilink function'
                );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'external-link-plural', 1, 'http://example.org' ),
                        'Foo is <a href="http://example.org">one</a> things.',
                        'Link is expanded inside plural and is not escaped html'
                );
                        formatParse( 'external-link-plural', 1, 'http://example.org' ),
                        'Foo is <a href="http://example.org">one</a> things.',
                        'Link is expanded inside plural and is not escaped html'
                );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'external-link-plural', 2, 'http://example.org' ),
                        'Foo <a href="http://example.org">two</a> things.',
                        'Link is expanded inside an explicit plural form and is not escaped html'
                );
                        formatParse( 'external-link-plural', 2, 'http://example.org' ),
                        'Foo <a href="http://example.org">two</a> things.',
                        'Link is expanded inside an explicit plural form and is not escaped html'
                );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'external-link-plural', 3 ),
                        'Foo three things.',
                        'A simple explicit plural form co-existing with complex explicit plural forms'
                );
                        formatParse( 'external-link-plural', 3 ),
                        'Foo three things.',
                        'A simple explicit plural form co-existing with complex explicit plural forms'
                );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'external-link-plural', 4, 'http://example.org' ),
                        'Foo a=b things.',
                        'Only first equal sign is used as delimiter for explicit plural form. Repeated equal signs does not create issue'
                );
                        formatParse( 'external-link-plural', 4, 'http://example.org' ),
                        'Foo a=b things.',
                        'Only first equal sign is used as delimiter for explicit plural form. Repeated equal signs does not create issue'
                );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'external-link-plural', 6, 'http://example.org' ),
                        'Foo are <a href="http://example.org">some</a> things.',
                        'Plural fallback to the "other" plural form'
                );
                        formatParse( 'external-link-plural', 6, 'http://example.org' ),
                        'Foo are <a href="http://example.org">some</a> things.',
                        'Plural fallback to the "other" plural form'
                );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'plural-only-explicit-forms', 2 ),
                        'It is a double room.',
                        'Plural with explicit forms alone.'
                        formatParse( 'plural-only-explicit-forms', 2 ),
                        'It is a double room.',
                        'Plural with explicit forms alone.'
        } );
 
        QUnit.test( 'Plural', function ( assert ) {
        } );
 
        QUnit.test( 'Plural', function ( assert ) {
-               assert.equal( formatParse( 'plural-msg', 0 ), 'Found 0 items', 'Plural test for english with zero as count' );
-               assert.equal( formatParse( 'plural-msg', 1 ), 'Found 1 item', 'Singular test for english' );
-               assert.equal( formatParse( 'plural-msg', 2 ), 'Found 2 items', 'Plural test for english' );
-               assert.equal( formatParse( 'plural-msg-explicit-forms-nested', 6 ), 'Found 6 results', 'Plural message with explicit plural forms' );
-               assert.equal( formatParse( 'plural-msg-explicit-forms-nested', 0 ), 'Found no results in Wiki', 'Plural message with explicit plural forms, with nested {{SITENAME}}' );
-               assert.equal( formatParse( 'plural-msg-explicit-forms-nested', 1 ), 'Found 1 result', 'Plural message with explicit plural forms with placeholder nested' );
-               assert.equal( formatParse( 'plural-empty-explicit-form', 0 ), 'There is me.' );
-               assert.equal( formatParse( 'plural-empty-explicit-form', 1 ), 'There is me and other people.' );
-               assert.equal( formatParse( 'plural-empty-explicit-form', 2 ), 'There is me and other people.' );
+               assert.strictEqual( formatParse( 'plural-msg', 0 ), 'Found 0 items', 'Plural test for english with zero as count' );
+               assert.strictEqual( formatParse( 'plural-msg', 1 ), 'Found 1 item', 'Singular test for english' );
+               assert.strictEqual( formatParse( 'plural-msg', 2 ), 'Found 2 items', 'Plural test for english' );
+               assert.strictEqual( formatParse( 'plural-msg-explicit-forms-nested', 6 ), 'Found 6 results', 'Plural message with explicit plural forms' );
+               assert.strictEqual( formatParse( 'plural-msg-explicit-forms-nested', 0 ), 'Found no results in Wiki', 'Plural message with explicit plural forms, with nested {{SITENAME}}' );
+               assert.strictEqual( formatParse( 'plural-msg-explicit-forms-nested', 1 ), 'Found 1 result', 'Plural message with explicit plural forms with placeholder nested' );
+               assert.strictEqual( formatParse( 'plural-empty-explicit-form', 0 ), 'There is me.' );
+               assert.strictEqual( formatParse( 'plural-empty-explicit-form', 1 ), 'There is me and other people.' );
+               assert.strictEqual( formatParse( 'plural-empty-explicit-form', 2 ), 'There is me and other people.' );
        } );
 
        QUnit.test( 'Gender', function ( assert ) {
        } );
 
        QUnit.test( 'Gender', function ( assert ) {
                // TODO: These tests should be for mw.msg once mw.msg integrated with mw.jqueryMsg
                // TODO: English may not be the best language for these tests. Use a language like Arabic or Russian
                mw.user.options.set( 'gender', 'male' );
                // TODO: These tests should be for mw.msg once mw.msg integrated with mw.jqueryMsg
                // TODO: English may not be the best language for these tests. Use a language like Arabic or Russian
                mw.user.options.set( 'gender', 'male' );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'gender-msg', 'Bob', 'male' ),
                        'Bob: blue',
                        'Masculine from string "male"'
                );
                        formatParse( 'gender-msg', 'Bob', 'male' ),
                        'Bob: blue',
                        'Masculine from string "male"'
                );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'gender-msg', 'Bob', mw.user ),
                        'Bob: blue',
                        'Masculine from mw.user object'
                );
                        formatParse( 'gender-msg', 'Bob', mw.user ),
                        'Bob: blue',
                        'Masculine from mw.user object'
                );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'gender-msg-currentuser' ),
                        'blue',
                        'Masculine for current user'
                );
 
                mw.user.options.set( 'gender', 'female' );
                        formatParse( 'gender-msg-currentuser' ),
                        'blue',
                        'Masculine for current user'
                );
 
                mw.user.options.set( 'gender', 'female' );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'gender-msg', 'Alice', 'female' ),
                        'Alice: pink',
                        'Feminine from string "female"' );
                        formatParse( 'gender-msg', 'Alice', 'female' ),
                        'Alice: pink',
                        'Feminine from string "female"' );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'gender-msg', 'Alice', mw.user ),
                        'Alice: pink',
                        'Feminine from mw.user object'
                );
                        formatParse( 'gender-msg', 'Alice', mw.user ),
                        'Alice: pink',
                        'Feminine from mw.user object'
                );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'gender-msg-currentuser' ),
                        'pink',
                        'Feminine for current user'
                );
 
                mw.user.options.set( 'gender', 'unknown' );
                        formatParse( 'gender-msg-currentuser' ),
                        'pink',
                        'Feminine for current user'
                );
 
                mw.user.options.set( 'gender', 'unknown' );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'gender-msg', 'Foo', mw.user ),
                        'Foo: green',
                        'Neutral from mw.user object' );
                        formatParse( 'gender-msg', 'Foo', mw.user ),
                        'Foo: green',
                        'Neutral from mw.user object' );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'gender-msg', 'User' ),
                        'User: green',
                        'Neutral when no parameter given' );
                        formatParse( 'gender-msg', 'User' ),
                        'User: green',
                        'Neutral when no parameter given' );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'gender-msg', 'User', 'unknown' ),
                        'User: green',
                        'Neutral from string "unknown"'
                );
                        formatParse( 'gender-msg', 'User', 'unknown' ),
                        'User: green',
                        'Neutral from string "unknown"'
                );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'gender-msg-currentuser' ),
                        'green',
                        'Neutral for current user'
                        formatParse( 'gender-msg-currentuser' ),
                        'green',
                        'Neutral for current user'
 
                mw.messages.set( 'gender-msg-one-form', '{{GENDER:$1|User}}: $2 {{PLURAL:$2|edit|edits}}' );
 
 
                mw.messages.set( 'gender-msg-one-form', '{{GENDER:$1|User}}: $2 {{PLURAL:$2|edit|edits}}' );
 
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'gender-msg-one-form', 'male', 10 ),
                        'User: 10 edits',
                        'Gender neutral and plural form'
                );
                        formatParse( 'gender-msg-one-form', 'male', 10 ),
                        'User: 10 edits',
                        'Gender neutral and plural form'
                );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'gender-msg-one-form', 'female', 1 ),
                        'User: 1 edit',
                        'Gender neutral and singular form'
                );
 
                mw.messages.set( 'gender-msg-lowercase', '{{gender:$1|he|she}} is awesome' );
                        formatParse( 'gender-msg-one-form', 'female', 1 ),
                        'User: 1 edit',
                        'Gender neutral and singular form'
                );
 
                mw.messages.set( 'gender-msg-lowercase', '{{gender:$1|he|she}} is awesome' );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'gender-msg-lowercase', 'male' ),
                        'he is awesome',
                        'Gender masculine'
                );
                        formatParse( 'gender-msg-lowercase', 'male' ),
                        'he is awesome',
                        'Gender masculine'
                );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'gender-msg-lowercase', 'female' ),
                        'she is awesome',
                        'Gender feminine'
                );
 
                mw.messages.set( 'gender-msg-wrong', '{{gender}} test' );
                        formatParse( 'gender-msg-lowercase', 'female' ),
                        'she is awesome',
                        'Gender feminine'
                );
 
                mw.messages.set( 'gender-msg-wrong', '{{gender}} test' );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'gender-msg-wrong', 'female' ),
                        ' test',
                        'Invalid syntax should result in {{gender}} simply being stripped away'
                        formatParse( 'gender-msg-wrong', 'female' ),
                        ' test',
                        'Invalid syntax should result in {{gender}} simply being stripped away'
 
        QUnit.test( 'Case changing', function ( assert ) {
                mw.messages.set( 'to-lowercase', '{{lc:thIS hAS MEsSed uP CapItaliZatiON}}' );
 
        QUnit.test( 'Case changing', function ( assert ) {
                mw.messages.set( 'to-lowercase', '{{lc:thIS hAS MEsSed uP CapItaliZatiON}}' );
-               assert.equal( formatParse( 'to-lowercase' ), 'this has messed up capitalization', 'To lowercase' );
+               assert.strictEqual( formatParse( 'to-lowercase' ), 'this has messed up capitalization', 'To lowercase' );
 
                mw.messages.set( 'to-caps', '{{uc:thIS hAS MEsSed uP CapItaliZatiON}}' );
 
                mw.messages.set( 'to-caps', '{{uc:thIS hAS MEsSed uP CapItaliZatiON}}' );
-               assert.equal( formatParse( 'to-caps' ), 'THIS HAS MESSED UP CAPITALIZATION', 'To caps' );
+               assert.strictEqual( formatParse( 'to-caps' ), 'THIS HAS MESSED UP CAPITALIZATION', 'To caps' );
 
                mw.messages.set( 'uc-to-lcfirst', '{{lcfirst:THis hAS MEsSed uP CapItaliZatiON}}' );
                mw.messages.set( 'lc-to-lcfirst', '{{lcfirst:thIS hAS MEsSed uP CapItaliZatiON}}' );
 
                mw.messages.set( 'uc-to-lcfirst', '{{lcfirst:THis hAS MEsSed uP CapItaliZatiON}}' );
                mw.messages.set( 'lc-to-lcfirst', '{{lcfirst:thIS hAS MEsSed uP CapItaliZatiON}}' );
-               assert.equal( formatParse( 'uc-to-lcfirst' ), 'tHis hAS MEsSed uP CapItaliZatiON', 'Lcfirst caps' );
-               assert.equal( formatParse( 'lc-to-lcfirst' ), 'thIS hAS MEsSed uP CapItaliZatiON', 'Lcfirst lowercase' );
+               assert.strictEqual( formatParse( 'uc-to-lcfirst' ), 'tHis hAS MEsSed uP CapItaliZatiON', 'Lcfirst caps' );
+               assert.strictEqual( formatParse( 'lc-to-lcfirst' ), 'thIS hAS MEsSed uP CapItaliZatiON', 'Lcfirst lowercase' );
 
                mw.messages.set( 'uc-to-ucfirst', '{{ucfirst:THis hAS MEsSed uP CapItaliZatiON}}' );
                mw.messages.set( 'lc-to-ucfirst', '{{ucfirst:thIS hAS MEsSed uP CapItaliZatiON}}' );
 
                mw.messages.set( 'uc-to-ucfirst', '{{ucfirst:THis hAS MEsSed uP CapItaliZatiON}}' );
                mw.messages.set( 'lc-to-ucfirst', '{{ucfirst:thIS hAS MEsSed uP CapItaliZatiON}}' );
-               assert.equal( formatParse( 'uc-to-ucfirst' ), 'THis hAS MEsSed uP CapItaliZatiON', 'Ucfirst caps' );
-               assert.equal( formatParse( 'lc-to-ucfirst' ), 'ThIS hAS MEsSed uP CapItaliZatiON', 'Ucfirst lowercase' );
+               assert.strictEqual( formatParse( 'uc-to-ucfirst' ), 'THis hAS MEsSed uP CapItaliZatiON', 'Ucfirst caps' );
+               assert.strictEqual( formatParse( 'lc-to-ucfirst' ), 'ThIS hAS MEsSed uP CapItaliZatiON', 'Ucfirst lowercase' );
 
                mw.messages.set( 'mixed-to-sentence', '{{ucfirst:{{lc:thIS hAS MEsSed uP CapItaliZatiON}}}}' );
 
                mw.messages.set( 'mixed-to-sentence', '{{ucfirst:{{lc:thIS hAS MEsSed uP CapItaliZatiON}}}}' );
-               assert.equal( formatParse( 'mixed-to-sentence' ), 'This has messed up capitalization', 'To sentence case' );
+               assert.strictEqual( formatParse( 'mixed-to-sentence' ), 'This has messed up capitalization', 'To sentence case' );
                mw.messages.set( 'all-caps-except-first', '{{lcfirst:{{uc:thIS hAS MEsSed uP CapItaliZatiON}}}}' );
                mw.messages.set( 'all-caps-except-first', '{{lcfirst:{{uc:thIS hAS MEsSed uP CapItaliZatiON}}}}' );
-               assert.equal( formatParse( 'all-caps-except-first' ), 'tHIS HAS MESSED UP CAPITALIZATION', 'To opposite sentence case' );
+               assert.strictEqual( formatParse( 'all-caps-except-first' ), 'tHIS HAS MESSED UP CAPITALIZATION', 'To opposite sentence case' );
        } );
 
        QUnit.test( 'Grammar', function ( assert ) {
        } );
 
        QUnit.test( 'Grammar', function ( assert ) {
-               assert.equal( formatParse( 'grammar-msg' ), 'Przeszukaj Wiki', 'Grammar Test with sitename' );
+               assert.strictEqual( formatParse( 'grammar-msg' ), 'Przeszukaj Wiki', 'Grammar Test with sitename' );
 
                mw.messages.set( 'grammar-msg-wrong-syntax', 'Przeszukaj {{GRAMMAR:grammar_case_xyz}}' );
 
                mw.messages.set( 'grammar-msg-wrong-syntax', 'Przeszukaj {{GRAMMAR:grammar_case_xyz}}' );
-               assert.equal( formatParse( 'grammar-msg-wrong-syntax' ), 'Przeszukaj ', 'Grammar Test with wrong grammar template syntax' );
+               assert.strictEqual( formatParse( 'grammar-msg-wrong-syntax' ), 'Przeszukaj ', 'Grammar Test with wrong grammar template syntax' );
        } );
 
        QUnit.test( 'Match PHP parser', function ( assert ) {
        } );
 
        QUnit.test( 'Match PHP parser', function ( assert ) {
                                                var parser;
                                                mw.config.set( 'wgUserLanguage', test.lang );
                                                parser = new mw.jqueryMsg.Parser( { language: langClass } );
                                                var parser;
                                                mw.config.set( 'wgUserLanguage', test.lang );
                                                parser = new mw.jqueryMsg.Parser( { language: langClass } );
-                                               assert.equal(
+                                               assert.strictEqual(
                                                        parser.parse( test.key, test.args ).html(),
                                                        test.result,
                                                        test.name
                                                        parser.parse( test.key, test.args ).html(),
                                                        test.result,
                                                        test.name
                mw.messages.set( 'reverse-pipe-trick', '[[|Tampa, Florida]]' );
                mw.messages.set( 'empty-link', '[[]]' );
                this.suppressWarnings();
                mw.messages.set( 'reverse-pipe-trick', '[[|Tampa, Florida]]' );
                mw.messages.set( 'empty-link', '[[]]' );
                this.suppressWarnings();
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'pipe-trick' ),
                        '[[Tampa, Florida|]]',
                        'Pipe trick should not be parsed.'
                );
                        formatParse( 'pipe-trick' ),
                        '[[Tampa, Florida|]]',
                        'Pipe trick should not be parsed.'
                );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'reverse-pipe-trick' ),
                        '[[|Tampa, Florida]]',
                        'Reverse pipe trick should not be parsed.'
                );
                        formatParse( 'reverse-pipe-trick' ),
                        '[[|Tampa, Florida]]',
                        'Reverse pipe trick should not be parsed.'
                );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'empty-link' ),
                        '[[]]',
                        'Empty link should not be parsed.'
                        formatParse( 'empty-link' ),
                        '[[]]',
                        'Empty link should not be parsed.'
                // Test non-{{ wikitext, where behavior differs
 
                // Wikilink
                // Test non-{{ wikitext, where behavior differs
 
                // Wikilink
-               assert.equal(
+               assert.strictEqual(
                        formatText( 'jquerymsg-test-statistics-users' ),
                        mw.messages.get( 'jquerymsg-test-statistics-users' ),
                        'Internal link message unchanged when format is \'text\''
                        formatText( 'jquerymsg-test-statistics-users' ),
                        mw.messages.get( 'jquerymsg-test-statistics-users' ),
                        'Internal link message unchanged when format is \'text\''
                );
 
                // External link
                );
 
                // External link
-               assert.equal(
+               assert.strictEqual(
                        formatText( 'jquerymsg-test-version-entrypoints-index-php' ),
                        mw.messages.get( 'jquerymsg-test-version-entrypoints-index-php' ),
                        'External link message unchanged when format is \'text\''
                        formatText( 'jquerymsg-test-version-entrypoints-index-php' ),
                        mw.messages.get( 'jquerymsg-test-version-entrypoints-index-php' ),
                        'External link message unchanged when format is \'text\''
                );
 
                // External link with parameter
                );
 
                // External link with parameter
-               assert.equal(
+               assert.strictEqual(
                        formatText( 'external-link-replace', 'http://example.com' ),
                        'Foo [http://example.com bar]',
                        'External link message only substitutes parameter when format is \'text\''
                        formatText( 'external-link-replace', 'http://example.com' ),
                        'Foo [http://example.com bar]',
                        'External link message only substitutes parameter when format is \'text\''
                        'Link with nested message'
                );
 
                        'Link with nested message'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'see-portal-url' ),
                        'Project:Community portal is an important community page.',
                        'Nested message'
                        formatParse( 'see-portal-url' ),
                        'Project:Community portal is an important community page.',
                        'Nested message'
 
                mw.messages.set( 'uses-missing-int', '{{int:doesnt-exist}}' );
 
 
                mw.messages.set( 'uses-missing-int', '{{int:doesnt-exist}}' );
 
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'uses-missing-int' ),
                        '⧼doesnt-exist⧽',
                        'int: where nested message does not exist'
                        formatParse( 'uses-missing-int' ),
                        '⧼doesnt-exist⧽',
                        'int: where nested message does not exist'
 
        QUnit.test( 'Ns', function ( assert ) {
                mw.messages.set( 'ns-template-talk', '{{ns:Template talk}}' );
 
        QUnit.test( 'Ns', function ( assert ) {
                mw.messages.set( 'ns-template-talk', '{{ns:Template talk}}' );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'ns-template-talk' ),
                        'Dyskusja szablonu',
                        'ns: returns localised namespace when used with a canonical namespace name'
                );
 
                mw.messages.set( 'ns-10', '{{ns:10}}' );
                        formatParse( 'ns-template-talk' ),
                        'Dyskusja szablonu',
                        'ns: returns localised namespace when used with a canonical namespace name'
                );
 
                mw.messages.set( 'ns-10', '{{ns:10}}' );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'ns-10' ),
                        'Szablon',
                        'ns: returns localised namespace when used with a namespace number'
                );
 
                mw.messages.set( 'ns-unknown', '{{ns:doesnt-exist}}' );
                        formatParse( 'ns-10' ),
                        'Szablon',
                        'ns: returns localised namespace when used with a namespace number'
                );
 
                mw.messages.set( 'ns-unknown', '{{ns:doesnt-exist}}' );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'ns-unknown' ),
                        '',
                        'ns: returns empty string for unknown namespace name'
                );
 
                mw.messages.set( 'ns-in-a-link', '[[{{ns:template}}:Foo]]' );
                        formatParse( 'ns-unknown' ),
                        '',
                        'ns: returns empty string for unknown namespace name'
                );
 
                mw.messages.set( 'ns-in-a-link', '[[{{ns:template}}:Foo]]' );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'ns-in-a-link' ),
                        '<a title="Szablon:Foo" href="/wiki/Szablon:Foo">Szablon:Foo</a>',
                        'ns: works when used inside a wikilink'
                        formatParse( 'ns-in-a-link' ),
                        '<a title="Szablon:Foo" href="/wiki/Szablon:Foo">Szablon:Foo</a>',
                        'ns: works when used inside a wikilink'
                {
                        lang: 'ar',
                        number: '٩٨٧٦٥٤٣٢١٫٦٥٤٣٢١',
                {
                        lang: 'ar',
                        number: '٩٨٧٦٥٤٣٢١٫٦٥٤٣٢١',
-                       result: 987654321,
+                       result: '987654321',
                        integer: true,
                        description: 'formatnum test for Arabic, with decimal separator, reverse'
                },
                        integer: true,
                        description: 'formatnum test for Arabic, with decimal separator, reverse'
                },
                {
                        lang: 'ar',
                        number: '-١٢٫٨٩',
                {
                        lang: 'ar',
                        number: '-١٢٫٨٩',
-                       result: -12,
+                       result: '-12',
                        integer: true,
                        description: 'formatnum test for Arabic, negative number, reverse'
                },
                        integer: true,
                        description: 'formatnum test for Arabic, negative number, reverse'
                },
                                                var parser;
                                                mw.config.set( 'wgUserLanguage', test.lang );
                                                parser = new mw.jqueryMsg.Parser( { language: langClass } );
                                                var parser;
                                                mw.config.set( 'wgUserLanguage', test.lang );
                                                parser = new mw.jqueryMsg.Parser( { language: langClass } );
-                                               assert.equal(
+                                               assert.strictEqual(
                                                        parser.parse( test.integer ? 'formatnum-msg-int' : 'formatnum-msg',
                                                                [ test.number ] ).html(),
                                                        test.result,
                                                        parser.parse( test.integer ? 'formatnum-msg-int' : 'formatnum-msg',
                                                                [ test.number ] ).html(),
                                                        test.result,
                        'Italics with link inside in parse mode'
                );
 
                        'Italics with link inside in parse mode'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        formatText( 'jquerymsg-italics-with-link' ),
                        mw.messages.get( 'jquerymsg-italics-with-link' ),
                        'Italics with link unchanged in text mode'
                        formatText( 'jquerymsg-italics-with-link' ),
                        mw.messages.get( 'jquerymsg-italics-with-link' ),
                        'Italics with link unchanged in text mode'
                        'Tag outside whitelist escaped in parse mode'
                );
 
                        'Tag outside whitelist escaped in parse mode'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        formatText( 'jquerymsg-script-msg' ),
                        mw.messages.get( 'jquerymsg-script-msg' ),
                        'Tag outside whitelist unchanged in text mode'
                        formatText( 'jquerymsg-script-msg' ),
                        mw.messages.get( 'jquerymsg-script-msg' ),
                        'Tag outside whitelist unchanged in text mode'
 
                // Intentionally not using htmlEqual for the quote tests
                mw.messages.set( 'jquerymsg-double-quotes-preserved', '<i id="double">Double</i>' );
 
                // Intentionally not using htmlEqual for the quote tests
                mw.messages.set( 'jquerymsg-double-quotes-preserved', '<i id="double">Double</i>' );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'jquerymsg-double-quotes-preserved' ),
                        mw.messages.get( 'jquerymsg-double-quotes-preserved' ),
                        'Attributes with double quotes are preserved as such'
                );
 
                mw.messages.set( 'jquerymsg-single-quotes-normalized-to-double', '<i id=\'single\'>Single</i>' );
                        formatParse( 'jquerymsg-double-quotes-preserved' ),
                        mw.messages.get( 'jquerymsg-double-quotes-preserved' ),
                        'Attributes with double quotes are preserved as such'
                );
 
                mw.messages.set( 'jquerymsg-single-quotes-normalized-to-double', '<i id=\'single\'>Single</i>' );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'jquerymsg-single-quotes-normalized-to-double' ),
                        '<i id="single">Single</i>',
                        'Attributes with single quotes are normalized to double'
                        formatParse( 'jquerymsg-single-quotes-normalized-to-double' ),
                        '<i id="single">Single</i>',
                        'Attributes with single quotes are normalized to double'
 
        QUnit.test( 'Nowiki', function ( assert ) {
                mw.messages.set( 'jquerymsg-nowiki-link', 'Foo <nowiki>[[bar]]</nowiki> baz.' );
 
        QUnit.test( 'Nowiki', function ( assert ) {
                mw.messages.set( 'jquerymsg-nowiki-link', 'Foo <nowiki>[[bar]]</nowiki> baz.' );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'jquerymsg-nowiki-link' ),
                        'Foo [[bar]] baz.',
                        'Link inside nowiki is not parsed'
                );
 
                mw.messages.set( 'jquerymsg-nowiki-htmltag', 'Foo <nowiki><b>bar</b></nowiki> baz.' );
                        formatParse( 'jquerymsg-nowiki-link' ),
                        'Foo [[bar]] baz.',
                        'Link inside nowiki is not parsed'
                );
 
                mw.messages.set( 'jquerymsg-nowiki-htmltag', 'Foo <nowiki><b>bar</b></nowiki> baz.' );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'jquerymsg-nowiki-htmltag' ),
                        'Foo &lt;b&gt;bar&lt;/b&gt; baz.',
                        'HTML inside nowiki is not parsed and escaped'
                );
 
                mw.messages.set( 'jquerymsg-nowiki-template', 'Foo <nowiki>{{bar}}</nowiki> baz.' );
                        formatParse( 'jquerymsg-nowiki-htmltag' ),
                        'Foo &lt;b&gt;bar&lt;/b&gt; baz.',
                        'HTML inside nowiki is not parsed and escaped'
                );
 
                mw.messages.set( 'jquerymsg-nowiki-template', 'Foo <nowiki>{{bar}}</nowiki> baz.' );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'jquerymsg-nowiki-template' ),
                        'Foo {{bar}} baz.',
                        'Template inside nowiki is not parsed and does not cause a parse error'
                        formatParse( 'jquerymsg-nowiki-template' ),
                        'Foo {{bar}} baz.',
                        'Template inside nowiki is not parsed and does not cause a parse error'
                this.suppressWarnings();
                logSpy = this.sandbox.spy( mw.log, 'warn' );
 
                this.suppressWarnings();
                logSpy = this.sandbox.spy( mw.log, 'warn' );
 
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'invalid-wikitext' ),
                        '&lt;b&gt;{{FAIL}}&lt;/b&gt;',
                        'Invalid wikitext: \'parse\' format'
                );
 
                        formatParse( 'invalid-wikitext' ),
                        '&lt;b&gt;{{FAIL}}&lt;/b&gt;',
                        'Invalid wikitext: \'parse\' format'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        formatText( 'invalid-wikitext' ),
                        '<b>{{FAIL}}</b>',
                        'Invalid wikitext: \'text\' format'
                );
 
                        formatText( 'invalid-wikitext' ),
                        '<b>{{FAIL}}</b>',
                        'Invalid wikitext: \'text\' format'
                );
 
-               assert.equal( logSpy.callCount, 2, 'mw.log.warn calls' );
+               assert.strictEqual( logSpy.callCount, 2, 'mw.log.warn calls' );
        } );
 
        QUnit.test( 'Integration', function ( assert ) {
        } );
 
        QUnit.test( 'Integration', function ( assert ) {
                expected = '<b><a title="Bold" href="/wiki/Bold">Bold</a>!</b>';
                mw.messages.set( 'integration-test', '<b>[[Bold]]!</b>' );
 
                expected = '<b><a title="Bold" href="/wiki/Bold">Bold</a>!</b>';
                mw.messages.set( 'integration-test', '<b>[[Bold]]!</b>' );
 
-               assert.equal(
+               assert.strictEqual(
                        mw.message( 'integration-test' ).parse(),
                        expected,
                        'mw.message().parse() works correctly'
                );
 
                        mw.message( 'integration-test' ).parse(),
                        expected,
                        'mw.message().parse() works correctly'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        $( '<span>' ).msg( 'integration-test' ).html(),
                        expected,
                        'jQuery plugin $.fn.msg() works correctly'
                        $( '<span>' ).msg( 'integration-test' ).html(),
                        expected,
                        'jQuery plugin $.fn.msg() works correctly'
                        $( '<a>' ).attr( 'href', 'http://example.com/' )
                );
                msg.parse(); // Not a no-op
                        $( '<a>' ).attr( 'href', 'http://example.com/' )
                );
                msg.parse(); // Not a no-op
-               assert.equal(
+               assert.strictEqual(
                        msg.parse(),
                        '<a href="http://example.com/">Link</a>',
                        'Calling .parse() multiple times does not duplicate link contents'
                        msg.parse(),
                        '<a href="http://example.com/">Link</a>',
                        'Calling .parse() multiple times does not duplicate link contents'
index 6cb5d76..54d4285 100644 (file)
                        expected = repeat( '\n', n ) + 'some text';
 
                        $textarea = $( '<textarea>\n' + expected + '</textarea>' );
                        expected = repeat( '\n', n ) + 'some text';
 
                        $textarea = $( '<textarea>\n' + expected + '</textarea>' );
-                       assert.equal( $textarea.val(), expected, 'Expecting ' + n + ' newlines (HTML contained ' + ( n + 1 ) + ')' );
+                       assert.strictEqual( $textarea.val(), expected, 'Expecting ' + n + ' newlines (HTML contained ' + ( n + 1 ) + ')' );
 
                        $textarea = $( '<textarea>' ).val( expected );
 
                        $textarea = $( '<textarea>' ).val( expected );
-                       assert.equal( $textarea.val(), expected, 'Expecting ' + n + ' newlines (from DOM set with ' + n + ')' );
+                       assert.strictEqual( $textarea.val(), expected, 'Expecting ' + n + ' newlines (from DOM set with ' + n + ')' );
                }
        } );
 }( jQuery ) );
                }
        } );
 }( jQuery ) );
index e4db771..9ea3c11 100644 (file)
 
        QUnit.test( 'mw.language getData and setData', function ( assert ) {
                mw.language.setData( 'en', 'testkey', 'testvalue' );
 
        QUnit.test( 'mw.language getData and setData', function ( assert ) {
                mw.language.setData( 'en', 'testkey', 'testvalue' );
-               assert.equal( mw.language.getData( 'en', 'testkey' ), 'testvalue', 'Getter setter test for mw.language' );
-               assert.equal( mw.language.getData( 'en', 'invalidkey' ), undefined, 'Getter setter test for mw.language with invalid key' );
+               assert.strictEqual( mw.language.getData( 'en', 'testkey' ), 'testvalue', 'Getter setter test for mw.language' );
+               assert.strictEqual( mw.language.getData( 'en', 'invalidkey' ), null, 'Getter setter test for mw.language with invalid key' );
+               assert.strictEqual( mw.language.getData( 'xx', 'invalidLang' ), undefined, 'Getter setter test for mw.language with invalid lang' );
                mw.language.setData( 'en-us', 'testkey', 'testvalue' );
                mw.language.setData( 'en-us', 'testkey', 'testvalue' );
-               assert.equal( mw.language.getData( 'en-US', 'testkey' ), 'testvalue', 'Case insensitive test for mw.language' );
+               assert.strictEqual( mw.language.getData( 'en-US', 'testkey' ), 'testvalue', 'Case insensitive test for mw.language' );
        } );
 
        QUnit.test( 'mw.language.commafy test', function ( assert ) {
        } );
 
        QUnit.test( 'mw.language.commafy test', function ( assert ) {
 
                mw.config.set( 'wgUserLanguage', 'en' );
                // Number grouping patterns are as per http://cldr.unicode.org/translation/number-patterns
 
                mw.config.set( 'wgUserLanguage', 'en' );
                // Number grouping patterns are as per http://cldr.unicode.org/translation/number-patterns
-               assert.equal( mw.language.commafy( 1234.567, '###0.#####' ), '1234.567', 'Pattern with no digit grouping separator defined' );
-               assert.equal( mw.language.commafy( 123456789.567, '###0.#####' ), '123456789.567', 'Pattern with no digit grouping separator defined, bigger decimal part' );
-               assert.equal( mw.language.commafy( 0.567, '###0.#####' ), '0.567', 'Decimal part 0' );
-               assert.equal( mw.language.commafy( '.567', '###0.#####' ), '0.567', 'Decimal part missing. replace with zero' );
-               assert.equal( mw.language.commafy( 1234, '##,#0.#####' ), '12,34', 'Pattern with no fractional part' );
-               assert.equal( mw.language.commafy( -1234.567, '###0.#####' ), '-1234.567', 'Negative number' );
-               assert.equal( mw.language.commafy( -1234.567, '#,###.00' ), '-1,234.56', 'Fractional part bigger than pattern.' );
-               assert.equal( mw.language.commafy( 123456789.567, '###,##0.00' ), '123,456,789.56', 'Decimal part as group of 3' );
-               assert.equal( mw.language.commafy( 123456789.567, '###,###,#0.00' ), '1,234,567,89.56', 'Decimal part as group of 3 and last one 2' );
+               assert.strictEqual( mw.language.commafy( 1234.567, '###0.#####' ), '1234.567', 'Pattern with no digit grouping separator defined' );
+               assert.strictEqual( mw.language.commafy( 123456789.567, '###0.#####' ), '123456789.567', 'Pattern with no digit grouping separator defined, bigger decimal part' );
+               assert.strictEqual( mw.language.commafy( 0.567, '###0.#####' ), '0.567', 'Decimal part 0' );
+               assert.strictEqual( mw.language.commafy( '.567', '###0.#####' ), '0.567', 'Decimal part missing. replace with zero' );
+               assert.strictEqual( mw.language.commafy( 1234, '##,#0.#####' ), '12,34', 'Pattern with no fractional part' );
+               assert.strictEqual( mw.language.commafy( -1234.567, '###0.#####' ), '-1234.567', 'Negative number' );
+               assert.strictEqual( mw.language.commafy( -1234.567, '#,###.00' ), '-1,234.56', 'Fractional part bigger than pattern.' );
+               assert.strictEqual( mw.language.commafy( 123456789.567, '###,##0.00' ), '123,456,789.56', 'Decimal part as group of 3' );
+               assert.strictEqual( mw.language.commafy( 123456789.567, '###,###,#0.00' ), '1,234,567,89.56', 'Decimal part as group of 3 and last one 2' );
        } );
 
        QUnit.test( 'mw.language.convertNumber', function ( assert ) {
        } );
 
        QUnit.test( 'mw.language.convertNumber', function ( assert ) {
                mw.config.set( 'wgUserLanguage', 'en' );
                mw.config.set( 'wgTranslateNumerals', true );
 
                mw.config.set( 'wgUserLanguage', 'en' );
                mw.config.set( 'wgTranslateNumerals', true );
 
-               assert.equal( mw.language.convertNumber( 180 ), '180', 'formatting 3-digit' );
-               assert.equal( mw.language.convertNumber( 1800 ), '1.800', 'formatting 4-digit' );
-               assert.equal( mw.language.convertNumber( 18000 ), '18.000', 'formatting 5-digit' );
+               assert.strictEqual( mw.language.convertNumber( 180 ), '180', 'formatting 3-digit' );
+               assert.strictEqual( mw.language.convertNumber( 1800 ), '1.800', 'formatting 4-digit' );
+               assert.strictEqual( mw.language.convertNumber( 18000 ), '18.000', 'formatting 5-digit' );
 
 
-               assert.equal( mw.language.convertNumber( '1.800', true ), '1800', 'unformatting' );
+               assert.strictEqual( mw.language.convertNumber( '1.800', true ), 1800, 'unformatting' );
 
                mw.language.setData( 'en', 'minimumGroupingDigits', 2 );
 
                mw.language.setData( 'en', 'minimumGroupingDigits', 2 );
-               assert.equal( mw.language.convertNumber( 180 ), '180', 'formatting 3-digit with minimumGroupingDigits=2' );
-               assert.equal( mw.language.convertNumber( 1800 ), '1800', 'formatting 4-digit with minimumGroupingDigits=2' );
-               assert.equal( mw.language.convertNumber( 18000 ), '18.000', 'formatting 5-digit with minimumGroupingDigits=2' );
+               assert.strictEqual( mw.language.convertNumber( 180 ), '180', 'formatting 3-digit with minimumGroupingDigits=2' );
+               assert.strictEqual( mw.language.convertNumber( 1800 ), '1800', 'formatting 4-digit with minimumGroupingDigits=2' );
+               assert.strictEqual( mw.language.convertNumber( 18000 ), '18.000', 'formatting 5-digit with minimumGroupingDigits=2' );
        } );
 
        QUnit.test( 'mw.language.convertNumber - digitTransformTable', function ( assert ) {
        } );
 
        QUnit.test( 'mw.language.convertNumber - digitTransformTable', function ( assert ) {
                        2: '२'
                } );
 
                        2: '२'
                } );
 
-               assert.equal( mw.language.convertNumber( 1200 ), '१.२००', 'format' );
-               assert.equal( mw.language.convertNumber( '१.२००', true ), '1200', 'unformat from digit transform' );
-               assert.equal( mw.language.convertNumber( '1.200', true ), '1200', 'unformat plain' );
+               assert.strictEqual( mw.language.convertNumber( 1200 ), '१.२००', 'format' );
+               assert.strictEqual( mw.language.convertNumber( '१.२००', true ), 1200, 'unformat from digit transform' );
+               assert.strictEqual( mw.language.convertNumber( '1.200', true ), 1200, 'unformat plain' );
 
                mw.config.set( 'wgTranslateNumerals', false );
 
 
                mw.config.set( 'wgTranslateNumerals', false );
 
-               assert.equal( mw.language.convertNumber( 1200 ), '1.200', 'format (digit transform disabled)' );
-               assert.equal( mw.language.convertNumber( '१.२००', true ), '1200', 'unformat from digit transform (when disabled)' );
-               assert.equal( mw.language.convertNumber( '1.200', true ), '1200', 'unformat plain (digit transform disabled)' );
+               assert.strictEqual( mw.language.convertNumber( 1200 ), '1.200', 'format (digit transform disabled)' );
+               assert.strictEqual( mw.language.convertNumber( '१.२००', true ), 1200, 'unformat from digit transform (when disabled)' );
+               assert.strictEqual( mw.language.convertNumber( '1.200', true ), 1200, 'unformat plain (digit transform disabled)' );
        } );
 
        function grammarTest( langCode, test ) {
        } );
 
        function grammarTest( langCode, test ) {
@@ -96,7 +97,7 @@
                QUnit.test( 'Grammar test for lang=' + langCode, function ( assert ) {
                        var i;
                        for ( i = 0; i < test.length; i++ ) {
                QUnit.test( 'Grammar test for lang=' + langCode, function ( assert ) {
                        var i;
                        for ( i = 0; i < test.length; i++ ) {
-                               assert.equal(
+                               assert.strictEqual(
                                        mw.language.convertGrammar( test[ i ].word, test[ i ].grammarForm ),
                                        test[ i ].expected,
                                        test[ i ].description
                                        mw.language.convertGrammar( test[ i ].word, test[ i ].grammarForm ),
                                        test[ i ].expected,
                                        test[ i ].description
        } );
 
        QUnit.test( 'List to text test', function ( assert ) {
        } );
 
        QUnit.test( 'List to text test', function ( assert ) {
-               assert.equal( mw.language.listToText( [] ), '', 'Blank list' );
-               assert.equal( mw.language.listToText( [ 'a' ] ), 'a', 'Single item' );
-               assert.equal( mw.language.listToText( [ 'a', 'b' ] ), 'a and b', 'Two items' );
-               assert.equal( mw.language.listToText( [ 'a', 'b', 'c' ] ), 'a, b and c', 'More than two items' );
+               assert.strictEqual( mw.language.listToText( [] ), '', 'Blank list' );
+               assert.strictEqual( mw.language.listToText( [ 'a' ] ), 'a', 'Single item' );
+               assert.strictEqual( mw.language.listToText( [ 'a', 'b' ] ), 'a and b', 'Two items' );
+               assert.strictEqual( mw.language.listToText( [ 'a', 'b', 'c' ] ), 'a, b and c', 'More than two items' );
        } );
 
        bcp47Tests = [
        } );
 
        bcp47Tests = [
                bcp47Tests.forEach( function ( data ) {
                        var input = data[ 0 ],
                                expected = data[ 1 ];
                bcp47Tests.forEach( function ( data ) {
                        var input = data[ 0 ],
                                expected = data[ 1 ];
-                       assert.equal( mw.language.bcp47( input ), expected );
+                       assert.strictEqual( mw.language.bcp47( input ), expected );
                } );
        } );
 }( mediaWiki, jQuery ) );
                } );
        } );
 }( mediaWiki, jQuery ) );
index 8914bd4..4afc16b 100644 (file)
@@ -60,7 +60,7 @@
                        var styleTestSince = new Date().getTime() - styleTestStart;
                        // If it is passing or if we timed out, run the real test and stop the loop
                        if ( isCssImportApplied() || styleTestSince > styleTestTimeout ) {
                        var styleTestSince = new Date().getTime() - styleTestStart;
                        // If it is passing or if we timed out, run the real test and stop the loop
                        if ( isCssImportApplied() || styleTestSince > styleTestTimeout ) {
-                               assert.equal( $element.css( prop ), val,
+                               assert.strictEqual( $element.css( prop ), val,
                                        'style "' + prop + ': ' + val + '" from url is applied (after ' + styleTestSince + 'ms)'
                                );
 
                                        'style "' + prop + ': ' + val + '" from url is applied (after ' + styleTestSince + 'ms)'
                                );
 
                mw.loader.implement(
                        'test.implement.a',
                        function () {
                mw.loader.implement(
                        'test.implement.a',
                        function () {
-                               assert.equal(
+                               assert.strictEqual(
                                        $element.css( 'float' ),
                                        'right',
                                        'style is applied'
                                        $element.css( 'float' ),
                                        'right',
                                        'style is applied'
                mw.loader.implement(
                        'test.implement.c',
                        function () {
                mw.loader.implement(
                        'test.implement.c',
                        function () {
-                               assert.equal(
+                               assert.strictEqual(
                                        $element.css( 'float' ),
                                        'right',
                                        'style is applied'
                                        $element.css( 'float' ),
                                        'right',
                                        'style is applied'
                mw.loader.implement(
                        'test.implement.order',
                        function () {
                mw.loader.implement(
                        'test.implement.order',
                        function () {
-                               assert.equal( mw.loader.getState( 'test.implement.order' ), 'executing', 'state during script execution' );
-                               assert.equal( mw.msg( 'test-foobar' ), 'Hello Foobar, $1!', 'messages load before script execution' );
+                               assert.strictEqual( mw.loader.getState( 'test.implement.order' ), 'executing', 'state during script execution' );
+                               assert.strictEqual( mw.msg( 'test-foobar' ), 'Hello Foobar, $1!', 'messages load before script execution' );
                        },
                        {},
                        {
                        },
                        {},
                        {
                );
 
                return mw.loader.using( 'test.implement.order' ).then( function () {
                );
 
                return mw.loader.using( 'test.implement.order' ).then( function () {
-                       assert.equal( mw.loader.getState( 'test.implement.order' ), 'ready', 'final success state' );
+                       assert.strictEqual( mw.loader.getState( 'test.implement.order' ), 'ready', 'final success state' );
                } );
        } );
 
                } );
        } );
 
                                $element = $( '<div class="mw-test-implement-import">Foo bar</div>' ).appendTo( '#qunit-fixture' );
 
                                assertStyleAsync( assert, $element, 'float', 'right', function () {
                                $element = $( '<div class="mw-test-implement-import">Foo bar</div>' ).appendTo( '#qunit-fixture' );
 
                                assertStyleAsync( assert, $element, 'float', 'right', function () {
-                                       assert.equal( $element.css( 'text-align' ), 'center',
+                                       assert.strictEqual( $element.css( 'text-align' ), 'center',
                                                'CSS styles after the @import rule are working'
                                        );
 
                                                'CSS styles after the @import rule are working'
                                        );
 
                mw.loader.implement(
                        'test.implement.e',
                        function () {
                mw.loader.implement(
                        'test.implement.e',
                        function () {
-                               assert.equal(
+                               assert.strictEqual(
                                        $element.css( 'float' ),
                                        'right',
                                        'Depending module\'s style is applied'
                                        $element.css( 'float' ),
                                        'right',
                                        'Depending module\'s style is applied'
                mw.loader.implement(
                        'test.implement.e2',
                        function () {
                mw.loader.implement(
                        'test.implement.e2',
                        function () {
-                               assert.equal(
+                               assert.strictEqual(
                                        $element2.css( 'float' ),
                                        'left',
                                        'Dependency\'s style is applied'
                                        $element2.css( 'float' ),
                                        'left',
                                        'Dependency\'s style is applied'
                ] );
 
                function verifyModuleStates() {
                ] );
 
                function verifyModuleStates() {
-                       assert.equal( mw.loader.getState( 'testMissing' ), 'missing', 'Module "testMissing" state' );
-                       assert.equal( mw.loader.getState( 'testUsesMissing' ), 'error', 'Module "testUsesMissing" state' );
-                       assert.equal( mw.loader.getState( 'testUsesNestedMissing' ), 'error', 'Module "testUsesNestedMissing" state' );
+                       assert.strictEqual( mw.loader.getState( 'testMissing' ), 'missing', 'Module "testMissing" state' );
+                       assert.strictEqual( mw.loader.getState( 'testUsesMissing' ), 'error', 'Module "testUsesMissing" state' );
+                       assert.strictEqual( mw.loader.getState( 'testUsesNestedMissing' ), 'error', 'Module "testUsesNestedMissing" state' );
                }
 
                mw.loader.using( [ 'testUsesNestedMissing' ],
                }
 
                mw.loader.using( [ 'testUsesNestedMissing' ],
 
                return mw.loader.using( [ 'testUsesSkippable' ] ).then(
                        function () {
 
                return mw.loader.using( [ 'testUsesSkippable' ] ).then(
                        function () {
-                               assert.equal( mw.loader.getState( 'testSkipped' ), 'ready', 'Skipped module' );
-                               assert.equal( mw.loader.getState( 'testNotSkipped' ), 'ready', 'Regular module' );
-                               assert.equal( mw.loader.getState( 'testUsesSkippable' ), 'ready', 'Regular module with skippable dependency' );
+                               assert.strictEqual( mw.loader.getState( 'testSkipped' ), 'ready', 'Skipped module' );
+                               assert.strictEqual( mw.loader.getState( 'testNotSkipped' ), 'ready', 'Regular module' );
+                               assert.strictEqual( mw.loader.getState( 'testUsesSkippable' ), 'ready', 'Regular module with skippable dependency' );
                        },
                        function ( e, badmodules ) {
                                // Should not fail and QUnit would already catch this,
                        },
                        function ( e, badmodules ) {
                                // Should not fail and QUnit would already catch this,
                );
                // Ensure a protocol-relative URL for this test
                target = target.replace( /https?:/, '' );
                );
                // Ensure a protocol-relative URL for this test
                target = target.replace( /https?:/, '' );
-               assert.equal( target.slice( 0, 2 ), '//', 'URL is protocol-relative' );
+               assert.strictEqual( target.slice( 0, 2 ), '//', 'URL is protocol-relative' );
 
                mw.loader.testCallback = function () {
                        // Ensure once, delete now
 
                mw.loader.testCallback = function () {
                        // Ensure once, delete now
 
                // URL to the callback script
                target = QUnit.fixurl( mw.config.get( 'wgScriptPath' ) + '/tests/qunit/data/mwLoaderTestCallback.js' );
 
                // URL to the callback script
                target = QUnit.fixurl( mw.config.get( 'wgScriptPath' ) + '/tests/qunit/data/mwLoaderTestCallback.js' );
-               assert.equal( target.slice( 0, 1 ), '/', 'URL is relative to document root' );
+               assert.strictEqual( target.slice( 0, 1 ), '/', 'URL is relative to document root' );
 
                mw.loader.testCallback = function () {
                        // Ensure once, delete now
 
                mw.loader.testCallback = function () {
                        // Ensure once, delete now
                        try {
                                assert.strictEqual( cb.later(), 'Defined.', 'require works asynchrously in debug mode' );
                        } catch ( e ) {
                        try {
                                assert.strictEqual( cb.later(), 'Defined.', 'require works asynchrously in debug mode' );
                        } catch ( e ) {
-                               assert.equal( String( e ), null, 'require works asynchrously in debug mode' );
+                               assert.strictEqual( String( e ), null, 'require works asynchrously in debug mode' );
                        }
                } );
        } );
                        }
                } );
        } );
index 9cbbdeb..6458b17 100644 (file)
        } );
 
        QUnit.test( 'mw.format', function ( assert ) {
        } );
 
        QUnit.test( 'mw.format', function ( assert ) {
-               assert.equal(
+               assert.strictEqual(
                        mw.format( 'Format $1 $2', 'foo', 'bar' ),
                        'Format foo bar',
                        'Simple parameters'
                );
                        mw.format( 'Format $1 $2', 'foo', 'bar' ),
                        'Format foo bar',
                        'Simple parameters'
                );
-               assert.equal(
+               assert.strictEqual(
                        mw.format( 'Format $1 $2' ),
                        'Format $1 $2',
                        'Missing parameters'
                        mw.format( 'Format $1 $2' ),
                        'Format $1 $2',
                        'Missing parameters'
@@ -65,8 +65,8 @@
        } );
 
        QUnit.test( 'mw.now', function ( assert ) {
        } );
 
        QUnit.test( 'mw.now', function ( assert ) {
-               assert.equal( typeof mw.now(), 'number', 'Return a number' );
-               assert.equal(
+               assert.strictEqual( typeof mw.now(), 'number', 'Return a number' );
+               assert.strictEqual(
                        String( Math.round( mw.now() ) ).length,
                        String( +new Date() ).length,
                        'Match size of current timestamp'
                        String( Math.round( mw.now() ) ).length,
                        String( +new Date() ).length,
                        'Match size of current timestamp'
@@ -86,7 +86,7 @@
                // Single get and set
 
                assert.strictEqual( conf.set( 'foo', 'Bar' ), true, 'Map.set returns boolean true if a value was set for a valid key string' );
                // Single get and set
 
                assert.strictEqual( conf.set( 'foo', 'Bar' ), true, 'Map.set returns boolean true if a value was set for a valid key string' );
-               assert.equal( conf.get( 'foo' ), 'Bar', 'Map.get returns a single value value correctly' );
+               assert.strictEqual( conf.get( 'foo' ), 'Bar', 'Map.get returns a single value value correctly' );
 
                assert.strictEqual( conf.get( 'example' ), null, 'Map.get returns null if selection was a string and the key was not found' );
                assert.strictEqual( conf.get( 'example', arry ), arry, 'Map.get returns fallback by reference if the key was not found' );
 
                assert.strictEqual( conf.get( 'example' ), null, 'Map.get returns null if selection was a string and the key was not found' );
                assert.strictEqual( conf.get( 'example', arry ), arry, 'Map.get returns fallback by reference if the key was not found' );
                assert.strictEqual( conf.set( 'undef' ), false, 'Map.set requires explicit value (no undefined default)' );
 
                assert.strictEqual( conf.set( 'undef', undefined ), true, 'Map.set allows setting value to `undefined`' );
                assert.strictEqual( conf.set( 'undef' ), false, 'Map.set requires explicit value (no undefined default)' );
 
                assert.strictEqual( conf.set( 'undef', undefined ), true, 'Map.set allows setting value to `undefined`' );
-               assert.equal( conf.get( 'undef', 'fallback' ), undefined, 'Map.get supports retreiving value of `undefined`' );
+               assert.strictEqual( conf.get( 'undef', 'fallback' ), undefined, 'Map.get supports retreiving value of `undefined`' );
 
                assert.strictEqual( conf.set( funky, 'Funky' ), false, 'Map.set returns boolean false if key was invalid (Function)' );
                assert.strictEqual( conf.set( arry, 'Arry' ), false, 'Map.set returns boolean false if key was invalid (Array)' );
 
                assert.strictEqual( conf.set( funky, 'Funky' ), false, 'Map.set returns boolean false if key was invalid (Function)' );
                assert.strictEqual( conf.set( arry, 'Arry' ), false, 'Map.set returns boolean false if key was invalid (Array)' );
                // Interacting with globals
                conf.set( 'globalMapChecker', 'Hi' );
 
                // Interacting with globals
                conf.set( 'globalMapChecker', 'Hi' );
 
-               assert.equal( 'globalMapChecker' in window, false, 'Map does not its store values in the window object by default' );
+               assert.strictEqual( 'globalMapChecker' in window, false, 'Map does not its store values in the window object by default' );
 
                globalConf = new mw.Map( true );
                globalConf.set( 'anotherGlobalMapChecker', 'Hello' );
 
                assert.ok( 'anotherGlobalMapChecker' in window, 'global Map stores its values in the window object' );
 
 
                globalConf = new mw.Map( true );
                globalConf.set( 'anotherGlobalMapChecker', 'Hello' );
 
                assert.ok( 'anotherGlobalMapChecker' in window, 'global Map stores its values in the window object' );
 
-               assert.equal( globalConf.get( 'anotherGlobalMapChecker' ), 'Hello', 'get value from global Map via get()' );
+               assert.strictEqual( globalConf.get( 'anotherGlobalMapChecker' ), 'Hello', 'get value from global Map via get()' );
                this.suppressWarnings();
                this.suppressWarnings();
-               assert.equal( window.anotherGlobalMapChecker, 'Hello', 'get value from global Map via window object' );
+               assert.strictEqual( window.anotherGlobalMapChecker, 'Hello', 'get value from global Map via window object' );
                this.restoreWarnings();
 
                // Change value via global Map
                globalConf.set( 'anotherGlobalMapChecker', 'Again' );
                this.restoreWarnings();
 
                // Change value via global Map
                globalConf.set( 'anotherGlobalMapChecker', 'Again' );
-               assert.equal( globalConf.get( 'anotherGlobalMapChecker' ), 'Again', 'Change in global Map reflected via get()' );
+               assert.strictEqual( globalConf.get( 'anotherGlobalMapChecker' ), 'Again', 'Change in global Map reflected via get()' );
                this.suppressWarnings();
                this.suppressWarnings();
-               assert.equal( window.anotherGlobalMapChecker, 'Again', 'Change in global Map reflected window object' );
+               assert.strictEqual( window.anotherGlobalMapChecker, 'Again', 'Change in global Map reflected window object' );
                this.restoreWarnings();
 
                // Change value via window object
                this.suppressWarnings();
                window.anotherGlobalMapChecker = 'World';
                this.restoreWarnings();
 
                // Change value via window object
                this.suppressWarnings();
                window.anotherGlobalMapChecker = 'World';
-               assert.equal( window.anotherGlobalMapChecker, 'World', 'Change in window object works' );
+               assert.strictEqual( window.anotherGlobalMapChecker, 'World', 'Change in window object works' );
                this.restoreWarnings();
                this.restoreWarnings();
-               assert.equal( globalConf.get( 'anotherGlobalMapChecker' ), 'Again', 'Change in window object not reflected in global Map' );
+               assert.strictEqual( globalConf.get( 'anotherGlobalMapChecker' ), 'Again', 'Change in window object not reflected in global Map' );
 
                // Whitelist this global variable for QUnit's 'noglobal' mode
                if ( QUnit.config.noglobals ) {
 
                // Whitelist this global variable for QUnit's 'noglobal' mode
                if ( QUnit.config.noglobals ) {
 
                        for ( i = 0; i < len; i++ ) {
                                format = formats[ i ];
 
                        for ( i = 0; i < len; i++ ) {
                                format = formats[ i ];
-                               assert.equal( mw.message.apply( null, messageArguments )[ format ](), expectedResult, assertMessage + ' when format is ' + format );
+                               assert.strictEqual( mw.message.apply( null, messageArguments )[ format ](), expectedResult, assertMessage + ' when format is ' + format );
                        }
                }
 
                        }
                }
 
                hello = mw.message( 'hello' );
 
                // https://phabricator.wikimedia.org/T46459
                hello = mw.message( 'hello' );
 
                // https://phabricator.wikimedia.org/T46459
-               assert.equal( hello.format, 'text', 'Message property "format" defaults to "text"' );
+               assert.strictEqual( hello.format, 'text', 'Message property "format" defaults to "text"' );
 
                assert.strictEqual( hello.map, mw.messages, 'Message property "map" defaults to the global instance in mw.messages' );
 
                assert.strictEqual( hello.map, mw.messages, 'Message property "map" defaults to the global instance in mw.messages' );
-               assert.equal( hello.key, 'hello', 'Message property "key" (currect key)' );
+               assert.strictEqual( hello.key, 'hello', 'Message property "key" (currect key)' );
                assert.deepEqual( hello.parameters, [], 'Message property "parameters" defaults to an empty array' );
 
                // TODO
                assert.ok( hello.params, 'Message prototype "params"' );
 
                hello.format = 'plain';
                assert.deepEqual( hello.parameters, [], 'Message property "parameters" defaults to an empty array' );
 
                // TODO
                assert.ok( hello.params, 'Message prototype "params"' );
 
                hello.format = 'plain';
-               assert.equal( hello.toString(), 'Hello <b>awesome</b> world', 'Message.toString returns the message as a string with the current "format"' );
+               assert.strictEqual( hello.toString(), 'Hello <b>awesome</b> world', 'Message.toString returns the message as a string with the current "format"' );
 
 
-               assert.equal( hello.escaped(), 'Hello &lt;b&gt;awesome&lt;/b&gt; world', 'Message.escaped returns the escaped message' );
-               assert.equal( hello.format, 'escaped', 'Message.escaped correctly updated the "format" property' );
+               assert.strictEqual( hello.escaped(), 'Hello &lt;b&gt;awesome&lt;/b&gt; world', 'Message.escaped returns the escaped message' );
+               assert.strictEqual( hello.format, 'escaped', 'Message.escaped correctly updated the "format" property' );
 
                assert.ok( mw.messages.set( 'multiple-curly-brace', '"{{SITENAME}}" is the home of {{int:other-message}}' ), 'mw.messages.set: Register' );
                assertMultipleFormats( [ 'multiple-curly-brace' ], [ 'text', 'parse' ], '"' + siteName + '" is the home of Other Message', 'Curly brace format works correctly' );
 
                assert.ok( mw.messages.set( 'multiple-curly-brace', '"{{SITENAME}}" is the home of {{int:other-message}}' ), 'mw.messages.set: Register' );
                assertMultipleFormats( [ 'multiple-curly-brace' ], [ 'text', 'parse' ], '"' + siteName + '" is the home of Other Message', 'Curly brace format works correctly' );
-               assert.equal( mw.message( 'multiple-curly-brace' ).plain(), mw.messages.get( 'multiple-curly-brace' ), 'Plain format works correctly for curly brace message' );
-               assert.equal( mw.message( 'multiple-curly-brace' ).escaped(), mw.html.escape( '"' + siteName + '" is the home of Other Message' ), 'Escaped format works correctly for curly brace message' );
+               assert.strictEqual( mw.message( 'multiple-curly-brace' ).plain(), mw.messages.get( 'multiple-curly-brace' ), 'Plain format works correctly for curly brace message' );
+               assert.strictEqual( mw.message( 'multiple-curly-brace' ).escaped(), mw.html.escape( '"' + siteName + '" is the home of Other Message' ), 'Escaped format works correctly for curly brace message' );
 
                assert.ok( mw.messages.set( 'multiple-square-brackets-and-ampersand', 'Visit the [[Project:Community portal|community portal]] & [[Project:Help desk|help desk]]' ), 'mw.messages.set: Register' );
                assertMultipleFormats( [ 'multiple-square-brackets-and-ampersand' ], [ 'plain', 'text' ], mw.messages.get( 'multiple-square-brackets-and-ampersand' ), 'Square bracket message is not processed' );
 
                assert.ok( mw.messages.set( 'multiple-square-brackets-and-ampersand', 'Visit the [[Project:Community portal|community portal]] & [[Project:Help desk|help desk]]' ), 'mw.messages.set: Register' );
                assertMultipleFormats( [ 'multiple-square-brackets-and-ampersand' ], [ 'plain', 'text' ], mw.messages.get( 'multiple-square-brackets-and-ampersand' ), 'Square bracket message is not processed' );
-               assert.equal( mw.message( 'multiple-square-brackets-and-ampersand' ).escaped(), 'Visit the [[Project:Community portal|community portal]] &amp; [[Project:Help desk|help desk]]', 'Escaped format works correctly for square bracket message' );
+               assert.strictEqual( mw.message( 'multiple-square-brackets-and-ampersand' ).escaped(), 'Visit the [[Project:Community portal|community portal]] &amp; [[Project:Help desk|help desk]]', 'Escaped format works correctly for square bracket message' );
                assert.htmlEqual( mw.message( 'multiple-square-brackets-and-ampersand' ).parse(), 'Visit the ' +
                        '<a title="Project:Community portal" href="/wiki/Project:Community_portal">community portal</a>' +
                        ' &amp; <a title="Project:Help desk" href="/wiki/Project:Help_desk">help desk</a>', 'Internal links work with parse' );
                assert.htmlEqual( mw.message( 'multiple-square-brackets-and-ampersand' ).parse(), 'Visit the ' +
                        '<a title="Project:Community portal" href="/wiki/Project:Community_portal">community portal</a>' +
                        ' &amp; <a title="Project:Help desk" href="/wiki/Project:Help_desk">help desk</a>', 'Internal links work with parse' );
                assert.htmlEqual( mw.message( 'mediawiki-test-version-entrypoints-index-php' ).parse(), '<a href="https://www.mediawiki.org/wiki/Manual:index.php">index.php</a>', 'External link works correctly in parse mode' );
 
                assertMultipleFormats( [ 'external-link-replace', 'http://example.org/?x=y&z' ], [ 'plain', 'text' ], 'Foo [http://example.org/?x=y&z bar]', 'Parameters are substituted but external link is not processed' );
                assert.htmlEqual( mw.message( 'mediawiki-test-version-entrypoints-index-php' ).parse(), '<a href="https://www.mediawiki.org/wiki/Manual:index.php">index.php</a>', 'External link works correctly in parse mode' );
 
                assertMultipleFormats( [ 'external-link-replace', 'http://example.org/?x=y&z' ], [ 'plain', 'text' ], 'Foo [http://example.org/?x=y&z bar]', 'Parameters are substituted but external link is not processed' );
-               assert.equal( mw.message( 'external-link-replace', 'http://example.org/?x=y&z' ).escaped(), 'Foo [http://example.org/?x=y&amp;z bar]', 'In escaped mode, parameters are substituted and ampersand is escaped, but external link is not processed' );
+               assert.strictEqual( mw.message( 'external-link-replace', 'http://example.org/?x=y&z' ).escaped(), 'Foo [http://example.org/?x=y&amp;z bar]', 'In escaped mode, parameters are substituted and ampersand is escaped, but external link is not processed' );
                assert.htmlEqual( mw.message( 'external-link-replace', 'http://example.org/?x=y&z' ).parse(), 'Foo <a href="http://example.org/?x=y&amp;z">bar</a>', 'External link with replacement works in parse mode without double-escaping' );
 
                hello.parse();
                assert.htmlEqual( mw.message( 'external-link-replace', 'http://example.org/?x=y&z' ).parse(), 'Foo <a href="http://example.org/?x=y&amp;z">bar</a>', 'External link with replacement works in parse mode without double-escaping' );
 
                hello.parse();
-               assert.equal( hello.format, 'parse', 'Message.parse correctly updated the "format" property' );
+               assert.strictEqual( hello.format, 'parse', 'Message.parse correctly updated the "format" property' );
 
                hello.plain();
 
                hello.plain();
-               assert.equal( hello.format, 'plain', 'Message.plain correctly updated the "format" property' );
+               assert.strictEqual( hello.format, 'plain', 'Message.plain correctly updated the "format" property' );
 
                hello.text();
 
                hello.text();
-               assert.equal( hello.format, 'text', 'Message.text correctly updated the "format" property' );
+               assert.strictEqual( hello.format, 'text', 'Message.text correctly updated the "format" property' );
 
                assert.strictEqual( hello.exists(), true, 'Message.exists returns true for existing messages' );
 
 
                assert.strictEqual( hello.exists(), true, 'Message.exists returns true for existing messages' );
 
 
                assert.ok( mw.messages.set( 'plural-test-msg', 'There {{PLURAL:$1|is|are}} $1 {{PLURAL:$1|result|results}}' ), 'mw.messages.set: Register' );
                assertMultipleFormats( [ 'plural-test-msg', 6 ], [ 'text', 'parse', 'escaped' ], 'There are 6 results', 'plural get resolved' );
 
                assert.ok( mw.messages.set( 'plural-test-msg', 'There {{PLURAL:$1|is|are}} $1 {{PLURAL:$1|result|results}}' ), 'mw.messages.set: Register' );
                assertMultipleFormats( [ 'plural-test-msg', 6 ], [ 'text', 'parse', 'escaped' ], 'There are 6 results', 'plural get resolved' );
-               assert.equal( mw.message( 'plural-test-msg', 6 ).plain(), 'There {{PLURAL:6|is|are}} 6 {{PLURAL:6|result|results}}', 'Parameter is substituted but plural is not resolved in plain' );
+               assert.strictEqual( mw.message( 'plural-test-msg', 6 ).plain(), 'There {{PLURAL:6|is|are}} 6 {{PLURAL:6|result|results}}', 'Parameter is substituted but plural is not resolved in plain' );
 
                assert.ok( mw.messages.set( 'plural-test-msg-explicit', 'There {{plural:$1|is one car|are $1 cars|0=are no cars|12=are a dozen cars}}' ), 'mw.messages.set: Register message with explicit plural forms' );
                assertMultipleFormats( [ 'plural-test-msg-explicit', 12 ], [ 'text', 'parse', 'escaped' ], 'There are a dozen cars', 'explicit plural get resolved' );
 
                assert.ok( mw.messages.set( 'plural-test-msg-explicit', 'There {{plural:$1|is one car|are $1 cars|0=are no cars|12=are a dozen cars}}' ), 'mw.messages.set: Register message with explicit plural forms' );
                assertMultipleFormats( [ 'plural-test-msg-explicit', 12 ], [ 'text', 'parse', 'escaped' ], 'There are a dozen cars', 'explicit plural get resolved' );
 
                assertMultipleFormats( [ 'mediawiki-test-pagetriage-del-talk-page-notify-summary', specialCharactersPageName ], [ 'plain', 'text' ], 'Notifying author of deletion nomination for [[' + specialCharactersPageName + ']]', 'Double square brackets with one parameter' );
 
 
                assertMultipleFormats( [ 'mediawiki-test-pagetriage-del-talk-page-notify-summary', specialCharactersPageName ], [ 'plain', 'text' ], 'Notifying author of deletion nomination for [[' + specialCharactersPageName + ']]', 'Double square brackets with one parameter' );
 
-               assert.equal( mw.message( 'mediawiki-test-pagetriage-del-talk-page-notify-summary', specialCharactersPageName ).escaped(), 'Notifying author of deletion nomination for [[' + mw.html.escape( specialCharactersPageName ) + ']]', 'Double square brackets with one parameter, when escaped' );
+               assert.strictEqual( mw.message( 'mediawiki-test-pagetriage-del-talk-page-notify-summary', specialCharactersPageName ).escaped(), 'Notifying author of deletion nomination for [[' + mw.html.escape( specialCharactersPageName ) + ']]', 'Double square brackets with one parameter, when escaped' );
 
                assert.ok( mw.messages.set( 'mediawiki-test-categorytree-collapse-bullet', '[<b>−</b>]' ), 'mw.messages.set: Register' );
 
                assert.ok( mw.messages.set( 'mediawiki-test-categorytree-collapse-bullet', '[<b>−</b>]' ), 'mw.messages.set: Register' );
-               assert.equal( mw.message( 'mediawiki-test-categorytree-collapse-bullet' ).plain(), mw.messages.get( 'mediawiki-test-categorytree-collapse-bullet' ), 'Single square brackets unchanged in plain mode' );
+               assert.strictEqual( mw.message( 'mediawiki-test-categorytree-collapse-bullet' ).plain(), mw.messages.get( 'mediawiki-test-categorytree-collapse-bullet' ), 'Single square brackets unchanged in plain mode' );
 
                assert.ok( mw.messages.set( 'mediawiki-test-wikieditor-toolbar-help-content-signature-result', '<a href=\'#\' title=\'{{#special:mypage}}\'>Username</a> (<a href=\'#\' title=\'{{#special:mytalk}}\'>talk</a>)' ), 'mw.messages.set: Register' );
 
                assert.ok( mw.messages.set( 'mediawiki-test-wikieditor-toolbar-help-content-signature-result', '<a href=\'#\' title=\'{{#special:mypage}}\'>Username</a> (<a href=\'#\' title=\'{{#special:mytalk}}\'>talk</a>)' ), 'mw.messages.set: Register' );
-               assert.equal( mw.message( 'mediawiki-test-wikieditor-toolbar-help-content-signature-result' ).plain(), mw.messages.get( 'mediawiki-test-wikieditor-toolbar-help-content-signature-result' ), 'HTML message with curly braces is not changed in plain mode' );
+               assert.strictEqual( mw.message( 'mediawiki-test-wikieditor-toolbar-help-content-signature-result' ).plain(), mw.messages.get( 'mediawiki-test-wikieditor-toolbar-help-content-signature-result' ), 'HTML message with curly braces is not changed in plain mode' );
 
                assertMultipleFormats( [ 'gender-plural-msg', 'male', 1 ], [ 'text', 'parse', 'escaped' ], 'he is awesome', 'Gender and plural are resolved' );
 
                assertMultipleFormats( [ 'gender-plural-msg', 'male', 1 ], [ 'text', 'parse', 'escaped' ], 'he is awesome', 'Gender and plural are resolved' );
-               assert.equal( mw.message( 'gender-plural-msg', 'male', 1 ).plain(), '{{GENDER:male|he|she|they}} {{PLURAL:1|is|are}} awesome', 'Parameters are substituted, but gender and plural are not resolved in plain mode' );
+               assert.strictEqual( mw.message( 'gender-plural-msg', 'male', 1 ).plain(), '{{GENDER:male|he|she|they}} {{PLURAL:1|is|are}} awesome', 'Parameters are substituted, but gender and plural are not resolved in plain mode' );
 
 
-               assert.equal( mw.message( 'grammar-msg' ).plain(), mw.messages.get( 'grammar-msg' ), 'Grammar is not resolved in plain mode' );
+               assert.strictEqual( mw.message( 'grammar-msg' ).plain(), mw.messages.get( 'grammar-msg' ), 'Grammar is not resolved in plain mode' );
                assertMultipleFormats( [ 'grammar-msg' ], [ 'text', 'parse' ], 'Przeszukaj ' + siteName, 'Grammar is resolved' );
                assertMultipleFormats( [ 'grammar-msg' ], [ 'text', 'parse' ], 'Przeszukaj ' + siteName, 'Grammar is resolved' );
-               assert.equal( mw.message( 'grammar-msg' ).escaped(), 'Przeszukaj ' + siteName, 'Grammar is resolved in escaped mode' );
+               assert.strictEqual( mw.message( 'grammar-msg' ).escaped(), 'Przeszukaj ' + siteName, 'Grammar is resolved in escaped mode' );
 
                assertMultipleFormats( [ 'formatnum-msg', '987654321.654321' ], [ 'text', 'parse', 'escaped' ], '987,654,321.654', 'formatnum is resolved' );
 
                assertMultipleFormats( [ 'formatnum-msg', '987654321.654321' ], [ 'text', 'parse', 'escaped' ], '987,654,321.654', 'formatnum is resolved' );
-               assert.equal( mw.message( 'formatnum-msg' ).plain(), mw.messages.get( 'formatnum-msg' ), 'formatnum is not resolved in plain mode' );
+               assert.strictEqual( mw.message( 'formatnum-msg' ).plain(), mw.messages.get( 'formatnum-msg' ), 'formatnum is not resolved in plain mode' );
 
                assertMultipleFormats( [ 'int-msg' ], [ 'text', 'parse', 'escaped' ], 'Some Other Message', 'int is resolved' );
 
                assertMultipleFormats( [ 'int-msg' ], [ 'text', 'parse', 'escaped' ], 'Some Other Message', 'int is resolved' );
-               assert.equal( mw.message( 'int-msg' ).plain(), mw.messages.get( 'int-msg' ), 'int is not resolved in plain mode' );
+               assert.strictEqual( mw.message( 'int-msg' ).plain(), mw.messages.get( 'int-msg' ), 'int is not resolved in plain mode' );
 
                assert.ok( mw.messages.set( 'mediawiki-italics-msg', '<i>Very</i> important' ), 'mw.messages.set: Register' );
                assertMultipleFormats( [ 'mediawiki-italics-msg' ], [ 'plain', 'text', 'parse' ], mw.messages.get( 'mediawiki-italics-msg' ), 'Simple italics unchanged' );
 
                assert.ok( mw.messages.set( 'mediawiki-italics-msg', '<i>Very</i> important' ), 'mw.messages.set: Register' );
                assertMultipleFormats( [ 'mediawiki-italics-msg' ], [ 'plain', 'text', 'parse' ], mw.messages.get( 'mediawiki-italics-msg' ), 'Simple italics unchanged' );
 
        QUnit.test( 'mw.msg', function ( assert ) {
                assert.ok( mw.messages.set( 'hello', 'Hello <b>awesome</b> world' ), 'mw.messages.set: Register' );
 
        QUnit.test( 'mw.msg', function ( assert ) {
                assert.ok( mw.messages.set( 'hello', 'Hello <b>awesome</b> world' ), 'mw.messages.set: Register' );
-               assert.equal( mw.msg( 'hello' ), 'Hello <b>awesome</b> world', 'Gets message with default options (existing message)' );
-               assert.equal( mw.msg( 'goodbye' ), '⧼goodbye⧽', 'Gets message with default options (nonexistent message)' );
+               assert.strictEqual( mw.msg( 'hello' ), 'Hello <b>awesome</b> world', 'Gets message with default options (existing message)' );
+               assert.strictEqual( mw.msg( 'goodbye' ), '⧼goodbye⧽', 'Gets message with default options (nonexistent message)' );
 
                assert.ok( mw.messages.set( 'plural-item', 'Found $1 {{PLURAL:$1|item|items}}' ), 'mw.messages.set: Register' );
 
                assert.ok( mw.messages.set( 'plural-item', 'Found $1 {{PLURAL:$1|item|items}}' ), 'mw.messages.set: Register' );
-               assert.equal( mw.msg( 'plural-item', 5 ), 'Found 5 items', 'Apply plural for count 5' );
-               assert.equal( mw.msg( 'plural-item', 0 ), 'Found 0 items', 'Apply plural for count 0' );
-               assert.equal( mw.msg( 'plural-item', 1 ), 'Found 1 item', 'Apply plural for count 1' );
+               assert.strictEqual( mw.msg( 'plural-item', 5 ), 'Found 5 items', 'Apply plural for count 5' );
+               assert.strictEqual( mw.msg( 'plural-item', 0 ), 'Found 0 items', 'Apply plural for count 0' );
+               assert.strictEqual( mw.msg( 'plural-item', 1 ), 'Found 1 item', 'Apply plural for count 1' );
 
 
-               assert.equal( mw.msg( 'mediawiki-test-pagetriage-del-talk-page-notify-summary', specialCharactersPageName ), 'Notifying author of deletion nomination for [[' + specialCharactersPageName + ']]', 'Double square brackets in mw.msg one parameter' );
+               assert.strictEqual( mw.msg( 'mediawiki-test-pagetriage-del-talk-page-notify-summary', specialCharactersPageName ), 'Notifying author of deletion nomination for [[' + specialCharactersPageName + ']]', 'Double square brackets in mw.msg one parameter' );
 
 
-               assert.equal( mw.msg( 'gender-plural-msg', 'male', 1 ), 'he is awesome', 'Gender test for male, plural count 1' );
-               assert.equal( mw.msg( 'gender-plural-msg', 'female', '1' ), 'she is awesome', 'Gender test for female, plural count 1' );
-               assert.equal( mw.msg( 'gender-plural-msg', 'unknown', 10 ), 'they are awesome', 'Gender test for neutral, plural count 10' );
+               assert.strictEqual( mw.msg( 'gender-plural-msg', 'male', 1 ), 'he is awesome', 'Gender test for male, plural count 1' );
+               assert.strictEqual( mw.msg( 'gender-plural-msg', 'female', '1' ), 'she is awesome', 'Gender test for female, plural count 1' );
+               assert.strictEqual( mw.msg( 'gender-plural-msg', 'unknown', 10 ), 'they are awesome', 'Gender test for neutral, plural count 10' );
 
 
-               assert.equal( mw.msg( 'grammar-msg' ), 'Przeszukaj ' + siteName, 'Grammar is resolved' );
+               assert.strictEqual( mw.msg( 'grammar-msg' ), 'Przeszukaj ' + siteName, 'Grammar is resolved' );
 
 
-               assert.equal( mw.msg( 'formatnum-msg', '987654321.654321' ), '987,654,321.654', 'formatnum is resolved' );
+               assert.strictEqual( mw.msg( 'formatnum-msg', '987654321.654321' ), '987,654,321.654', 'formatnum is resolved' );
 
 
-               assert.equal( mw.msg( 'int-msg' ), 'Some Other Message', 'int is resolved' );
+               assert.strictEqual( mw.msg( 'int-msg' ), 'Some Other Message', 'int is resolved' );
        } );
 
        QUnit.test( 'mw.hook', function ( assert ) {
        } );
 
        QUnit.test( 'mw.hook', function ( assert ) {
                mw.hook( 'hasOwnProperty' ).fire();
 
                mw.hook( 'test.hook.data' ).add( function ( data1, data2 ) {
                mw.hook( 'hasOwnProperty' ).fire();
 
                mw.hook( 'test.hook.data' ).add( function ( data1, data2 ) {
-                       assert.equal( data1, 'example', 'Fire with data (string param)' );
+                       assert.strictEqual( data1, 'example', 'Fire with data (string param)' );
                        assert.deepEqual( data2, [ 'two' ], 'Fire with data (array param)' );
                } );
                mw.hook( 'test.hook.data' ).fire( 'example', [ 'two' ] );
                        assert.deepEqual( data2, [ 'two' ], 'Fire with data (array param)' );
                } );
                mw.hook( 'test.hook.data' ).fire( 'example', [ 'two' ] );
                        } )
                        .fire( 'x' ).fire( 'y' ).fire( 'z' )
                        .add( function ( chr ) {
                        } )
                        .fire( 'x' ).fire( 'y' ).fire( 'z' )
                        .add( function ( chr ) {
-                               assert.equal( chr, 'z', 'Adding callback later invokes right away with last data' );
+                               assert.strictEqual( chr, 'z', 'Adding callback later invokes right away with last data' );
                        } );
 
                assert.deepEqual( chars, [ 'x', 'y', 'z' ], 'Multiple callbacks with multiple fires' );
                        } );
 
                assert.deepEqual( chars, [ 'x', 'y', 'z' ], 'Multiple callbacks with multiple fires' );
index 814a207..8a5e68a 100644 (file)
                mw.config.set( 'wgUserName', 'John' );
                mw.config.set( 'wgUserId', 123 );
 
                mw.config.set( 'wgUserName', 'John' );
                mw.config.set( 'wgUserId', 123 );
 
-               assert.equal( mw.user.getName(), 'John', 'getName()' );
+               assert.strictEqual( mw.user.getName(), 'John', 'getName()' );
                assert.strictEqual( mw.user.isAnon(), false, 'isAnon()' );
                assert.strictEqual( mw.user.getId(), 123, 'getId()' );
 
                assert.strictEqual( mw.user.isAnon(), false, 'isAnon()' );
                assert.strictEqual( mw.user.getId(), 123, 'getId()' );
 
-               assert.equal( mw.user.id(), 'John', 'user.id()' );
+               assert.strictEqual( mw.user.id(), 'John', 'user.id()' );
        } );
 
        QUnit.test( 'getUserInfo', function ( assert ) {
        } );
 
        QUnit.test( 'getUserInfo', function ( assert ) {
@@ -68,9 +68,9 @@
                var result, result2;
 
                result = mw.user.generateRandomSessionId();
                var result, result2;
 
                result = mw.user.generateRandomSessionId();
-               assert.equal( typeof result, 'string', 'type' );
-               assert.equal( $.trim( result ), result, 'no whitespace at beginning or end' );
-               assert.equal( result.length, 16, 'size' );
+               assert.strictEqual( typeof result, 'string', 'type' );
+               assert.strictEqual( $.trim( result ), result, 'no whitespace at beginning or end' );
+               assert.strictEqual( result.length, 16, 'size' );
 
                result2 = mw.user.generateRandomSessionId();
                assert.notEqual( result, result2, 'different when called multiple times' );
 
                result2 = mw.user.generateRandomSessionId();
                assert.notEqual( result, result2, 'different when called multiple times' );
@@ -89,9 +89,9 @@
                }
 
                result = mw.user.generateRandomSessionId();
                }
 
                result = mw.user.generateRandomSessionId();
-               assert.equal( typeof result, 'string', 'type' );
-               assert.equal( $.trim( result ), result, 'no whitespace at beginning or end' );
-               assert.equal( result.length, 16, 'size' );
+               assert.strictEqual( typeof result, 'string', 'type' );
+               assert.strictEqual( $.trim( result ), result, 'no whitespace at beginning or end' );
+               assert.strictEqual( result.length, 16, 'size' );
 
                result2 = mw.user.generateRandomSessionId();
                assert.notEqual( result, result2, 'different when called multiple times' );
 
                result2 = mw.user.generateRandomSessionId();
                assert.notEqual( result, result2, 'different when called multiple times' );
        QUnit.test( 'stickyRandomId', function ( assert ) {
                var result = mw.user.stickyRandomId(),
                        result2 = mw.user.stickyRandomId();
        QUnit.test( 'stickyRandomId', function ( assert ) {
                var result = mw.user.stickyRandomId(),
                        result2 = mw.user.stickyRandomId();
-               assert.equal( typeof result, 'string', 'type' );
+               assert.strictEqual( typeof result, 'string', 'type' );
                assert.strictEqual( /^[a-f0-9]{16}$/.test( result ), true, '16 HEX symbols string' );
                assert.strictEqual( /^[a-f0-9]{16}$/.test( result ), true, '16 HEX symbols string' );
-               assert.equal( result2, result, 'sticky' );
+               assert.strictEqual( result2, result, 'sticky' );
        } );
 
        QUnit.test( 'sessionId', function ( assert ) {
                var result = mw.user.sessionId(),
                        result2 = mw.user.sessionId();
        } );
 
        QUnit.test( 'sessionId', function ( assert ) {
                var result = mw.user.sessionId(),
                        result2 = mw.user.sessionId();
-               assert.equal( typeof result, 'string', 'type' );
-               assert.equal( $.trim( result ), result, 'no leading or trailing whitespace' );
-               assert.equal( result2, result, 'retained' );
+               assert.strictEqual( typeof result, 'string', 'type' );
+               assert.strictEqual( $.trim( result ), result, 'no leading or trailing whitespace' );
+               assert.strictEqual( result2, result, 'retained' );
        } );
 }( mediaWiki, jQuery ) );
        } );
 }( mediaWiki, jQuery ) );
index f776d41..272b147 100644 (file)
@@ -89,7 +89,7 @@
        } ) );
 
        QUnit.test( 'rawurlencode', function ( assert ) {
        } ) );
 
        QUnit.test( 'rawurlencode', function ( assert ) {
-               assert.equal( util.rawurlencode( 'Test:A & B/Here' ), 'Test%3AA%20%26%20B%2FHere' );
+               assert.strictEqual( util.rawurlencode( 'Test:A & B/Here' ), 'Test%3AA%20%26%20B%2FHere' );
        } );
 
        QUnit.test( 'escapeIdForAttribute', function ( assert ) {
        } );
 
        QUnit.test( 'escapeIdForAttribute', function ( assert ) {
                ].forEach( function ( testCase ) {
                        mw.config.set( 'wgFragmentMode', testCase[ 0 ] );
 
                ].forEach( function ( testCase ) {
                        mw.config.set( 'wgFragmentMode', testCase[ 0 ] );
 
-                       assert.equal( util.escapeIdForAttribute( testCase[ 1 ] ), testCase[ 2 ] );
+                       assert.strictEqual( util.escapeIdForAttribute( testCase[ 1 ] ), testCase[ 2 ] );
                } );
        } );
 
                } );
        } );
 
                ].forEach( function ( testCase ) {
                        mw.config.set( 'wgFragmentMode', testCase[ 0 ] );
 
                ].forEach( function ( testCase ) {
                        mw.config.set( 'wgFragmentMode', testCase[ 0 ] );
 
-                       assert.equal( util.escapeIdForLink( testCase[ 1 ] ), testCase[ 2 ] );
+                       assert.strictEqual( util.escapeIdForLink( testCase[ 1 ] ), testCase[ 2 ] );
                } );
        } );
 
        QUnit.test( 'wikiUrlencode', function ( assert ) {
                } );
        } );
 
        QUnit.test( 'wikiUrlencode', function ( assert ) {
-               assert.equal( util.wikiUrlencode( 'Test:A & B/Here' ), 'Test:A_%26_B/Here' );
+               assert.strictEqual( util.wikiUrlencode( 'Test:A & B/Here' ), 'Test:A_%26_B/Here' );
                // See also wfUrlencodeTest.php#provideURLS
                $.each( {
                        '+': '%2B',
                // See also wfUrlencodeTest.php#provideURLS
                $.each( {
                        '+': '%2B',
                        '<>': '%3C%3E',
                        '\'': '%27'
                }, function ( input, output ) {
                        '<>': '%3C%3E',
                        '\'': '%27'
                }, function ( input, output ) {
-                       assert.equal( util.wikiUrlencode( input ), output );
+                       assert.strictEqual( util.wikiUrlencode( input ), output );
                } );
        } );
 
                } );
        } );
 
                } );
 
                href = util.getUrl( 'Sandbox' );
                } );
 
                href = util.getUrl( 'Sandbox' );
-               assert.equal( href, '/wiki/Sandbox', 'simple title' );
+               assert.strictEqual( href, '/wiki/Sandbox', 'simple title' );
 
                href = util.getUrl( 'Foo:Sandbox? 5+5=10! (test)/sub ' );
 
                href = util.getUrl( 'Foo:Sandbox? 5+5=10! (test)/sub ' );
-               assert.equal( href, '/wiki/Foo:Sandbox%3F_5%2B5%3D10!_(test)/sub_', 'complex title' );
+               assert.strictEqual( href, '/wiki/Foo:Sandbox%3F_5%2B5%3D10!_(test)/sub_', 'complex title' );
 
                // T149767
                href = util.getUrl( 'My$$test$$$$$title' );
 
                // T149767
                href = util.getUrl( 'My$$test$$$$$title' );
-               assert.equal( href, '/wiki/My$$test$$$$$title', 'title with multiple consecutive dollar signs' );
+               assert.strictEqual( href, '/wiki/My$$test$$$$$title', 'title with multiple consecutive dollar signs' );
 
                href = util.getUrl();
 
                href = util.getUrl();
-               assert.equal( href, '/wiki/Foobar', 'default title' );
+               assert.strictEqual( href, '/wiki/Foobar', 'default title' );
 
                href = util.getUrl( null, { action: 'edit' } );
 
                href = util.getUrl( null, { action: 'edit' } );
-               assert.equal( href, '/w/index.php?title=Foobar&action=edit', 'default title with query string' );
+               assert.strictEqual( href, '/w/index.php?title=Foobar&action=edit', 'default title with query string' );
 
                href = util.getUrl( 'Sandbox', { action: 'edit' } );
 
                href = util.getUrl( 'Sandbox', { action: 'edit' } );
-               assert.equal( href, '/w/index.php?title=Sandbox&action=edit', 'simple title with query string' );
+               assert.strictEqual( href, '/w/index.php?title=Sandbox&action=edit', 'simple title with query string' );
 
                // Test fragments
                href = util.getUrl( 'Foo:Sandbox#Fragment', { action: 'edit' } );
 
                // Test fragments
                href = util.getUrl( 'Foo:Sandbox#Fragment', { action: 'edit' } );
-               assert.equal( href, '/w/index.php?title=Foo:Sandbox&action=edit#Fragment', 'namespaced title with query string and fragment' );
+               assert.strictEqual( href, '/w/index.php?title=Foo:Sandbox&action=edit#Fragment', 'namespaced title with query string and fragment' );
 
                href = util.getUrl( 'Sandbox#', { action: 'edit' } );
 
                href = util.getUrl( 'Sandbox#', { action: 'edit' } );
-               assert.equal( href, '/w/index.php?title=Sandbox&action=edit', 'title with query string and empty fragment' );
+               assert.strictEqual( href, '/w/index.php?title=Sandbox&action=edit', 'title with query string and empty fragment' );
 
                href = util.getUrl( 'Sandbox', {} );
 
                href = util.getUrl( 'Sandbox', {} );
-               assert.equal( href, '/wiki/Sandbox', 'title with empty query string' );
+               assert.strictEqual( href, '/wiki/Sandbox', 'title with empty query string' );
 
                href = util.getUrl( '#Fragment' );
 
                href = util.getUrl( '#Fragment' );
-               assert.equal( href, '/wiki/#Fragment', 'empty title with fragment' );
+               assert.strictEqual( href, '/wiki/#Fragment', 'empty title with fragment' );
 
                href = util.getUrl( '#Fragment', { action: 'edit' } );
 
                href = util.getUrl( '#Fragment', { action: 'edit' } );
-               assert.equal( href, '/w/index.php?action=edit#Fragment', 'empty title with query string and fragment' );
+               assert.strictEqual( href, '/w/index.php?action=edit#Fragment', 'empty title with query string and fragment' );
 
                mw.config.set( 'wgFragmentMode', [ 'legacy' ] );
                href = util.getUrl( 'Foo:Sandbox \xC4#Fragment \xC4', { action: 'edit' } );
 
                mw.config.set( 'wgFragmentMode', [ 'legacy' ] );
                href = util.getUrl( 'Foo:Sandbox \xC4#Fragment \xC4', { action: 'edit' } );
-               assert.equal( href, '/w/index.php?title=Foo:Sandbox_%C3%84&action=edit#Fragment_.C3.84', 'title with query string, fragment, and special characters' );
+               assert.strictEqual( href, '/w/index.php?title=Foo:Sandbox_%C3%84&action=edit#Fragment_.C3.84', 'title with query string, fragment, and special characters' );
 
                mw.config.set( 'wgFragmentMode', [ 'html5' ] );
                href = util.getUrl( 'Foo:Sandbox \xC4#Fragment \xC4', { action: 'edit' } );
 
                mw.config.set( 'wgFragmentMode', [ 'html5' ] );
                href = util.getUrl( 'Foo:Sandbox \xC4#Fragment \xC4', { action: 'edit' } );
-               assert.equal( href, '/w/index.php?title=Foo:Sandbox_%C3%84&action=edit#Fragment_Ä', 'title with query string, fragment, and special characters' );
+               assert.strictEqual( href, '/w/index.php?title=Foo:Sandbox_%C3%84&action=edit#Fragment_Ä', 'title with query string, fragment, and special characters' );
 
                href = util.getUrl( 'Foo:%23#Fragment', { action: 'edit' } );
 
                href = util.getUrl( 'Foo:%23#Fragment', { action: 'edit' } );
-               assert.equal( href, '/w/index.php?title=Foo:%2523&action=edit#Fragment', 'title containing %23 (#), fragment, and a query string' );
+               assert.strictEqual( href, '/w/index.php?title=Foo:%2523&action=edit#Fragment', 'title containing %23 (#), fragment, and a query string' );
 
                mw.config.set( 'wgFragmentMode', [ 'legacy' ] );
                href = util.getUrl( '#+&=:;@$-_.!*/[]<>\'§', { action: 'edit' } );
 
                mw.config.set( 'wgFragmentMode', [ 'legacy' ] );
                href = util.getUrl( '#+&=:;@$-_.!*/[]<>\'§', { action: 'edit' } );
-               assert.equal( href, '/w/index.php?action=edit#.2B.26.3D:.3B.40.24-_..21.2A.2F.5B.5D.3C.3E.27.C2.A7', 'fragment with various characters' );
+               assert.strictEqual( href, '/w/index.php?action=edit#.2B.26.3D:.3B.40.24-_..21.2A.2F.5B.5D.3C.3E.27.C2.A7', 'fragment with various characters' );
 
                mw.config.set( 'wgFragmentMode', [ 'html5' ] );
                href = util.getUrl( '#+&=:;@$-_.!*/[]<>\'§', { action: 'edit' } );
 
                mw.config.set( 'wgFragmentMode', [ 'html5' ] );
                href = util.getUrl( '#+&=:;@$-_.!*/[]<>\'§', { action: 'edit' } );
-               assert.equal( href, '/w/index.php?action=edit#+&=:;@$-_.!*/[]<>\'§', 'fragment with various characters' );
+               assert.strictEqual( href, '/w/index.php?action=edit#+&=:;@$-_.!*/[]<>\'§', 'fragment with various characters' );
        } );
 
        QUnit.test( 'wikiScript', function ( assert ) {
        } );
 
        QUnit.test( 'wikiScript', function ( assert ) {
                        wgScriptPath: '/w'
                } );
 
                        wgScriptPath: '/w'
                } );
 
-               assert.equal( util.wikiScript(), mw.config.get( 'wgScript' ),
+               assert.strictEqual( util.wikiScript(), mw.config.get( 'wgScript' ),
                        'wikiScript() returns wgScript'
                );
                        'wikiScript() returns wgScript'
                );
-               assert.equal( util.wikiScript( 'index' ), mw.config.get( 'wgScript' ),
+               assert.strictEqual( util.wikiScript( 'index' ), mw.config.get( 'wgScript' ),
                        'wikiScript( index ) returns wgScript'
                );
                        'wikiScript( index ) returns wgScript'
                );
-               assert.equal( util.wikiScript( 'load' ), mw.config.get( 'wgLoadScript' ),
+               assert.strictEqual( util.wikiScript( 'load' ), mw.config.get( 'wgLoadScript' ),
                        'wikiScript( load ) returns wgLoadScript'
                );
                        'wikiScript( load ) returns wgLoadScript'
                );
-               assert.equal( util.wikiScript( 'api' ), '/w/api.php', 'API path' );
+               assert.strictEqual( util.wikiScript( 'api' ), '/w/api.php', 'API path' );
        } );
 
        QUnit.test( 'addCSS', function ( assert ) {
        } );
 
        QUnit.test( 'addCSS', function ( assert ) {
                $el = $( '<div>' ).attr( 'id', 'mw-addcsstest' ).appendTo( '#qunit-fixture' );
 
                style = util.addCSS( '#mw-addcsstest { visibility: hidden; }' );
                $el = $( '<div>' ).attr( 'id', 'mw-addcsstest' ).appendTo( '#qunit-fixture' );
 
                style = util.addCSS( '#mw-addcsstest { visibility: hidden; }' );
-               assert.equal( typeof style, 'object', 'addCSS returned an object' );
+               assert.strictEqual( typeof style, 'object', 'addCSS returned an object' );
                assert.strictEqual( style.disabled, false, 'property "disabled" is available and set to false' );
 
                assert.strictEqual( style.disabled, false, 'property "disabled" is available and set to false' );
 
-               assert.equal( $el.css( 'visibility' ), 'hidden', 'Added style properties are in effect' );
+               assert.strictEqual( $el.css( 'visibility' ), 'hidden', 'Added style properties are in effect' );
 
                // Clean up
                $( style.ownerNode ).remove();
 
                // Clean up
                $( style.ownerNode ).remove();
                var url;
 
                url = 'http://example.org/?foo=wrong&foo=right#&foo=bad';
                var url;
 
                url = 'http://example.org/?foo=wrong&foo=right#&foo=bad';
-               assert.equal( util.getParamValue( 'foo', url ), 'right', 'Use latest one, ignore hash' );
+               assert.strictEqual( util.getParamValue( 'foo', url ), 'right', 'Use latest one, ignore hash' );
                assert.strictEqual( util.getParamValue( 'bar', url ), null, 'Return null when not found' );
 
                url = 'http://example.org/#&foo=bad';
                assert.strictEqual( util.getParamValue( 'bar', url ), null, 'Return null when not found' );
 
                url = 'http://example.org/#&foo=bad';
                        'Validate attributes of anchor tag in created element'
                );
 
                        'Validate attributes of anchor tag in created element'
                );
 
-               assert.equal( $tbMW.closest( '.portlet' ).attr( 'id' ), 'p-test-tb', 'Link was inserted within correct portlet' );
+               assert.strictEqual( $tbMW.closest( '.portlet' ).attr( 'id' ), 'p-test-tb', 'Link was inserted within correct portlet' );
                assert.strictEqual( $tbMW.next()[ 0 ], tbRL, 'Link is in the correct position (nextnode as Node object)' );
 
                cuQuux = util.addPortletLink( 'p-test-custom', '#', 'Quux', null, 'Example [shift-x]', 'q' );
                $cuQuux = $( cuQuux );
 
                assert.strictEqual( $tbMW.next()[ 0 ], tbRL, 'Link is in the correct position (nextnode as Node object)' );
 
                cuQuux = util.addPortletLink( 'p-test-custom', '#', 'Quux', null, 'Example [shift-x]', 'q' );
                $cuQuux = $( cuQuux );
 
-               assert.equal( $cuQuux.find( 'a' ).attr( 'title' ), 'Example [test-q]', 'Existing accesskey is stripped and updated' );
+               assert.strictEqual( $cuQuux.find( 'a' ).attr( 'title' ), 'Example [test-q]', 'Existing accesskey is stripped and updated' );
 
 
-               assert.equal(
+               assert.strictEqual(
                        $( '#p-test-custom #c-barmenu ul li' ).length,
                        1,
                        'addPortletLink did not add the item to all <ul> elements in the portlet (T37082)'
                        $( '#p-test-custom #c-barmenu ul li' ).length,
                        1,
                        'addPortletLink did not add the item to all <ul> elements in the portlet (T37082)'
                tbRLDMnonexistentid = util.addPortletLink( 'p-test-tb', '//mediawiki.org/wiki/RL/DM',
                        'Default modules', 't-rldm-nonexistent', 'List of all default modules ', 'd', '#t-rl-nonexistent' );
 
                tbRLDMnonexistentid = util.addPortletLink( 'p-test-tb', '//mediawiki.org/wiki/RL/DM',
                        'Default modules', 't-rldm-nonexistent', 'List of all default modules ', 'd', '#t-rl-nonexistent' );
 
-               assert.equal( tbRLDMnonexistentid, $( '#p-test-tb li:last' )[ 0 ], 'Fallback to adding at the end (nextnode non-matching CSS selector)' );
+               assert.strictEqual( tbRLDMnonexistentid, $( '#p-test-tb li:last' )[ 0 ], 'Fallback to adding at the end (nextnode non-matching CSS selector)' );
 
                // test case - empty jquery object as next node
                tbRLDMemptyjquery = util.addPortletLink( 'p-test-tb', '//mediawiki.org/wiki/RL/DM',
                        'Default modules', 't-rldm-empty-jquery', 'List of all default modules ', 'd', $( '#t-rl-nonexistent' ) );
 
 
                // test case - empty jquery object as next node
                tbRLDMemptyjquery = util.addPortletLink( 'p-test-tb', '//mediawiki.org/wiki/RL/DM',
                        'Default modules', 't-rldm-empty-jquery', 'List of all default modules ', 'd', $( '#t-rl-nonexistent' ) );
 
-               assert.equal( tbRLDMemptyjquery, $( '#p-test-tb li:last' )[ 0 ], 'Fallback to adding at the end (nextnode as empty jQuery object)' );
+               assert.strictEqual( tbRLDMemptyjquery, $( '#p-test-tb li:last' )[ 0 ], 'Fallback to adding at the end (nextnode as empty jQuery object)' );
        } );
 
        QUnit.test( 'validateEmail', function ( assert ) {
        } );
 
        QUnit.test( 'validateEmail', function ( assert ) {