Skip to content

feat : add @stdlib/assert/is-nonnegative-finite #1354

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 26 commits into from
Feb 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
f0ab421
feat : add @stdlib/assert/is-nonnegative-finite
marsian83 Feb 23, 2024
8a3dea3
Apply suggestions from code review
marsian83 Feb 23, 2024
bb65aec
Apply suggestions from code review
marsian83 Feb 23, 2024
499ce38
Apply suggestions from code review
marsian83 Feb 23, 2024
17084ce
Apply suggestions from code review
marsian83 Feb 23, 2024
8618d3e
Apply suggestions from code review
marsian83 Feb 23, 2024
daaa208
Apply suggestions from code review
marsian83 Feb 23, 2024
eee1961
Apply suggestions from code review
marsian83 Feb 23, 2024
5bad535
Apply suggestions from code review
marsian83 Feb 23, 2024
ced8943
Apply suggestions from code review
marsian83 Feb 23, 2024
597ce47
Apply suggestions from code review
marsian83 Feb 23, 2024
3ca64fa
Apply suggestions from code review
marsian83 Feb 23, 2024
4fcf51a
Apply suggestions from code review
marsian83 Feb 23, 2024
25b3163
Apply suggestions from code review
marsian83 Feb 23, 2024
583f7f6
Apply suggestions from code review
marsian83 Feb 23, 2024
640166e
Apply suggestions from code review
marsian83 Feb 23, 2024
0f5e8d1
Apply suggestions from code review
marsian83 Feb 23, 2024
7e720a1
Apply suggestions from code review
marsian83 Feb 23, 2024
3376256
Apply suggestions from code review
marsian83 Feb 23, 2024
5d533a2
Apply suggestions from code review
marsian83 Feb 23, 2024
dd1e2d4
Apply suggestions from code review
marsian83 Feb 23, 2024
093ee64
Apply suggestions from code review
marsian83 Feb 23, 2024
6dd7183
fold lines in repl.txt
marsian83 Feb 23, 2024
338cdce
Update lib/node_modules/@stdlib/assert/is-nonnegative-finite/examples…
Planeshifter Feb 23, 2024
39887e9
Apply suggestions from code review
Planeshifter Feb 23, 2024
c287357
Update lib/node_modules/@stdlib/assert/is-nonnegative-finite/benchmar…
Planeshifter Feb 23, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
163 changes: 163 additions & 0 deletions lib/node_modules/@stdlib/assert/is-nonnegative-finite/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
<!--

@license Apache-2.0

Copyright (c) 2024 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.

-->

# isNonNegativeFinite

> Test if a value is a number having a nonnegative finite value.

<section class="usage">

## Usage

```javascript
var isNonNegativeFinite = require( '@stdlib/assert/is-nonnegative-finite' );
```

#### isNonNegativeFinite( value )

Tests if a `value` is a `number` having a nonnegative finite value.

<!-- eslint-disable no-new-wrappers -->

```javascript
var Number = require( '@stdlib/number/ctor' );

var bool = isNonNegativeFinite( 5.0 );
// returns true

bool = isNonNegativeFinite( new Number( 5.0 ) );
// returns true

bool = isNonNegativeFinite( 3.14 );
// returns true

bool = isNonNegativeFinite( -5.0 );
// returns false

bool = isNonNegativeFinite( null );
// returns false

bool = isNonNegativeFinite( Infinity );
// returns false
```

#### isNonNegativeFinite.isPrimitive( value )

Tests if a `value` is a primitive `number` having a nonnegative finite value.

<!-- eslint-disable no-new-wrappers -->

```javascript
var Number = require( '@stdlib/number/ctor' );

var bool = isNonNegativeFinite.isPrimitive( 3.0 );
// returns true

bool = isNonNegativeFinite.isPrimitive( new Number( 3.0 ) );
// returns false
```

#### isNonNegativeFinite.isObject( value )

Tests if a `value` is a `Number` object having a nonnegative finite value.

<!-- eslint-disable no-new-wrappers -->

```javascript
var Number = require( '@stdlib/number/ctor' );

var bool = isNonNegativeFinite.isObject( 3.0 );
// returns false

bool = isNonNegativeFinite.isObject( new Number( 3.0 ) );
// returns true
```

</section>

<!-- /.usage -->

<section class="examples">

## Examples

<!-- eslint-disable no-new-wrappers -->

<!-- eslint no-undef: "error" -->

