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,
+               "qunit/no-assert-equal": "error",
                "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 } );
-                               assert.equal(
+                               assert.strictEqual(
                                        parser.parse( test.key, test.args ).html(),
                                        test.result,
                                        test.name
index 9074aba..d8972ab 100644 (file)
        } ) );
 
        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 ) {
-               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.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', {
                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', {
                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
index e4b6157..c064275 100644 (file)
@@ -51,7 +51,7 @@
        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 ] );
@@ -75,7 +75,7 @@
                        $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' );
-                       assert.equal( newTitle, 'Title [test-a]', 'title="' + oldTitle + '"' );
+                       assert.strictEqual( newTitle, 'Title [test-a]', 'title="' + oldTitle + '"' );
                }
                $.fn.updateTooltipAccessKeys.setTestMode( false );
        } );
                $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 );
        } );
 
                $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 );
        } );
 
index d6208e9..bd6e7b2 100644 (file)
@@ -55,9 +55,9 @@
        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 );
-               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 ) );
index 6a265eb..3f17ca5 100644 (file)
@@ -3,36 +3,36 @@
 
        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();
-               assert.equal( typeof ratio, 'number', '$.bracketedDevicePixelRatio() returns a number' );
+               assert.strictEqual( typeof ratio, 'number', '$.bracketedDevicePixelRatio() returns a number' );
        } );
 
        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
-               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
-               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 ) );
index 277ba3f..0e34e34 100644 (file)
 
                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(),
index 7117d1f..9d4f8dd 100644 (file)
@@ -55,7 +55,7 @@
                        // 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'
index d3f6533..df29ee6 100644 (file)
@@ -50,8 +50,8 @@
                        $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' );
 
@@ -80,7 +80,7 @@
                        $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' );
                        $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' );
                        $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' );
                        '<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 ) {
                        ),
                        $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 () {
-                       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' );
                        ),
                        $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 () {
-                       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' );
                        ),
                        $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 () {
-                       assert.equal( $toggleText.text(), 'Show', 'predefined text is toggled' );
+                       assert.strictEqual( $toggleText.text(), 'Show', 'predefined text is toggled' );
 
                        $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' );
index 495ce74..69a5cec 100644 (file)
                );
                $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'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        $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'
                $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'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        $cell.attr( 'title' ),
                        undefined,
                        'after sort: no title tag added'
 
                $table.tablesorter();
 
-               assert.equal(
+               assert.strictEqual(
                        $table.find( 'tr:eq(2) td:eq(1)' ).prop( 'rowSpan' ),
                        3,
                        'Rowspan not exploded'
                $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.tablesorter();
 
-               assert.equal(
+               assert.strictEqual(
                        $table.children().get( 0 ).nodeName,
                        'CAPTION',
                        'First element after <thead> must be <caption> (T34047)'
                );
                $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)'
                );
-               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)'
                );
                $table.tablesorter().find( '.headerSort:eq(0)' ).click();
 
