// Copyright (C) 2015 André Bargull. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-%typedarray%.prototype.lastindexof
description: >
  %TypedArray%.prototype.lastIndexOf.length is 1.
info: |
  %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )

  17 ECMAScript Standard Built-in Objects:
    Every built-in Function object, including constructors, has a length
    property whose value is an integer. Unless otherwise specified, this
    value is equal to the largest number of named arguments shown in the
    subclause headings for the function description, including optional
    parameters. However, rest parameters shown using the form “...name”
    are not included in the default argument count.

    Unless otherwise specified, the length property of a built-in Function
    object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
    [[Configurable]]: true }.
includes: [propertyHelper.js, testTypedArray.js]
features: [TypedArray]
---*/

assert.sameValue(TypedArray.prototype.lastIndexOf.length, 1);

verifyNotEnumerable(TypedArray.prototype.lastIndexOf, "length");
verifyNotWritable(TypedArray.prototype.lastIndexOf, "length");
verifyConfigurable(TypedArray.prototype.lastIndexOf, "length");
