# Copyright 2011 the V8 project authors. All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above
#       copyright notice, this list of conditions and the following
#       disclaimer in the documentation and/or other materials provided
#       with the distribution.
#     * Neither the name of Google Inc. nor the names of its
#       contributors may be used to endorse or promote products derived
#       from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

[
[ALWAYS, {
  ############################### BUGS ###################################

  '15.5.4.9_CE': [['no_i18n', SKIP]],

  # BUG(v8:3455)
  '11.2.3_b': [FAIL],
  '12.2.3_b': [FAIL],

  ###################### NEEDS INVESTIGATION #######################

  # Possibly same cause as S8.5_A2.1, below: floating-point tests.
  'S15.8.2.16_A7': [PASS, FAIL_OK],
  'S15.8.2.18_A7': [PASS, FAIL_OK],
  'S15.8.2.7_A7': [PASS, FAIL_OK],

  # This is an incompatibility between ES5 and V8 on enumerating
  # shadowed elements in a for..in loop.
  # https://code.google.com/p/v8/issues/detail?id=705
  '12.6.4-2': [PASS, FAIL_OK],

  ###################### MISSING ES6 FEATURES #######################

  # Array.from
  'S22.1.2.1_T1': [FAIL],
  'S22.1.2.1_T2': [FAIL],

  # Direct proxies
  'Array.prototype.find_callable-predicate': [FAIL],

  ######################## OBSOLETED BY ES6 ###########################

  # ES6 allows duplicate properties
  # TODO(arv): Reactivate when check removal has relanded.
  # '11.1.5-4-4-a-1-s': [FAIL],
  # '11.1.5_4-4-b-1': [FAIL],
  # '11.1.5_4-4-b-2': [FAIL],
  # '11.1.5_4-4-c-1': [FAIL],
  # '11.1.5_4-4-c-2': [FAIL],
  # '11.1.5_4-4-d-1': [FAIL],
  # '11.1.5_4-4-d-2': [FAIL],
  # '11.1.5_4-4-d-3': [FAIL],
  # '11.1.5_4-4-d-4': [FAIL],

  # ES6 allows block-local functions.
  'Sbp_A1_T1': [FAIL],
  'Sbp_A2_T1': [FAIL],
  'Sbp_A2_T2': [FAIL],
  'Sbp_A3_T1': [FAIL],
  'Sbp_A3_T2': [FAIL],
  'Sbp_A4_T1': [FAIL],
  'Sbp_A4_T2': [FAIL],
  'Sbp_A5_T1': [PASS], # Test is broken (strict reference to unbound variable)
  'Sbp_A5_T2': [FAIL],

  ######################## NEEDS INVESTIGATION ###########################

  # These test failures are specific to the intl402 suite and need investigation
  # to be either marked as bugs with issues filed for them or as deliberate
  # incompatibilities if the test cases turn out to be broken or ambiguous.
  '6.2.3': [FAIL],
  '9.2.1_2': [FAIL],
  '9.2.6_2': [FAIL],
  '10.1.1_a': [FAIL],
  '10.1.1_19_c': [PASS, FAIL, NO_VARIANTS],
  '10.1.2.1_4': [FAIL],
  '10.2.3_b': [PASS, FAIL],
  '10.3_a': [FAIL],
  '11.1.1_17': [PASS, FAIL],
  '11.1.1_19': [PASS, FAIL],
  '11.1.1_20_c': [FAIL],
  '11.1.1_a': [FAIL],
  '11.1.2.1_4': [FAIL],
  '11.3.2_FN_2': [PASS, FAIL],
  '11.3.2_TRF': [PASS, FAIL],
  '11.3_a': [FAIL],
  '12.1.1_a': [FAIL],
  '12.1.2.1_4': [FAIL],
  '12.3.2_FDT_7_a_iv': [FAIL],
  '12.3.3': [FAIL],
  '12.3_a': [FAIL],
  '15.5.4.9_3': [PASS, FAIL],

  ##################### DELIBERATE INCOMPATIBILITIES #####################

  'S15.8.2.8_A6': [PASS, FAIL_OK],  # Math.exp (less precise with --fast-math)

  # Linux for ia32 (and therefore simulators) default to extended 80 bit
  # floating point formats, so these tests checking 64-bit FP precision fail.
  # The other platforms/arch's pass these tests.
  # We follow the other major JS engines by keeping this default.
  'S8.5_A2.1': [PASS, FAIL_OK],
  'S8.5_A2.2': [PASS, FAIL_OK],

  ############################ INVALID TESTS #############################

  # The reference value calculated by Test262 is incorrect if you run these
  # tests in PST/PDT between first Sunday in March and first Sunday in April.
  # The DST switch was moved in 2007 whereas Test262 bases the reference value
  # on 2000. Test262 Bug: https://bugs.ecmascript.org/show_bug.cgi?id=293
  'S15.9.3.1_A5_T1': [PASS, FAIL_OK],
  'S15.9.3.1_A5_T2': [PASS, FAIL_OK],
  'S15.9.3.1_A5_T3': [PASS, FAIL_OK],
  'S15.9.3.1_A5_T4': [PASS, FAIL_OK],
  'S15.9.3.1_A5_T5': [PASS, FAIL_OK],
  'S15.9.3.1_A5_T6': [PASS, FAIL_OK],

  # Test makes unjustified assumptions about the number of calls to SortCompare.
  # Test262 Bug: https://bugs.ecmascript.org/show_bug.cgi?id=596
  'bug_596_1': [PASS, FAIL_OK],

  ############################ SKIPPED TESTS #############################

  # These tests take a looong time to run in debug mode.
  'S15.1.3.1_A2.5_T1': [PASS, ['mode == debug', SKIP]],
  'S15.1.3.2_A2.5_T1': [PASS, ['mode == debug', SKIP]],
}],  # ALWAYS

['system == macos', {
  '11.3.2_TRP': [FAIL],
  '9.2.5_11_g_ii_2': [FAIL],
}],  # system == macos

['arch == arm or arch == mipsel or arch == mips or arch == arm64 or arch == mips64el', {

  # TODO(mstarzinger): Causes stack overflow on simulators due to eager
  # compilation of parenthesized function literals. Needs investigation.
  'S13.2.1_A1_T1': [SKIP],

  # BUG(3251225): Tests that timeout with --nocrankshaft.
  'S15.1.3.1_A2.4_T1': [SKIP],
  'S15.1.3.1_A2.5_T1': [SKIP],
  'S15.1.3.2_A2.4_T1': [SKIP],
  'S15.1.3.2_A2.5_T1': [SKIP],
  'S15.1.3.3_A2.3_T1': [SKIP],
  'S15.1.3.4_A2.3_T1': [SKIP],
}],  # 'arch == arm or arch == mipsel or arch == mips or arch == arm64'
]