-               assert.equal(
+               assert.strictEqual(
                        $table.find( 'td' ).first().text(),
                        '1',
                        'Applied correct sorting order'
                );
                $table.tablesorter().find( '.headerSort:eq(0)' ).click();
 
-               assert.equal(
+               assert.strictEqual(
                        $table.find( 'td' ).text(),
                        'CDEFCCA',
                        'Applied correct sorting order'
                );
                $table.tablesorter().find( '.headerSort:eq(0)' ).click();
 
-               assert.equal(
+               assert.strictEqual(
                        $table.find( 'td' ).text(),
                        '4517',
                        'Applied correct sorting order'
                );
                $table.tablesorter();
 
-               assert.equal(
+               assert.strictEqual(
                        $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'
                );
-               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.tablesorter();
 
-               assert.equal(
+               assert.strictEqual(
                        $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>'
                );
                $table.tablesorter();
-               assert.equal( $table.find( '#A2' ).data( 'headerIndex' ),
+               assert.strictEqual( $table.find( '#A2' ).data( 'headerIndex' ),
                        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'
                );
                                '</table>'
                );
                $table.tablesorter();
-               assert.equal( $table.find( '#C2' ).data( 'headerIndex' ),
+               assert.strictEqual( $table.find( '#C2' ).data( 'headerIndex' ),
                        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'
                );
                                '</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'
                        );
 
                parsers = $table.data( 'tablesorter' ).config.parsers;
 
-               assert.equal(
+               assert.strictEqual(
                        parsers.length,
                        2,
                        'detectParserForColumn() detect 2 parsers'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        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 = $table.data( 'tablesorter' ).config.parsers;
-               assert.equal(
+               assert.strictEqual(
                        parsers[ 1 ].id,
                        'number',
                        'detectParserForColumn() detect parser.id "number" for second column'
                );
 
                parsers = $table.data( 'tablesorter' ).config.parsers;
-               assert.equal(
+               assert.strictEqual(
                        parsers[ 0 ].id,
                        'number',
                        'detectParserForColumn() detect parser.id "number"'
index 1e183fb..d598586 100644 (file)
 
                        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' );
-                               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 ) ) {
-                                       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 {
-                                       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 ) {
-                       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 ) {
-                       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 ) {
-                       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 ) {
-                       assert.equal( response, false );
+                       assert.strictEqual( response, false );
                } );
        } );
 
@@ -74,7 +74,7 @@
                        '{"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 ) {
-                       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 ) {
-                       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 ) {
-                       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 ) {
-                               assert.equal( edit.newrevid, 13 );
+                               assert.strictEqual( edit.newrevid, 13 );
                        } );
        } );
 
@@ -84,7 +84,7 @@
                                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 ) {
-                               assert.equal( edit.newrevid, 23 );
+                               assert.strictEqual( edit.newrevid, 23 );
                        } );
        } );
 
                                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 ) {
-                               assert.equal( reason, 'invalidtitle' );
+                               assert.strictEqual( reason, 'invalidtitle' );
                        } );
        } );
 
                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 ) {
-                       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 ) {
-                       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 ) {
-                       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 ) );
index 28799e9..5ae0e94 100644 (file)
@@ -59,7 +59,7 @@
 
                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() );
        } );
@@ -73,7 +73,7 @@
 
                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() );
        } );
@@ -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.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' }, '[]' );
                } );
@@ -99,7 +99,7 @@
                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' }, '[]' );
                } );
 
                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' }, '[]' );
                } );
 
                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' }, '[]' );
                } );
 
                        .then( function ( token ) {
                                assert.ok( token.length, 'Got a token' );
                        }, function ( err ) {
-                               assert.equal( err, '', 'API error' );
+                               assert.strictEqual( err, '', 'API error' );
                        } )
                        .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 ) {
-                               assert.equal( token, 'good', 'The token' );
+                               assert.strictEqual( token, 'good', 'The token' );
                        } )
                        .fail( function ( err ) {
-                               assert.equal( err, '', 'API error' );
+                               assert.strictEqual( err, '', 'API error' );
                        } )
                        .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 ) {
-                               assert.equal( err, '', 'API error' );
+                               assert.strictEqual( err, '', 'API error' );
                        } )
                        .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 ) {
                // 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 ) {
-                               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 ) {
-                               assert.equal( err, 'query-missing', 'Expected no query error code' );
+                               assert.strictEqual( err, 'query-missing', 'Expected no query error code' );
                                assert.deepEqual( rsp, serverRsp );
                        } );
        } );
                // 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 ) {
-                               assert.equal( err, '', 'API error' );
+                               assert.strictEqual( err, '', 'API error' );
                        } )
                        .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 ) {
-                               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 ) {
-                               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 ) {
-                               assert.equal( errorCode, 'assertuserfailed', 'getToken fails assert' );
+                               assert.strictEqual( errorCode, 'assertuserfailed', 'getToken fails assert' );
                                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 () {
-                       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' },
                                }
                        );
                } ).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();
-               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 );
                } );
index 8641469..649bf03 100644 (file)
@@ -17,7 +17,7 @@
                } );
 
                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 ) {
-                       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 ) {
-                       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() );
 
