diff --git a/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/README.md b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/README.md
new file mode 100644
index 000000000000..d604d3b49ce8
--- /dev/null
+++ b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/README.md
@@ -0,0 +1,129 @@
+
+
+# ToPrimitive Symbol Support
+
+> Detect native [`Symbol.toPrimitive`][mdn-to-primitive-symbol] support.
+
+
+
+## Usage
+
+
+
+```javascript
+var hasToPrimitiveSymbolSupport = require( '@stdlib/assert/has-to-primitive-symbol-support' );
+```
+
+#### hasToPrimitiveSymbolSupport()
+
+Detects if a runtime environment supports [`Symbol.toPrimitive`][mdn-to-primitive-symbol].
+
+
+
+```javascript
+var bool = hasToPrimitiveSymbolSupport();
+// returns
+```
+
+
+
+
+
+
+
+## Examples
+
+
+
+
+
+```javascript
+var hasToPrimitiveSymbolSupport = require( '@stdlib/assert/has-to-primitive-symbol-support' );
+
+var bool = hasToPrimitiveSymbolSupport();
+if ( bool ) {
+ console.log( 'Environment has Symbol.toPrimitive support.' );
+} else {
+ console.log( 'Environment lacks Symbol.toPrimitive support.' );
+}
+```
+
+
+
+
+
+* * *
+
+
+
+## CLI
+
+
+
+### Usage
+
+```text
+Usage: has-to-primitive-symbol-support [options]
+
+Options:
+
+ -h, --help Print this message.
+ -V, --version Print the package version.
+```
+
+
+
+
+
+
+
+### Examples
+
+```bash
+$ has-to-primitive-symbol-support
+
+```
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[mdn-to-primitive-symbol]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive
+
+
+
+
diff --git a/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/benchmark/benchmark.js
new file mode 100644
index 000000000000..8984ce271ad7
--- /dev/null
+++ b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/benchmark/benchmark.js
@@ -0,0 +1,49 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2025 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive;
+var pkg = require( './../package.json' ).name;
+var hasToPrimitiveSymbolSupport = require( './../lib' ); // eslint-disable-line id-length
+
+
+// MAIN //
+
+bench( pkg, function benchmark( b ) {
+ var bool;
+ var i;
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ // Note: the following *could* be optimized away via loop-invariant code motion. If so, the entire loop will disappear.
+ bool = hasToPrimitiveSymbolSupport();
+ if ( typeof bool !== 'boolean' ) {
+ b.fail( 'should return a boolean' );
+ }
+ }
+ b.toc();
+ if ( !isBoolean( bool ) ) {
+ b.fail( 'should return a boolean' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+});
diff --git a/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/bin/cli b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/bin/cli
new file mode 100644
index 000000000000..8520ae55bf89
--- /dev/null
+++ b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/bin/cli
@@ -0,0 +1,60 @@
+#!/usr/bin/env node
+
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2025 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var resolve = require( 'path' ).resolve;
+var readFileSync = require( '@stdlib/fs/read-file' ).sync;
+var CLI = require( '@stdlib/cli/ctor' );
+var detect = require( './../lib' );
+
+
+// MAIN //
+
+/**
+* Main execution sequence.
+*
+* @private
+*/
+function main() {
+ var flags;
+ var cli;
+
+ // Create a command-line interface:
+ cli = new CLI({
+ 'pkg': require( './../package.json' ),
+ 'options': require( './../etc/cli_opts.json' ),
+ 'help': readFileSync( resolve( __dirname, '..', 'docs', 'usage.txt' ), {
+ 'encoding': 'utf8'
+ })
+ });
+
+ // Get any provided command-line options:
+ flags = cli.flags();
+ if ( flags.help || flags.version ) {
+ return;
+ }
+
+ console.log( detect() ); // eslint-disable-line no-console
+}
+
+main();
diff --git a/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/docs/repl.txt b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/docs/repl.txt
new file mode 100644
index 000000000000..84db68c07c05
--- /dev/null
+++ b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/docs/repl.txt
@@ -0,0 +1,18 @@
+
+{{alias}}()
+ Tests for native `Symbol.toPrimitive` support.
+
+ Returns
+ -------
+ bool: boolean
+ Boolean indicating if an environment has native `Symbol.toPrimitive`
+ support.
+
+ Examples
+ --------
+ > var bool = {{alias}}()
+
+
+ See Also
+ --------
+
diff --git a/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/docs/types/index.d.ts b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/docs/types/index.d.ts
new file mode 100644
index 000000000000..dff87b2f933f
--- /dev/null
+++ b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/docs/types/index.d.ts
@@ -0,0 +1,35 @@
+/*
+* @license Apache-2.0
+*
+* Copyright (c) 2025 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+// TypeScript Version: 4.1
+
+/**
+* Tests for native `Symbol.toPrimitive` support.
+*
+* @returns boolean indicating if an environment has `Symbol.toPrimitive` support
+*
+* @example
+* var bool = hasToPrimitiveSymbolSupport();
+* // returns
+*/
+declare function hasToPrimitiveSymbolSupport(): boolean;
+
+
+// EXPORTS //
+
+export = hasToPrimitiveSymbolSupport;
diff --git a/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/docs/types/test.ts b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/docs/types/test.ts
new file mode 100644
index 000000000000..94d6daec9b36
--- /dev/null
+++ b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/docs/types/test.ts
@@ -0,0 +1,33 @@
+/*
+* @license Apache-2.0
+*
+* Copyright (c) 2025 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+import hasToPrimitiveSymbolSupport = require( './index' );
+
+
+// TESTS //
+
+// The function returns a boolean...
+{
+ hasToPrimitiveSymbolSupport(); // $ExpectType boolean
+}
+
+// The compiler throws an error if the function is provided arguments...
+{
+ hasToPrimitiveSymbolSupport( true ); // $ExpectError
+ hasToPrimitiveSymbolSupport( [], 123 ); // $ExpectError
+}
diff --git a/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/docs/usage.txt b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/docs/usage.txt
new file mode 100644
index 000000000000..452f771af560
--- /dev/null
+++ b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/docs/usage.txt
@@ -0,0 +1,8 @@
+
+Usage: has-to-primitive-symbol-support [options]
+
+Options:
+
+ -h, --help Print this message.
+ -V, --version Print the package version.
+
diff --git a/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/etc/cli_opts.json b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/etc/cli_opts.json
new file mode 100644
index 000000000000..f245a17e6317
--- /dev/null
+++ b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/etc/cli_opts.json
@@ -0,0 +1,14 @@
+{
+ "boolean": [
+ "help",
+ "version"
+ ],
+ "alias": {
+ "help": [
+ "h"
+ ],
+ "version": [
+ "V"
+ ]
+ }
+}
diff --git a/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/examples/index.js b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/examples/index.js
new file mode 100644
index 000000000000..9cc1f485c477
--- /dev/null
+++ b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/examples/index.js
@@ -0,0 +1,28 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2025 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+var hasToPrimitiveSymbolSupport = require( './../lib' ); // eslint-disable-line id-length
+
+var bool = hasToPrimitiveSymbolSupport();
+if ( bool ) {
+ console.log( 'Environment has Symbol.toPrimitive support.' );
+} else {
+ console.log( 'Environment lacks Symbol.toPrimitive support.' );
+}
diff --git a/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/lib/index.js b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/lib/index.js
new file mode 100644
index 000000000000..a43f6428c71a
--- /dev/null
+++ b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/lib/index.js
@@ -0,0 +1,40 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2025 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+/**
+* Test for native `Symbol.toPrimitive` support.
+*
+* @module @stdlib/assert/has-to-primitive-symbol-support
+*
+* @example
+* var hasToPrimitiveSymbolSupport = require( '@stdlib/assert/has-to-primitive-symbol-support' );
+*
+* var bool = hasToPrimitiveSymbolSupport();
+* // returns
+*/
+
+// MODULES //
+
+var main = require( './main.js' );
+
+
+// EXPORTS //
+
+module.exports = main;
diff --git a/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/lib/main.js b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/lib/main.js
new file mode 100644
index 000000000000..0efe782b1761
--- /dev/null
+++ b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/lib/main.js
@@ -0,0 +1,50 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2025 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var hasOwnProp = require( '@stdlib/assert/has-own-property' );
+var Symbol = require( '@stdlib/symbol/ctor' );
+
+
+// MAIN //
+
+/**
+* Tests for native `Symbol.toPrimitive` support.
+*
+* @returns {boolean} boolean indicating if an environment has `Symbol.toPrimitive` support
+*
+* @example
+* var bool = hasToPrimitiveSymbolSupport();
+* // returns
+*/
+function hasToPrimitiveSymbolSupport() {
+ return (
+ typeof Symbol === 'function' &&
+ typeof Symbol( 'foo' ) === 'symbol' &&
+ hasOwnProp( Symbol, 'toPrimitive' ) &&
+ typeof Symbol.toPrimitive === 'symbol'
+ );
+}
+
+
+// EXPORTS //
+
+module.exports = hasToPrimitiveSymbolSupport;
diff --git a/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/package.json b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/package.json
new file mode 100644
index 000000000000..72d6094ef346
--- /dev/null
+++ b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/package.json
@@ -0,0 +1,74 @@
+{
+ "name": "@stdlib/assert/has-to-primitive-symbol-support",
+ "version": "0.0.0",
+ "description": "Detect native Symbol.toPrimitive support.",
+ "license": "Apache-2.0",
+ "author": {
+ "name": "The Stdlib Authors",
+ "url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
+ },
+ "contributors": [
+ {
+ "name": "The Stdlib Authors",
+ "url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
+ }
+ ],
+ "bin": {
+ "has-to-primitive-symbol-support": "./bin/cli"
+ },
+ "main": "./lib",
+ "directories": {
+ "benchmark": "./benchmark",
+ "doc": "./docs",
+ "example": "./examples",
+ "lib": "./lib",
+ "test": "./test"
+ },
+ "types": "./docs/types",
+ "scripts": {},
+ "homepage": "https://github.com/stdlib-js/stdlib",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/stdlib-js/stdlib.git"
+ },
+ "bugs": {
+ "url": "https://github.com/stdlib-js/stdlib/issues"
+ },
+ "dependencies": {},
+ "devDependencies": {},
+ "engines": {
+ "node": ">=0.10.0",
+ "npm": ">2.7.0"
+ },
+ "os": [
+ "aix",
+ "darwin",
+ "freebsd",
+ "linux",
+ "macos",
+ "openbsd",
+ "sunos",
+ "win32",
+ "windows"
+ ],
+ "keywords": [
+ "stdlib",
+ "stdutils",
+ "stdutil",
+ "utilities",
+ "utility",
+ "utils",
+ "util",
+ "detect",
+ "feature",
+ "symbol",
+ "to-primitive",
+ "es2015",
+ "es6",
+ "support",
+ "has",
+ "native",
+ "issupported",
+ "cli"
+ ]
+}
diff --git a/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/test/test.cli.js b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/test/test.cli.js
new file mode 100644
index 000000000000..ddba4322d088
--- /dev/null
+++ b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/test/test.cli.js
@@ -0,0 +1,163 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2025 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var resolve = require( 'path' ).resolve;
+var exec = require( 'child_process' ).exec;
+var tape = require( 'tape' );
+var IS_BROWSER = require( '@stdlib/assert/is-browser' );
+var IS_WINDOWS = require( '@stdlib/assert/is-windows' );
+var EXEC_PATH = require( '@stdlib/process/exec-path' );
+var readFileSync = require( '@stdlib/fs/read-file' ).sync;
+
+
+// VARIABLES //
+
+var fpath = resolve( __dirname, '..', 'bin', 'cli' );
+var opts = {
+ 'skip': IS_BROWSER || IS_WINDOWS
+};
+
+
+// FIXTURES //
+
+var PKG_VERSION = require( './../package.json' ).version;
+
+
+// TESTS //
+
+tape( 'command-line interface', function test( t ) {
+ t.ok( true, __filename );
+ t.end();
+});
+
+tape( 'when invoked with a `--help` flag, the command-line interface prints the help text to `stderr`', opts, function test( t ) {
+ var expected;
+ var cmd;
+
+ expected = readFileSync( resolve( __dirname, '..', 'docs', 'usage.txt' ), {
+ 'encoding': 'utf8'
+ });
+ cmd = [
+ EXEC_PATH,
+ fpath,
+ '--help'
+ ];
+
+ exec( cmd.join( ' ' ), done );
+
+ function done( error, stdout, stderr ) {
+ if ( error ) {
+ t.fail( error.message );
+ } else {
+ t.strictEqual( stdout.toString(), '', 'does not print to `stdout`' );
+ t.strictEqual( stderr.toString(), expected+'\n', 'expected value' );
+ }
+ t.end();
+ }
+});
+
+tape( 'when invoked with a `-h` flag, the command-line interface prints the help text to `stderr`', opts, function test( t ) {
+ var expected;
+ var cmd;
+
+ expected = readFileSync( resolve( __dirname, '..', 'docs', 'usage.txt' ), {
+ 'encoding': 'utf8'
+ });
+ cmd = [
+ EXEC_PATH,
+ fpath,
+ '-h'
+ ];
+
+ exec( cmd.join( ' ' ), done );
+
+ function done( error, stdout, stderr ) {
+ if ( error ) {
+ t.fail( error.message );
+ } else {
+ t.strictEqual( stdout.toString(), '', 'does not print to `stdout`' );
+ t.strictEqual( stderr.toString(), expected+'\n', 'expected value' );
+ }
+ t.end();
+ }
+});
+
+tape( 'when invoked with a `--version` flag, the command-line interface prints the version to `stderr`', opts, function test( t ) {
+ var cmd = [
+ EXEC_PATH,
+ fpath,
+ '--version'
+ ];
+
+ exec( cmd.join( ' ' ), done );
+
+ function done( error, stdout, stderr ) {
+ if ( error ) {
+ t.fail( error.message );
+ } else {
+ t.strictEqual( stdout.toString(), '', 'does not print to `stdout`' );
+ t.strictEqual( stderr.toString(), PKG_VERSION+'\n', 'expected value' );
+ }
+ t.end();
+ }
+});
+
+tape( 'when invoked with a `-V` flag, the command-line interface prints the version to `stderr`', opts, function test( t ) {
+ var cmd = [
+ EXEC_PATH,
+ fpath,
+ '-V'
+ ];
+
+ exec( cmd.join( ' ' ), done );
+
+ function done( error, stdout, stderr ) {
+ if ( error ) {
+ t.fail( error.message );
+ } else {
+ t.strictEqual( stdout.toString(), '', 'does not print to `stdout`' );
+ t.strictEqual( stderr.toString(), PKG_VERSION+'\n', 'expected value' );
+ }
+ t.end();
+ }
+});
+
+tape( 'the command-line interface prints either `true` or `false` to `stdout` indicating whether an environment provides native `Symbol.toPrimitive` support', opts, function test( t ) {
+ var cmd = [
+ EXEC_PATH,
+ fpath
+ ];
+
+ exec( cmd.join( ' ' ), done );
+
+ function done( error, stdout, stderr ) {
+ var str;
+ if ( error ) {
+ t.fail( error.message );
+ } else {
+ str = stdout.toString();
+ t.strictEqual( str === 'true\n' || str === 'false\n', true, 'prints either `true` or `false` to `stdout`' );
+ t.strictEqual( stderr.toString(), '', 'does not print to `stderr`' );
+ }
+ t.end();
+ }
+});
diff --git a/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/test/test.js b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/test/test.js
new file mode 100644
index 000000000000..941b095556b9
--- /dev/null
+++ b/lib/node_modules/@stdlib/assert/has-to-primitive-symbol-support/test/test.js
@@ -0,0 +1,66 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2025 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var tape = require( 'tape' );
+var proxyquire = require( 'proxyquire' );
+var Symbol = require( '@stdlib/symbol/ctor' );
+var detect = require( './../lib' );
+
+
+// VARIABLES //
+
+var hasToPrimitiveSymbol = ( typeof Symbol === 'function' && typeof Symbol.toPrimitive === 'symbol' );
+
+
+// TESTS //
+
+tape( 'main export is a function', function test( t ) {
+ t.ok( true, __filename );
+ t.strictEqual( typeof detect, 'function', 'main export is a function' );
+ t.end();
+});
+
+tape( 'feature detection result is a boolean', function test( t ) {
+ t.strictEqual( typeof detect(), 'boolean', 'returns expected value' );
+ t.end();
+});
+
+tape( 'if `Symbol.toPrimitive` is supported, detection result is `true`', function test( t ) {
+ if ( hasToPrimitiveSymbol ) {
+ t.strictEqual( detect(), true, 'returns expected value' );
+ } else {
+ t.strictEqual( detect(), false, 'returns expected value' );
+ }
+ t.end();
+});
+
+tape( 'the function guards against a `Symbol` global variable which does not produce `symbols`', function test( t ) {
+ var detect = proxyquire( './../lib/main.js', {
+ '@stdlib/symbol/ctor': mock
+ });
+ t.strictEqual( detect(), false, 'returns expected value' );
+ t.end();
+
+ function mock() {
+ return {};
+ }
+});