tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

15.4.4.5-3.js (3513B)


      1 /* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
      2 /* This Source Code Form is subject to the terms of the Mozilla Public
      3 * License, v. 2.0. If a copy of the MPL was not distributed with this
      4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      5 
      6 
      7 /**
      8   File Name:          15.4.4.5-3.js
      9   ECMA Section:       Array.prototype.sort(comparefn)
     10   Description:
     11 
     12   This is a regression test for
     13   http://scopus/bugsplat/show_bug.cgi?id=117144
     14 
     15   Verify that sort is successfull, even if the sort compare function returns
     16   a very large negative or positive value.
     17 
     18   Author:             christine@netscape.com
     19   Date:               12 november 1997
     20 */
     21 
     22 
     23 var SECTION = "15.4.4.5-3";
     24 var TITLE   = "Array.prototype.sort(comparefn)";
     25 
     26 writeHeaderToLog( SECTION + " "+ TITLE);
     27 
     28 var array = new Array();
     29 
     30 var TIME_2000  = 946684800000;
     31 var TIME_1900  = -2208988800000;
     32 
     33 array[array.length] = new Date( TIME_2000 * Math.PI );
     34 array[array.length] = new Date( TIME_2000 * 10 );
     35 array[array.length] = new Date( TIME_1900 + TIME_1900  );
     36 array[array.length] = new Date(0);
     37 array[array.length] = new Date( TIME_2000 );
     38 array[array.length] = new Date( TIME_1900 + TIME_1900 +TIME_1900 );
     39 array[array.length] = new Date( TIME_1900 * Math.PI );
     40 array[array.length] = new Date( TIME_1900 * 10 );
     41 array[array.length] = new Date( TIME_1900 );
     42 array[array.length] = new Date( TIME_2000 + TIME_2000 );
     43 array[array.length] = new Date( 1899, 0, 1 );
     44 array[array.length] = new Date( 2000, 1, 29 );
     45 array[array.length] = new Date( 2000, 0, 1 );
     46 array[array.length] = new Date( 1999, 11, 31 );
     47 
     48 var testarr1 = new Array();
     49 clone( array, testarr1 );
     50 testarr1.sort( comparefn1 );
     51 
     52 var testarr2 = new Array();
     53 clone( array, testarr2 );
     54 testarr2.sort( comparefn2 );
     55 
     56 testarr3 = new Array();
     57 clone( array, testarr3 );
     58 testarr3.sort( comparefn3 );
     59 
     60 // when there's no sort function, sort sorts by the toString value of Date.
     61 
     62 var testarr4 = new Array();
     63 clone( array, testarr4 );
     64 testarr4.sort();
     65 
     66 var realarr = new Array();
     67 clone( array, realarr );
     68 realarr.sort( realsort );
     69 
     70 var stringarr = new Array();
     71 clone( array, stringarr );
     72 stringarr.sort( stringsort );
     73 
     74 for ( var i = 0; i < array.length; i++) {
     75  new TestCase(
     76    "testarr1["+i+"]",
     77    realarr[i],
     78    testarr1[i] );
     79 }
     80 
     81 for ( var i=0; i < array.length; i++) {
     82  new TestCase(
     83    "testarr2["+i+"]",
     84    realarr[i],
     85    testarr2[i] );
     86 }
     87 
     88 for ( var i=0; i < array.length; i++) {
     89  new TestCase(
     90    "testarr3["+i+"]",
     91    realarr[i],
     92    testarr3[i] );
     93 }
     94 
     95 for ( var i=0; i < array.length; i++) {
     96  new TestCase(
     97    "testarr4["+i+"]",
     98    stringarr[i].toString(),
     99    testarr4[i].toString() );
    100 }
    101 
    102 test();
    103 
    104 function comparefn1( x, y ) {
    105  return x - y;
    106 }
    107 function comparefn2( x, y ) {
    108  return x.valueOf() - y.valueOf();
    109 }
    110 function realsort( x, y ) {
    111  return ( x.valueOf() == y.valueOf() ? 0 : ( x.valueOf() > y.valueOf() ? 1 : -1 ) );
    112 }
    113 function comparefn3( x, y ) {
    114  return ( x == y ? 0 : ( x > y ? 1: -1 ) );
    115 }
    116 function clone( source, target ) {
    117  for (i = 0; i < source.length; i++ ) {
    118    target[i] = source[i];
    119  }
    120 }
    121 function stringsort( x, y ) {
    122  for ( var i = 0; i < x.toString().length; i++ ) {
    123    var d = (x.toString()).charCodeAt(i) - (y.toString()).charCodeAt(i);
    124    if ( d > 0 ) {
    125      return 1;
    126    } else {
    127      if ( d < 0 ) {
    128 return -1;
    129      } else {
    130 continue;
    131      }
    132    }
    133 
    134    var d = x.length - y.length;
    135 
    136    if  ( d > 0 ) {
    137      return 1;
    138    } else {
    139      if ( d < 0 ) {
    140 return -1;
    141      }
    142    }
    143  }
    144  return 0;
    145 }