# Copyright (C) 2017 Caio Lima <ticaiolima@gmail.com>.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. 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.
#
# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS 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 APPLE INC. OR ITS 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.

# Provided to simplify running BigInt tests. To be removed once BigInt
# are no longer behind a feature flag.

---
- path: stress/big-int-literals.js
  cmd: runBigIntEnabled

- path: stress/big-int-type-of.js
  cmd: runBigIntEnabled

- path: stress/big-int-literal-line-terminator.js
  cmd: runBigIntEnabled

- path: stress/big-int-operations-error.js
  cmd: runBigIntEnabled

- path: stress/big-int-white-space-trailing-leading.js
  cmd: runBigIntEnabled

- path: stress/big-int-function-apply.js
  cmd: runBigIntEnabled

- path: stress/big-int-as-key.js
  cmd: runBigIntEnabled

- path: stress/big-int-constructor-gc.js
  cmd: runBigIntEnabled

- path: stress/big-int-constructor-oom.js
  cmd: runBigIntEnabled

- path: stress/big-int-constructor-properties.js
  cmd: runBigIntEnabled

- path: stress/big-int-constructor-prototype-prop-descriptor.js
  cmd: runBigIntEnabled

- path: stress/big-int-constructor-prototype.js
  cmd: runBigIntEnabled

- path: stress/big-int-constructor.js
  cmd: runBigIntEnabled

- path: stress/big-int-length.js
  cmd: runBigIntEnabled

- path: stress/big-int-prop-descriptor.js
  cmd: runBigIntEnabled

- path: stress/big-int-proto-constructor.js
  cmd: runBigIntEnabled

- path: stress/big-int-proto-name.js
  cmd: runBigIntEnabled

- path: stress/big-int-prototype-properties.js
  cmd: runBigIntEnabled

- path: stress/big-int-prototype-proto.js
  cmd: runBigIntEnabled

- path: stress/big-int-prototype-symbol-to-string-tag.js
  cmd: runBigIntEnabled

- path: stress/big-int-prototype-to-string-apply.js
  cmd: runBigIntEnabled

- path: stress/big-int-to-object.js
  cmd: runBigIntEnabled

- path: stress/big-int-prototype-value-of.js
  cmd: runBigIntEnabled

- path: stress/big-int-to-string.js
  cmd: runBigIntEnabled

- path: stress/big-int-mul-jit.js
  cmd: runBigIntEnabled

- path: stress/big-int-mul-to-primitive-precedence.js
  cmd: runBigIntEnabled

- path: stress/big-int-mul-to-primitive.js
  cmd: runBigIntEnabled

- path: stress/big-int-mul-type-error.js
  cmd: runBigIntEnabled

- path: stress/big-int-mul-wrapped-value.js
  cmd: runBigIntEnabled

- path: stress/big-int-multiplication.js
  cmd: runBigIntEnabled

- path: stress/big-int-multiply-memory-stress.js
  cmd: runBigIntEnabled

- path: stress/big-int-div-jit.js
  cmd: runBigIntEnabled

- path: stress/big-int-div-memory-stress.js
  cmd: runBigIntEnabled

- path: stress/big-int-div-to-primitive.js
  cmd: runBigIntEnabled

- path: stress/big-int-div-type-error.js
  cmd: runBigIntEnabled

- path: stress/big-int-div-wrapped-value.js
  cmd: runBigIntEnabled

- path: stress/big-int-division.js
  cmd: runBigIntEnabled

- path: stress/big-int-no-conversion-to-number.js
  cmd: runBigIntEnabled

- path: stress/big-int-greater-than-or-equal-general.js
  cmd: runBigIntEnabled

- path: stress/big-int-greater-than-or-equal-jit.js
  cmd: runBigIntEnabled

- path: stress/big-int-greater-than-or-equal-order-of-evaluation.js
  cmd: runBigIntEnabled

- path: stress/big-int-greater-than-or-equal-wrapped-values.js
  cmd: runBigIntEnabled

- path: stress/big-int-less-than-or-equal-jit.js
  cmd: runBigIntEnabled

- path: stress/big-int-less-than-or-equal-order-of-evaluation.js
  cmd: runBigIntEnabled

- path: stress/big-int-less-than-or-equal-wrapped-values.js
  cmd: runBigIntEnabled

- path: stress/big-int-less-than-or-equal-general.js
  cmd: runBigIntEnabled

- path: stress/big-int-mod-memory-stress.js
  cmd: runBigIntEnabled

- path: stress/big-int-mod-to-primitive-precedence.js
  cmd: runBigIntEnabled

- path: stress/big-int-mod-to-primitive.js
  cmd: runBigIntEnabled

- path: stress/big-int-mod-type-error.js
  cmd: runBigIntEnabled

- path: stress/big-int-mod-wrapped-value.js
  cmd: runBigIntEnabled

- path: stress/big-int-mod.js
  cmd: runBigIntEnabled

- path: stress/big-int-div-to-primitive-precedence.js
  cmd: runBigIntEnabled

- path: stress/big-int-mod-jit.js
  cmd: runBigIntEnabled

- path: stress/big-int-add-wrapped-value.js
  cmd: runBigIntEnabled

- path: stress/big-int-addition-basic.js
  cmd: runBigIntEnabled

- path: stress/big-int-addition-jit.js
  cmd: runBigIntEnabled

- path: stress/big-int-addition-memory-stress.js
  cmd: runBigIntEnabled

- path: stress/big-int-addition-string-coercion.js
  cmd: runBigIntEnabled

- path: stress/big-int-addition-to-primitive-precedence.js
  cmd: runBigIntEnabled

- path: stress/big-int-addition-to-primitive.js
  cmd: runBigIntEnabled

- path: stress/big-int-addition-type-error.js
  cmd: runBigIntEnabled

- path: stress/big-int-sub-wrapped-value.js
  cmd: runBigIntEnabled

- path:stress/big-int-subtraction-basic.js
  cmd: runBigIntEnabled

- path: stress/big-int-subtraction-jit.js
  cmd: runBigIntEnabled

- path: stress/big-int-subtraction-type-error.js
  cmd: runBigIntEnabled