```javascript
var Number = require( '@stdlib/number/ctor' );
var isNonNegativeFinite = require( '@stdlib/assert/is-nonnegative-finite' );

var bool = isNonNegativeFinite( 5.0 );
// returns true

bool = isNonNegativeFinite( new Number( 5.0 ) );
// returns true

bool = isNonNegativeFinite( 0.0 );
// returns true

bool = isNonNegativeFinite( 3.14 );
// returns true

bool = isNonNegativeFinite( -5.0 );
// returns false

bool = isNonNegativeFinite( '5' );
// returns false

bool = isNonNegativeFinite( null );
// returns false
```

</section>

<!-- /.examples -->

<!-- Section for related `stdlib` packages. Do not manually edit this section, as it is automatically populated. -->

<section class="related">

* * *

## See Also

- <span class="package-name">[`@stdlib/assert/is-number`][@stdlib/assert/is-number]</span><span class="delimiter">: </span><span class="description">test if a value is a number.</span>
- <span class="package-name">[`@stdlib/assert/is-finite`][@stdlib/assert/is-finite]</span><span class="delimiter">: </span><span class="description">test if a value is a finite number.</span>

</section>

<!-- /.related -->

<!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->

<section class="links">

<!-- <related-links> -->

[@stdlib/assert/is-number]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/assert/is-number
[@stdlib/assert/is-finite]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/assert/is-finite

<!-- </related-links> -->

</section>

<!-- /.links -->
Original file line number Diff line number Diff line change
@@ -0,0 +1,228 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2024 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.
*/

/* eslint-disable no-undefined, no-empty-function */

'use strict';

// MODULES //

var bench = require( '@stdlib/bench' );
var Number = require( '@stdlib/number/ctor' );
var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive;
var pkg = require( './../package.json' ).name;
var isNonNegativeFinite = require( './../lib' );


// MAIN //

bench( pkg+'::primitives', function benchmark( b ) {
var values;
var bool;
var i;

values = [
'5',
5.0,
4.0,
3.14,
-5.0,
-4.0,
NaN,
true,
false,
null,
Infinity,
-Infinity,
undefined
];

b.tic();
for ( i = 0; i < b.iterations; i++ ) {
bool = isNonNegativeFinite( values[ i % values.length ] );
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();
});

bench( pkg+'::objects', function benchmark( b ) {
var values;
var bool;
var i;

values = [
[],
{},
function noop() {},
new Number( 2.0 ),
new Number( -3.0 ),
new Number( 3.14 )
];

b.tic();
for ( i = 0; i < b.iterations; i++ ) {
bool = isNonNegativeFinite( values[ i % values.length ] );
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();
});

bench( pkg+'::primitives:isPrimitive', function benchmark( b ) {
var values;
var bool;
var i;

values = [
'5',
5.0,
4.0,
3.14,
-5.0,
-4.0,
NaN,
true,
false,
null,
undefined,
Infinity,
-Infinity
];

b.tic();
for ( i = 0; i < b.iterations; i++ ) {
bool = isNonNegativeFinite.isPrimitive( values[ i % values.length ] );
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();
});

bench( pkg+'::objects:isPrimitive', function benchmark( b ) {
var values;
var bool;
var i;

values = [
[],
{},
function noop() {},
new Number( 2.0 ),
new Number( -3.0 ),
new Number( 3.14 )
];

b.tic();
for ( i = 0; i < b.iterations; i++ ) {
bool = isNonNegativeFinite.isPrimitive( values[ i % values.length ] );
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();
});

bench( pkg+'::primitives:isObject', function benchmark( b ) {
var values;
var bool;
var i;

values = [
'5',
5.0,
4.0,
3.14,
-5.0,
-4.0,
NaN,
true,
false,
null,
undefined,
Infinity,
-Infinity
];

b.tic();
for ( i = 0; i < b.iterations; i++ ) {
bool = isNonNegativeFinite.isObject( values[ i % values.length ] );
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();
});

bench( pkg+'::objects:isObject', function benchmark( b ) {
var values;
var bool;
var i;

values = [
[],
{},
function noop() {},
new Number( 2.0 ),
new Number( -3.0 ),
new Number( 3.14 ),
new Number( Infinity )
];

b.tic();
for ( i = 0; i < b.iterations; i++ ) {
bool = isNonNegativeFinite.isObject( values[ i % values.length ] );
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();
});
Loading