-               assert.equal(
+               assert.strictEqual(
                        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 = 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 = new mw.rcfilters.UriProcessor( filtersModel );
 
                cases.forEach( function ( testCase ) {
-                       assert.equal(
+                       assert.strictEqual(
                                uriProcessor.doesQueryContainRecognizedParams( testCase.query ),
                                testCase.result,
                                testCase.message
                                }
                        );
 
-                       assert.equal(
+                       assert.strictEqual(
                                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 );
-               assert.equal(
+               assert.strictEqual(
                        item.getName(),
                        'group1__filter1',
                        'Filter name is retained.'
                );
-               assert.equal(
+               assert.strictEqual(
                        item.getGroupName(),
                        'group1',
                        'Group name is retained.'
                                description: 'test description'
                        }
                );
-               assert.equal(
+               assert.strictEqual(
                        item.getLabel(),
                        'test label',
                        'Label information is retained.'
                );
-               assert.equal(
+               assert.strictEqual(
                        item.getLabel(),
                        'test label',
                        'Description information is retained.'
                                selected: true
                        }
                );
-               assert.equal(
+               assert.strictEqual(
                        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.'
                        [ 'sub1', 'sub2', 'sub3' ],
                        'Subset information is retained.'
                );
-               assert.equal(
+               assert.strictEqual(
                        item.existsInSubset( 'sub1' ),
                        true,
                        'Specific item exists in subset.'
                );
-               assert.equal(
+               assert.strictEqual(
                        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 );
-               assert.equal(
+               assert.strictEqual(
                        item.isIncluded(),
                        true,
                        'Item toggles its included state.'
                        },
                        'Conflict information is retained.'
                );
-               assert.equal(
+               assert.strictEqual(
                        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.'
                );
-               assert.equal(
+               assert.strictEqual(
                        item.isConflicted(),
                        false,
                        'Initial state of "conflicted" is false.'
                );
 
                item.toggleConflicted( true );
-               assert.equal(
+               assert.strictEqual(
                        item.isConflicted(),
                        true,
                        'Item toggles its conflicted state.'
 
                // 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 );
-               assert.equal(
+               assert.strictEqual(
                        item.isFullyCovered(),
                        true,
                        'Item toggles its fully coverage state.'
 
                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 ) {
 
                item.setValue( '1' );
 
-               assert.equal( item.getValue(), '1', 'Value is kept as-is' );
+               assert.strictEqual( item.getValue(), '1', 'Value is kept as-is' );
        } );
 }( mediaWiki ) );
index 65ef43c..45d591d 100644 (file)
 
                model.initializeFilters( definition );
 
-               assert.equal(
+               assert.strictEqual(
                        model.isHighlightEnabled(),
                        false,
                        'Initially, highlight is disabled.'
                );
 
                model.toggleHighlight( true );
-               assert.equal(
+               assert.strictEqual(
                        model.isHighlightEnabled(),
                        true,
                        'Highlight is enabled on toggle.'
                        'Highlighted items are highlighted.'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        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.initializeFilters( shortFilterDefinition, null );
 
                model.emptyAllFilters();
-               assert.equal( model.areVisibleFiltersEmpty(), true );
+               assert.strictEqual( model.areVisibleFiltersEmpty(), true );
 
                model.toggleFiltersSelected( {
                        group3__filter5: true // sticky
                } );
-               assert.equal( model.areVisibleFiltersEmpty(), true );
+               assert.strictEqual( model.areVisibleFiltersEmpty(), true );
 
                model.toggleFiltersSelected( {
                        group1__filter1: true
                } );
-               assert.equal( model.areVisibleFiltersEmpty(), false );
+               assert.strictEqual( model.areVisibleFiltersEmpty(), false );
        } );
 }( mediaWiki, jQuery ) );
index ed054bd..92e5f2e 100644 (file)
                                testCase.msg + ' (itemState)'
                        );
 
-                       assert.equal(
+                       assert.strictEqual(
                                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)'
                );
                item1 = queriesModel.getItemByID( id1 );
 
-               assert.equal(
+               assert.strictEqual(
                        item1.getID(),
                        id1,
                        'Item created and its data retained successfully'
index ee3be94..5e35c18 100644 (file)
                        $.extend( true, {}, itemData )
                );
 
-               assert.equal(
+               assert.strictEqual(
                        model.getID(),
                        'randomID',
                        'Item ID is retained'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        model.getLabel(),
                        'Some label',
                        'Item label is retained'
@@ -41,7 +41,7 @@
                        'Item data is retained'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        model.isDefault(),
                        false,
                        'Item default state is retained.'
                        $.extend( true, {}, itemData )
                );
 
-               assert.equal(
+               assert.strictEqual(
                        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 );
-               assert.equal(
+               assert.strictEqual(
                        model.isDefault(),
                        false,
                        'Default state toggles to false successfully'
@@ -85,7 +85,7 @@
                        { default: true }
                );
 
-               assert.equal(
+               assert.strictEqual(
                        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
-                               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.
-                               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
-                               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 );
@@ -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.
-                               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
-                               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
-                               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
-                               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 );
@@ -189,7 +189,7 @@ QUnit.module( 'mediawiki.widgets.APIResultsQueue' );
                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 );
index 4e15cf0..485bac0 100644 (file)
@@ -32,7 +32,7 @@
                        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 ) );
index ae3ebbf..61b8f34 100644 (file)
                        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 );
 
-                       assert.equal(
+                       assert.strictEqual(
                                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++ ) {
-                       assert.equal(
+                       assert.strictEqual(
                                $.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 ]
                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' );
-               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' );
-               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' );
-               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' );
-               assert.equal( title.getNameText(), 'Glarg foo glang', 'Underscores' );
+               assert.strictEqual( title.getNameText(), 'Glarg foo glang', 'Underscores' );
 
                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' );
-               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' );
-               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' );
-               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' );
-               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  ' );
-               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' );
-               assert.equal( title.getFragment(), 'foo', 'Fragment' );
+               assert.strictEqual( title.getFragment(), 'foo', 'Fragment' );
 
                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' );
-               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 );
-               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 );
-               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 );
-               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 );
-               assert.equal( title.toString(), 'File:Something.PDF' );
+               assert.strictEqual( title.toString(), 'File:Something.PDF' );
 
                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 );
-               assert.equal( title.toString(), 'Penguins:Frobisher' );
+               assert.strictEqual( title.toString(), 'Penguins:Frobisher' );
 
                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' );
-               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 ) {
                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( 'ß' );
-               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)' );
-               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' );
-               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 );
-               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' );
 
-               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 );
-                       assert.equal( title.getExtension(), ext, description || pagename );
+                       assert.strictEqual( title.getExtension(), ext, description || pagename );
                }
 
                extTest( 'MediaWiki:Vector.js', 'js' );
                } );
 
                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 );
-               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 );
-               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 ) {
                                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' );
                        }
                        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 + '] ';
