From 1ba3a7c4a93fc93b3d0d7e4146f59934a896837d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Bargull?= <andre.bargull@gmail.com>
Date: Fri, 14 Apr 2017 18:22:27 +0200
Subject: [PATCH] Remove unused functionality from harness (#975)

---
 harness/Date_constants.js     |  72 ------
 harness/Date_library.js       | 439 ----------------------------------
 harness/cth.js                |  36 ---
 harness/framework.js          |  79 ------
 harness/numeric_conversion.js |  21 --
 harness/sta.js                |   4 -
 6 files changed, 651 deletions(-)
 delete mode 100644 harness/Date_library.js
 delete mode 100644 harness/cth.js
 delete mode 100644 harness/framework.js
 delete mode 100644 harness/numeric_conversion.js

diff --git a/harness/Date_constants.js b/harness/Date_constants.js
index 66589c4cb3..11ce5c7e4c 100644
--- a/harness/Date_constants.js
+++ b/harness/Date_constants.js
@@ -2,15 +2,6 @@
 // Copyright 2009 the Sputnik authors.  All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 
-var HoursPerDay = 24;
-var MinutesPerHour = 60;
-var SecondsPerMinute = 60;
-
-var msPerDay = 86400000;
-var msPerSecond = 1000;
-var msPerMinute = 60000;
-var msPerHour = 3600000;
-
 var date_1899_end = -2208988800001;
 var date_1900_start = -2208988800000;
 var date_1969_end = -1;
@@ -19,66 +10,3 @@ var date_1999_end = 946684799999;
 var date_2000_start = 946684800000;
 var date_2099_end = 4102444799999;
 var date_2100_start = 4102444800000;
-
-// Copyright 2009 the Sputnik authors.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-//the following values are normally generated by the sputnik.py driver
-var $LocalTZ,
-    $DST_start_month,
-    $DST_start_sunday,
-    $DST_start_hour,
-    $DST_start_minutes,
-    $DST_end_month,
-    $DST_end_sunday,
-    $DST_end_hour,
-    $DST_end_minutes;
-
-(function () {
-  /**
-    * Finds the first date, starting from |start|, where |predicate|
-    * holds.
-    */
-  var findNearestDateBefore = function(start, predicate) {
-    var current = start;
-    var month = 1000 * 60 * 60 * 24 * 30;
-    for (var step = month; step > 0; step = Math.floor(step / 3)) {
-      if (!predicate(current)) {
-        while (!predicate(current)) {
-          current = new Date(current.getTime() + step);
-          current = new Date(current.getTime() - step);
-        }
-      }
-    }
-    while (!predicate(current)) {
-      current = new Date(current.getTime() + 1);
-    }
-    return current;
-  };
-
-  var juneDate = new Date(2000, 5, 20, 0, 0, 0, 0);
-  var decemberDate = new Date(2000, 11, 20, 0, 0, 0, 0);
-  var juneOffset = juneDate.getTimezoneOffset();
-  var decemberOffset = decemberDate.getTimezoneOffset();
-  var isSouthernHemisphere = (juneOffset > decemberOffset);
-  var winterTime = isSouthernHemisphere ? juneDate : decemberDate;
-  var summerTime = isSouthernHemisphere ? decemberDate : juneDate;
-
-  var dstStart = findNearestDateBefore(winterTime, function (date) {
-    return date.getTimezoneOffset() == summerTime.getTimezoneOffset();
-  });
-  $DST_start_month = dstStart.getMonth();
-  $DST_start_sunday = dstStart.getDate() > 15 ? '"last"' : '"first"';
-  $DST_start_hour = dstStart.getHours();
-  $DST_start_minutes = dstStart.getMinutes();
-
-  var dstEnd = findNearestDateBefore(summerTime, function (date) {
-    return date.getTimezoneOffset() == winterTime.getTimezoneOffset();
-  });
-  $DST_end_month = dstEnd.getMonth();
-  $DST_end_sunday = dstEnd.getDate() > 15 ? '"last"' : '"first"';
-  $DST_end_hour = dstEnd.getHours();
-  $DST_end_minutes = dstEnd.getMinutes();
-
-  return;
-})();
diff --git a/harness/Date_library.js b/harness/Date_library.js
deleted file mode 100644
index a971ebb2ee..0000000000
--- a/harness/Date_library.js
+++ /dev/null
@@ -1,439 +0,0 @@
-//Date.library.js
-// Copyright 2009 the Sputnik authors.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-//15.9.1.2 Day Number and Time within Day
-function Day(t) {
-  return Math.floor(t/msPerDay);
-}
-
-function TimeWithinDay(t) {
-  return t%msPerDay;
-}
-
-//15.9.1.3 Year Number
-function DaysInYear(y){
-  if(y%4 != 0) return 365;
-  if(y%4 == 0 && y%100 != 0) return 366;
-  if(y%100 == 0 && y%400 != 0) return 365;
-  if(y%400 == 0) return 366;
-}
-
-function DayFromYear(y) {
-  return (365*(y-1970)
-          + Math.floor((y-1969)/4)
-          - Math.floor((y-1901)/100)
-          + Math.floor((y-1601)/400));
-}
-
-function TimeFromYear(y){
-  return msPerDay*DayFromYear(y);
-}
-
-function YearFromTime(t) {
-  t = Number(t);
-  var sign = ( t < 0 ) ? -1 : 1;
-  var year = ( sign < 0 ) ? 1969 : 1970;
-
-  for(var time = 0;;year += sign){
-    time = TimeFromYear(year);
-
-    if(sign > 0 && time > t){
-      year -= sign;
-      break;
-    }
-    else if(sign < 0 && time <= t){
-      break;
-    }
-  };
-  return year;
-}
-
-function InLeapYear(t){
-  if(DaysInYear(YearFromTime(t)) == 365)
-    return 0;
-
-  if(DaysInYear(YearFromTime(t)) == 366)
-    return 1;
-}
-
-function DayWithinYear(t) {
-  return Day(t)-DayFromYear(YearFromTime(t));
-}
-
-//15.9.1.4 Month Number
-function MonthFromTime(t){
-  var day = DayWithinYear(t);
-  var leap = InLeapYear(t);
-
-  if((0 <= day) && (day < 31)) return 0;
-  if((31 <= day) && (day < (59+leap))) return 1;
-  if(((59+leap) <= day) && (day < (90+leap))) return 2;
-  if(((90+leap) <= day) && (day < (120+leap))) return 3;
-  if(((120+leap) <= day) && (day < (151+leap))) return 4;
-  if(((151+leap) <= day) && (day < (181+leap))) return 5;
-  if(((181+leap) <= day) && (day < (212+leap))) return 6;
-  if(((212+leap) <= day) && (day < (243+leap))) return 7;
-  if(((243+leap) <= day) && (day < (273+leap))) return 8;
-  if(((273+leap) <= day) && (day < (304+leap))) return 9;
-  if(((304+leap) <= day) && (day < (334+leap))) return 10;
-  if(((334+leap) <= day) && (day < (365+leap))) return 11;
-}
-
-//15.9.1.5 Date Number
-function DateFromTime(t) {
-  var day = DayWithinYear(t);
-  var month = MonthFromTime(t);
-  var leap = InLeapYear(t);
-
-  if(month == 0) return day+1;
-  if(month == 1) return day-30;
-  if(month == 2) return day-58-leap;
-  if(month == 3) return day-89-leap;
-  if(month == 4) return day-119-leap;
-  if(month == 5) return day-150-leap;
-  if(month == 6) return day-180-leap;
-  if(month == 7) return day-211-leap;
-  if(month == 8) return day-242-leap;
-  if(month == 9) return day-272-leap;
-  if(month == 10) return day-303-leap;
-  if(month == 11) return day-333-leap;
-}
-
-//15.9.1.6 Week Day
-function WeekDay(t) {
-  var weekday = (Day(t)+4)%7;
-  return (weekday < 0 ? 7+weekday : weekday);
-}
-
-//15.9.1.9 Daylight Saving Time Adjustment
-$LocalTZ = (new Date()).getTimezoneOffset() / -60;
-if (DaylightSavingTA((new Date()).valueOf()) !== 0) {
-   $LocalTZ -= 1;
-}
-var LocalTZA = $LocalTZ*msPerHour;
-
-function DaysInMonth(m, leap) {
-  m = m%12;
-
-  //April, June, Sept, Nov
-  if(m == 3 || m == 5 || m == 8 || m == 10 ) {
-    return 30;
-  }
-
-  //Jan, March, May, July, Aug, Oct, Dec
-  if(m == 0 || m == 2 || m == 4 || m == 6 || m == 7 || m == 9 || m == 11){
-    return 31;
-  }
-
-  //Feb
-  return 28+leap;
-}
-
-function GetSundayInMonth(t, m, count){
-    var year = YearFromTime(t);
-    var tempDate;
-
-    if (count==='"first"') {
-        for (var d=1; d <= DaysInMonth(m, InLeapYear(t)); d++) {
-            tempDate = new Date(year, m, d);
-            if (tempDate.getDay()===0) {
-                return tempDate.valueOf();
-            }
-        }
-    } else if(count==='"last"') {
-        for (var d=DaysInMonth(m, InLeapYear(t)); d>0; d--) {
-            tempDate = new Date(year, m, d);
-            if (tempDate.getDay()===0) {
-                return tempDate.valueOf();
-            }
-        }
-    }
-    throw new Error("Unsupported 'count' arg:" + count);
-}
-/*
-function GetSundayInMonth(t, m, count){
-  var year = YearFromTime(t);
-  var leap = InLeapYear(t);
-  var day = 0;
-
-  if(m >= 1) day += DaysInMonth(0, leap);
-  if(m >= 2) day += DaysInMonth(1, leap);
-  if(m >= 3) day += DaysInMonth(2, leap);
-  if(m >= 4) day += DaysInMonth(3, leap);
-  if(m >= 5) day += DaysInMonth(4, leap);
-  if(m >= 6) day += DaysInMonth(5, leap);
-  if(m >= 7) day += DaysInMonth(6, leap);
-  if(m >= 8) day += DaysInMonth(7, leap);
-  if(m >= 9) day += DaysInMonth(8, leap);
-  if(m >= 10) day += DaysInMonth(9, leap);
-  if(m >= 11) day += DaysInMonth(10, leap);
-
-  var month_start = TimeFromYear(year)+day*msPerDay;
-  var sunday = 0;
-
-  if(count === "last"){
-    for(var last_sunday = month_start+DaysInMonth(m, leap)*msPerDay;
-      WeekDay(last_sunday)>0;
-      last_sunday -= msPerDay
-    ){};
-    sunday = last_sunday;
-  }
-  else {
-    for(var first_sunday = month_start;
-      WeekDay(first_sunday)>0;
-      first_sunday += msPerDay
-    ){};
-    sunday = first_sunday+7*msPerDay*(count-1);
-  }
-
-  return sunday;
-}*/
-
-function DaylightSavingTA(t) {
-//  t = t-LocalTZA;
-
-  var DST_start = GetSundayInMonth(t, $DST_start_month, $DST_start_sunday) +
-                  $DST_start_hour*msPerHour +
-                  $DST_start_minutes*msPerMinute;
-
-  var k = new Date(DST_start);
-
-  var DST_end   = GetSundayInMonth(t, $DST_end_month, $DST_end_sunday) +
-                  $DST_end_hour*msPerHour +
-                  $DST_end_minutes*msPerMinute;
-
-  if ( t >= DST_start && t < DST_end ) {
-    return msPerHour;
-  } else {
-    return 0;
-  }
-}
-
-//15.9.1.9 Local Time
-function LocalTime(t){
-  return t+LocalTZA+DaylightSavingTA(t);
-}
-
-function UTC(t) {
-  return t-LocalTZA-DaylightSavingTA(t-LocalTZA);
-}
-
-//15.9.1.10 Hours, Minutes, Second, and Milliseconds
-function HourFromTime(t){
-  return Math.floor(t/msPerHour)%HoursPerDay;
-}
-
-function MinFromTime(t){
-  return Math.floor(t/msPerMinute)%MinutesPerHour;
-}
-
-function SecFromTime(t){
-  return Math.floor(t/msPerSecond)%SecondsPerMinute;
-}
-
-function msFromTime(t){
-  return t%msPerSecond;
-}
-
-//15.9.1.11 MakeTime (hour, min, sec, ms)
-function MakeTime(hour, min, sec, ms){
-  if ( !isFinite(hour) || !isFinite(min) || !isFinite(sec) || !isFinite(ms)) {
-    return Number.NaN;
-  }
-
-  hour = ToInteger(hour);
-  min  = ToInteger(min);
-  sec  = ToInteger(sec);
-  ms   = ToInteger(ms);
-
-  return ((hour*msPerHour) + (min*msPerMinute) + (sec*msPerSecond) + ms);
-}
-
-//15.9.1.12 MakeDay (year, month, date)
-function MakeDay(year, month, date) {
-  if ( !isFinite(year) || !isFinite(month) || !isFinite(date)) {
-    return Number.NaN;
-  }
-
-  year = ToInteger(year);
-  month = ToInteger(month);
-  date = ToInteger(date );
-
-  var result5 = year + Math.floor(month/12);
-  var result6 = month%12;
-
-  var sign = ( year < 1970 ) ? -1 : 1;
-  var t =    ( year < 1970 ) ? 1 :  0;
-  var y =    ( year < 1970 ) ? 1969 : 1970;
-
-  if( sign == -1 ){
-    for ( y = 1969; y >= year; y += sign ) {
-      t += sign * DaysInYear(y)*msPerDay;
-    }
-  } else {
-    for ( y = 1970 ; y < year; y += sign ) {
-      t += sign * DaysInYear(y)*msPerDay;
-    }
-  }
-
-  var leap = 0;
-  for ( var m = 0; m < month; m++ ) {
-    //if year is changed, than we need to recalculate leep
-    leap = InLeapYear(t);
-    t += DaysInMonth(m, leap)*msPerDay;
-  }
-
-  if ( YearFromTime(t) != result5 ) {
-    return Number.NaN;
-  }
-  if ( MonthFromTime(t) != result6 ) {
-    return Number.NaN;
-  }
-  if ( DateFromTime(t) != 1 ) {
-    return Number.NaN;
-  }
-
-  return Day(t)+date-1;
-}
-
-//15.9.1.13 MakeDate (day, time)
-function MakeDate( day, time ) {
-  if(!isFinite(day) || !isFinite(time)) {
-    return Number.NaN;
-  }
-
-  return day*msPerDay+time;
-}
-
-//15.9.1.14 TimeClip (time)
-function TimeClip(time) {
-  if(!isFinite(time) || Math.abs(time) > 8.64e15){
-    return Number.NaN;
-  }
-
-  return ToInteger(time);
-}
-
-//Test Functions
-//ConstructDate is considered deprecated, and should not be used directly from
-//test262 tests as it's incredibly sensitive to DST start/end dates that 
-//vary with geographic location.
-function ConstructDate(year, month, date, hours, minutes, seconds, ms){
-  /*
-   * 1. Call ToNumber(year)
-   * 2. Call ToNumber(month)
-   * 3. If date is supplied use ToNumber(date); else use 1
-   * 4. If hours is supplied use ToNumber(hours); else use 0
-   * 5. If minutes is supplied use ToNumber(minutes); else use 0
-   * 6. If seconds is supplied use ToNumber(seconds); else use 0
-   * 7. If ms is supplied use ToNumber(ms); else use 0
-   * 8. If Result(1) is not NaN and 0 <= ToInteger(Result(1)) <= 99, Result(8) is
-   * 1900+ToInteger(Result(1)); otherwise, Result(8) is Result(1)
-   * 9. Compute MakeDay(Result(8), Result(2), Result(3))
-   * 10. Compute MakeTime(Result(4), Result(5), Result(6), Result(7))
-   * 11. Compute MakeDate(Result(9), Result(10))
-   * 12. Set the [[Value]] property of the newly constructed object to TimeClip(UTC(Result(11)))
-   */
-  var r1 = Number(year);
-  var r2 = Number(month);
-  var r3 = ((date && arguments.length > 2) ? Number(date) : 1);
-  var r4 = ((hours && arguments.length > 3) ? Number(hours) : 0);
-  var r5 = ((minutes && arguments.length > 4) ? Number(minutes) : 0);
-  var r6 = ((seconds && arguments.length > 5) ? Number(seconds) : 0);
-  var r7 = ((ms && arguments.length > 6) ? Number(ms) : 0);
-
-  var r8 = r1;
-
-  if(!isNaN(r1) && (0 <= ToInteger(r1)) && (ToInteger(r1) <= 99))
-    r8 = 1900+r1;
-
-  var r9 = MakeDay(r8, r2, r3);
-  var r10 = MakeTime(r4, r5, r6, r7);
-  var r11 = MakeDate(r9, r10);
-
-  var retVal = TimeClip(UTC(r11));
-  return retVal;
-}
-
-
-
-/**** Python code for initialize the above constants
-// We may want to replicate the following in JavaScript.
-// However, using JS date operations to generate parameters that are then used to
-// test those some date operations seems unsound.  However, it isn't clear if there
-//is a good interoperable alternative.
-
-# Copyright 2009 the Sputnik authors.  All rights reserved.
-# This code is governed by the BSD license found in the LICENSE file.
-
-def GetDaylightSavingsTimes():
-# Is the given floating-point time in DST?
-def IsDst(t):
-return time.localtime(t)[-1]
-# Binary search to find an interval between the two times no greater than
-# delta where DST switches, returning the midpoint.
-def FindBetween(start, end, delta):
-while end - start > delta:
-middle = (end + start) / 2
-if IsDst(middle) == IsDst(start):
-start = middle
-else:
-end = middle
-return (start + end) / 2
-now = time.time()
-one_month = (30 * 24 * 60 * 60)
-# First find a date with different daylight savings.  To avoid corner cases
-# we try four months before and after today.
-after = now + 4 * one_month
-before = now - 4 * one_month
-if IsDst(now) == IsDst(before) and IsDst(now) == IsDst(after):
-logger.warning("Was unable to determine DST info.")
-return None
-# Determine when the change occurs between now and the date we just found
-# in a different DST.
-if IsDst(now) != IsDst(before):
-first = FindBetween(before, now, 1)
-else:
-first = FindBetween(now, after, 1)
-# Determine when the change occurs between three and nine months from the
-# first.
-second = FindBetween(first + 3 * one_month, first + 9 * one_month, 1)
-# Find out which switch is into and which if out of DST
-if IsDst(first - 1) and not IsDst(first + 1):
-start = second
-end = first
-else:
-start = first
-end = second
-return (start, end)
-
-
-def GetDaylightSavingsAttribs():
-times = GetDaylightSavingsTimes()
-if not times:
-return None
-(start, end) = times
-def DstMonth(t):
-return time.localtime(t)[1] - 1
-def DstHour(t):
-return time.localtime(t - 1)[3] + 1
-def DstSunday(t):
-if time.localtime(t)[2] > 15:
-return "'last'"
-else:
-return "'first'"
-def DstMinutes(t):
-return (time.localtime(t - 1)[4] + 1) % 60
-attribs = { }
-attribs['start_month'] = DstMonth(start)
-attribs['end_month'] = DstMonth(end)
-attribs['start_sunday'] = DstSunday(start)
-attribs['end_sunday'] = DstSunday(end)
-attribs['start_hour'] = DstHour(start)
-attribs['end_hour'] = DstHour(end)
-attribs['start_minutes'] = DstMinutes(start)
-attribs['end_minutes'] = DstMinutes(end)
-return attribs
-
-*********/
diff --git a/harness/cth.js b/harness/cth.js
deleted file mode 100644
index e478554d71..0000000000
--- a/harness/cth.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/// Copyright (c) 2012 Ecma International.  All rights reserved.
-/// This code is governed by the BSD license found in the LICENSE file.
-
-function testRun(id, path, description, codeString, result, error) {
-  if (result!=="pass") {
-      throw new Error("Test '" + path + "'failed: " + error);
-  }
-}
-
-// define a default `print` function for async tests where there is no
-// global `print`
-var print;
-
-// in node use console.log
-if (typeof console === "object") {
-  print = function () {
-    var args = Array.prototype.slice.call(arguments);
-    console.log(args.join(" "));
-  };
-}
-
-// in WScript, use WScript.Echo
-if (typeof WScript === "object") {
-  print = function () {
-    var args = Array.prototype.slice.call(arguments);
-    WScript.Echo(args.join(" "));
-  };
-
-  // also override $ERROR to force a nonzero exit code exit
-  // TODO? report syntax errors
-  var oldError = $ERROR;
-  $ERROR = function (message) {
-    print("Test262 Error: " + message);
-    WScript.Quit(1);
-  };
-}
diff --git a/harness/framework.js b/harness/framework.js
deleted file mode 100644
index 04164e18ce..0000000000
--- a/harness/framework.js
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2009 the Sputnik authors.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-function Test262Error(message) {
-  this.message = message;
-}
-
-Test262Error.prototype.toString = function () {
-  return "Test262 Error: " + this.message;
-};
-
-function testFailed(message) {
-  throw new Test262Error(message);
-}
-
-function testPrint(message) {
-
-}
-
-/**
- * It is not yet clear that runTestCase should pass the global object
- * as the 'this' binding in the call to testcase.
- */
-var runTestCase = (function(global) {
-  return function(testcase) {
-    if (!testcase.call(global)) {
-      testFailed('test function returned falsy');
-    }
-  };
-})(this);
-
-function assertTruthy(value) {
-  if (!value) {
-    testFailed('test return falsy');
-  }
-}
-
-
-/**
- * falsy means we expect no error.
- * truthy means we expect some error.
- * A non-empty string means we expect an error whose .name is that string.
- */
-var expectedErrorName = false;
-
-/**
- * What was thrown, or the string 'Falsy' if something falsy was thrown.
- * null if test completed normally.
- */
-var actualError = null;
-
-function testStarted(expectedErrName) {
-  expectedErrorName = expectedErrName;
-}
-
-function testFinished() {
-  var actualErrorName = actualError && (actualError.name ||
-                                        'SomethingThrown');
-  if (actualErrorName) {
-    if (expectedErrorName) {
-      if (typeof expectedErrorName === 'string') {
-        if (expectedErrorName === actualErrorName) {
-          return;
-        }
-        testFailed('Threw ' + actualErrorName +
-                   ' instead of ' + expectedErrorName);
-      }
-      return;
-    }
-    throw actualError;
-  }
-  if (expectedErrorName) {
-    if (typeof expectedErrorName === 'string') {
-      testFailed('Completed instead of throwing ' +
-                 expectedErrorName);
-    }
-    testFailed('Completed instead of throwing');
-  }
-}
diff --git a/harness/numeric_conversion.js b/harness/numeric_conversion.js
deleted file mode 100644
index 427eeaa21e..0000000000
--- a/harness/numeric_conversion.js
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2009 the Sputnik authors.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-function ToInteger(p) {
-  x = Number(p);
-
-  if(isNaN(x)){
-    return +0;
-  }
-  
-  if((x === +0) 
-  || (x === -0) 
-  || (x === Number.POSITIVE_INFINITY) 
-  || (x === Number.NEGATIVE_INFINITY)){
-     return x;
-  }
-
-  var sign = ( x < 0 ) ? -1 : 1;
-
-  return (sign*Math.floor(Math.abs(x)));
-}
diff --git a/harness/sta.js b/harness/sta.js
index d3254f8e97..39fc5b98b6 100644
--- a/harness/sta.js
+++ b/harness/sta.js
@@ -13,7 +13,3 @@ var $ERROR;
 $ERROR = function $ERROR(message) {
   throw new Test262Error(message);
 };
-
-function testFailed(message) {
-  $ERROR(message);
-}
-- 
GitLab