# 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