-                       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' );
-                               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' );
                        }
                                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' );
                        }
index f2cb70b..eece8c0 100644 (file)
                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(
                        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',
                        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 () {
                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 );
-               assert.equal( uri.toString(), testuri, 'undefined' );
+               assert.strictEqual( uri.toString(), testuri, 'undefined' );
 
                uri = new MyUri( null );
-               assert.equal( uri.toString(), testuri, 'null' );
+               assert.strictEqual( uri.toString(), testuri, 'null' );
 
                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 = 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é';
-               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';
-               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';
-               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;
-               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';
-               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'
                } );
-               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 ) {
                );
 
                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'
                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' );
 
 
                // 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
 
                // 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;
 
-               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 );
-               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 ) {
                        '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();
-               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' );
                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' );
-               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' );
-               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 );
-               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 );
-               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 ) {
                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();
-               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 ) );
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++ ) {
-                               assert.equal(
+                               assert.strictEqual(
                                        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';
 
-               assert.equal(
+               assert.strictEqual(
                        getBucket( experiment, token ),
                        getBucket( experiment, token ),
                        'It returns the same bucket for the same experiment-token pair.'
@@ -33,7 +33,7 @@
                        A: 0.314159265359
                };
 
-               assert.equal(
+               assert.strictEqual(
                        getBucket( experiment, token ),
                        'A',
                        'It returns the bucket if only one is defined.'
@@ -43,7 +43,7 @@
                experiment = createExperiment();
                experiment.enabled = false;
 
-               assert.equal(
+               assert.strictEqual(
                        getBucket( experiment, token ),
                        'control',
                        'It returns "control" if the experiment is disabled.'
@@ -53,7 +53,7 @@
                experiment = createExperiment();
                experiment.buckets = {};
 
-               assert.equal(
+               assert.strictEqual(
                        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'
                );
 
-               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'
@@ -18,7 +18,7 @@
        } );
 
        QUnit.test( 'element()', function ( assert ) {
-               assert.equal(
+               assert.strictEqual(
                        mw.html.element(),
                        '<undefined/>',
                        'return valid html even without arguments'
        } );
 
        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 ) {
-               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'
 
        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',
                                {},
@@ -63,7 +63,7 @@
                        'unescaped content with mw.html.Raw'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        mw.html.element(
                                'option',
                                {
@@ -75,7 +75,7 @@
                        'boolean true attribute value'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        mw.html.element(
                                'option',
                                {
                        'boolean false attribute value'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        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' ),
index 1f7a5ec..3d3eedd 100644 (file)
@@ -9,7 +9,7 @@
                );
 
                return mw.loader.using( 'test.inspect.script' ).then( function () {
-                       assert.equal(
+                       assert.strictEqual(
                                mw.inspect.getModuleSize( 'test.inspect.script' ),
                                // name, script function
                                43,
@@ -26,7 +26,7 @@
                );
 
                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,
@@ -44,7 +44,7 @@
                );
 
                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,
@@ -63,7 +63,7 @@
                );
 
                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,
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 ) {
-               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.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' );
 
-               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'
 
                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'
 
                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'
                );
 
-               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'
                );
 
-               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'
                );
 
-               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'
                );
-               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'
                );
-               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'
                );
-               assert.equal(
+               assert.strictEqual(
                        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'
                );
-               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'
                );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'plural-only-explicit-forms', 2 ),
                        'It is a double room.',
                        'Plural with explicit forms alone.'
        } );
 
        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 ) {
                // 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"'
                );
-               assert.equal(
+               assert.strictEqual(
                        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' );
-               assert.equal(
+               assert.strictEqual(
                        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'
                );
-               assert.equal(
+               assert.strictEqual(
                        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' );
-               assert.equal(
+               assert.strictEqual(
                        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"'
                );
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'gender-msg-currentuser' ),
                        'green',
                        'Neutral for current user'
 
                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'
                );
-               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' );
-               assert.equal(
+               assert.strictEqual(
                        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' );
-               assert.equal(
+               assert.strictEqual(
                        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}}' );
-               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}}' );
-               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}}' );
-               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}}' );
-               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}}}}' );
-               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}}}}' );
-               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 ) {
-               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}}' );
-               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 ) {
                                                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
                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.'
                );
-               assert.equal(
+               assert.strictEqual(
                        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.'
                // 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\''
                );
 
                // 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\''
                );
 
                // 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\''
                        'Link with nested message'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        formatParse( 'see-portal-url' ),
                        'Project:Community portal is an important community page.',
                        'Nested message'
 
                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'
 
        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}}' );
-               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}}' );
-               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]]' );
-               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'
                {
                        lang: 'ar',
                        number: '٩٨٧٦٥٤٣٢١٫٦٥٤٣٢١',
-                       result: 987654321,
+                       result: '987654321',
                        integer: true,
                        description: 'formatnum test for Arabic, with decimal separator, reverse'
                },
                {
                        lang: 'ar',
                        number: '-١٢٫٨٩',
-                       result: -12,
+                       result: '-12',
                        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 } );
-                                               assert.equal(
+                                               assert.strictEqual(
                                                        parser.parse( test.integer ? 'formatnum-msg-int' : 'formatnum-msg',
                                                                [ test.number ] ).html(),
                                                        test.result,
                        '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'
                        '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'
 
                // 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>' );
-               assert.equal(
+               assert.strictEqual(
                        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.' );
-               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.' );
-               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.' );
-               assert.equal(
+               assert.strictEqual(
                        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' );
 
-               assert.equal(
+               assert.strictEqual(
                        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'
                );
 
-               assert.equal( logSpy.callCount, 2, 'mw.log.warn calls' );
+               assert.strictEqual( logSpy.callCount, 2, 'mw.log.warn calls' );
        } );
 
        QUnit.test( 'Integration', function ( assert ) {
                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'
                );
 
-               assert.equal(
+               assert.strictEqual(
                        $( '<span>' ).msg( 'integration-test' ).html(),
                        expected,
                        'jQuery plugin $.fn.msg() works correctly'
                        $( '<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'
index 6cb5d76..54d4285 100644 (file)
                        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 );
-                       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 ) );
index e4db771..9ea3c11 100644 (file)
 
        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' );
-               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 ) {
 
                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 ) {
                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 );
-               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 ) {
                        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 );
 
-               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 ) {
@@ -96,7 +97,7 @@
                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
        } );
 
        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.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 ) );
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 ) {
-                               assert.equal( $element.css( prop ), val,
+                               assert.strictEqual( $element.css( prop ), val,
                                        'style "' + prop + ': ' + val + '" from url is applied (after ' + styleTestSince + 'ms)'
                                );
 
                mw.loader.implement(
                        'test.implement.a',
                        function () {
-                               assert.equal(
+                               assert.strictEqual(
                                        $element.css( 'float' ),
                                        'right',
                                        'style is applied'
                mw.loader.implement(
                        'test.implement.c',
                        function () {
-                               assert.equal(
+                               assert.strictEqual(
                                        $element.css( 'float' ),
                                        'right',
                                        'style is applied'
                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 () {
-                       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 () {
-                                       assert.equal( $element.css( 'text-align' ), 'center',
+                                       assert.strictEqual( $element.css( 'text-align' ), 'center',
                                                'CSS styles after the @import rule are working'
                                        );
 
                mw.loader.implement(
                        'test.implement.e',
                        function () {
-                               assert.equal(
+                               assert.strictEqual(
                                        $element.css( 'float' ),
                                        'right',
                                        'Depending module\'s style is applied'
                mw.loader.implement(
                        'test.implement.e2',
                        function () {
-                               assert.equal(
+                               assert.strictEqual(
                                        $element2.css( 'float' ),
                                        'left',
                                        'Dependency\'s style is applied'
                ] );
 
                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' ],
 
                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,
                );
                // 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
 
                // 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
                        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 ) {
-               assert.equal(
+               assert.strictEqual(
                        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'
@@ -65,8 +65,8 @@
        } );
 
        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'
@@ -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' );
-               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.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)' );
                // 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' );
 
-               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();
-               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' );
-               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();
-               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';
-               assert.equal( window.anotherGlobalMapChecker, 'World', 'Change in window object works' );
+               assert.strictEqual( window.anotherGlobalMapChecker, 'World', 'Change in window object works' );
                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 ) {
 
                        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
-               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.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.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.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.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( '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.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();
-               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();
-               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.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' );
 
                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.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.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' );
-               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' );
-               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' );
-               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' );
-               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' );
 
        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.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 ) {
                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' ] );
                        } )
                        .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' );
index 814a207..8a5e68a 100644 (file)
                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.equal( mw.user.id(), 'John', 'user.id()' );
+               assert.strictEqual( mw.user.id(), 'John', 'user.id()' );
        } );
 
        QUnit.test( 'getUserInfo', function ( assert ) {
@@ -68,9 +68,9 @@
                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' );
@@ -89,9 +89,9 @@
                }
 
                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' );
        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.equal( result2, result, 'sticky' );
+               assert.strictEqual( result2, result, 'sticky' );
        } );
 
        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 ) );
index f776d41..272b147 100644 (file)
@@ -89,7 +89,7 @@
        } ) );
 
        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 ) {
                ].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 ] );
 
-                       assert.equal( util.escapeIdForLink( testCase[ 1 ] ), testCase[ 2 ] );
+                       assert.strictEqual( util.escapeIdForLink( testCase[ 1 ] ), testCase[ 2 ] );
                } );
        } );
 
        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',
                        '<>': '%3C%3E',
                        '\'': '%27'
                }, function ( input, output ) {
-                       assert.equal( util.wikiUrlencode( input ), output );
+                       assert.strictEqual( util.wikiUrlencode( input ), output );
                } );
        } );
 
                } );
 
                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 ' );
-               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' );
-               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();
-               assert.equal( href, '/wiki/Foobar', 'default title' );
+               assert.strictEqual( href, '/wiki/Foobar', 'default title' );
 
                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' } );
-               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' } );
-               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' } );
-               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', {} );
-               assert.equal( href, '/wiki/Sandbox', 'title with empty query string' );
+               assert.strictEqual( href, '/wiki/Sandbox', 'title with empty query string' );
 
                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' } );
-               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' } );
-               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' } );
-               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' } );
-               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' } );
-               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' } );
-               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 ) {
                        wgScriptPath: '/w'
                } );
 
-               assert.equal( util.wikiScript(), mw.config.get( 'wgScript' ),
+               assert.strictEqual( util.wikiScript(), mw.config.get( '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'
                );
-               assert.equal( util.wikiScript( 'load' ), mw.config.get( 'wgLoadScript' ),
+               assert.strictEqual( util.wikiScript( 'load' ), mw.config.get( '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 ) {
                $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.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();
                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';
                        '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.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)'
                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' ) );
 
-               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 ) {