Skip to content

Commit 2693663

Browse files
refactor: update math/base/assert/is-prime to follow latest project conventions
PR-URL: #4701 Reviewed-by: Philipp Burckhardt <[email protected]>
1 parent caa46c4 commit 2693663

File tree

4 files changed

+32
-75
lines changed

4 files changed

+32
-75
lines changed

lib/node_modules/@stdlib/math/base/assert/is-prime/manifest.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,11 @@
3939
"@stdlib/math/base/special/sqrt",
4040
"@stdlib/math/base/special/floor",
4141
"@stdlib/constants/float64/max-safe-integer",
42-
"@stdlib/math/base/special/fmod"
42+
"@stdlib/math/base/special/fmod",
43+
"@stdlib/napi/export",
44+
"@stdlib/napi/argv",
45+
"@stdlib/napi/argv-double",
46+
"@stdlib/napi/create-int32"
4347
]
4448
},
4549
{

lib/node_modules/@stdlib/math/base/assert/is-prime/src/addon.c

Lines changed: 9 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@
1717
*/
1818

1919
#include "stdlib/math/base/assert/is_prime.h"
20+
#include "stdlib/napi/argv.h"
21+
#include "stdlib/napi/argv_double.h"
22+
#include "stdlib/napi/create_int32.h"
23+
#include "stdlib/napi/export.h"
2024
#include <node_api.h>
2125
#include <stdint.h>
22-
#include <stdbool.h>
23-
#include <assert.h>
2426

2527
/**
2628
* Receives JavaScript callback invocation data.
@@ -30,60 +32,11 @@
3032
* @return Node-API value
3133
*/
3234
static napi_value addon( napi_env env, napi_callback_info info ) {
33-
napi_status status;
34-
35-
// Get callback arguments:
36-
size_t argc = 1;
37-
napi_value argv[ 1 ];
38-
status = napi_get_cb_info( env, info, &argc, argv, NULL, NULL );
39-
assert( status == napi_ok );
40-
41-
// Check whether we were provided the correct number of arguments:
42-
if ( argc < 1 ) {
43-
status = napi_throw_error( env, NULL, "invalid invocation. Insufficient arguments." );
44-
assert( status == napi_ok );
45-
return NULL;
46-
}
47-
if ( argc > 1 ) {
48-
status = napi_throw_error( env, NULL, "invalid invocation. Too many arguments." );
49-
assert( status == napi_ok );
50-
return NULL;
51-
}
52-
53-
napi_valuetype vtype0;
54-
status = napi_typeof( env, argv[ 0 ], &vtype0 );
55-
assert( status == napi_ok );
56-
if ( vtype0 != napi_number ) {
57-
status = napi_throw_type_error( env, NULL, "invalid argument. First argument must be a number." );
58-
assert( status == napi_ok );
59-
return NULL;
60-
}
61-
62-
double x;
63-
status = napi_get_value_double( env, argv[ 0 ], &x );
64-
assert( status == napi_ok );
65-
66-
bool result = stdlib_base_is_prime( x );
67-
68-
napi_value v;
69-
status = napi_create_int32( env, (int32_t)result, &v );
70-
assert( status == napi_ok );
71-
72-
return v;
35+
STDLIB_NAPI_ARGV( env, info, argv, argc, 1 );
36+
STDLIB_NAPI_ARGV_DOUBLE( env, x, argv, 0 );
37+
STDLIB_NAPI_CREATE_INT32( env, (int32_t)stdlib_base_is_prime( x ), out );
38+
return out;
7339
}
7440

75-
/**
76-
* Initializes a Node-API module.
77-
*
78-
* @param env environment under which the function is invoked
79-
* @param exports exports object
80-
* @return main export
81-
*/
82-
static napi_value init( napi_env env, napi_value exports ) {
83-
napi_value fcn;
84-
napi_status status = napi_create_function( env, "exports", NAPI_AUTO_LENGTH, addon, NULL, &fcn );
85-
assert( status == napi_ok );
86-
return fcn;
87-
}
41+
STDLIB_NAPI_MODULE_EXPORT_FCN( addon )
8842

89-
NAPI_MODULE( NODE_GYP_MODULE_NAME, init )

lib/node_modules/@stdlib/math/base/assert/is-prime/test/test.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,14 @@ tape( 'the function returns `true` if provided a prime number', function test( t
4949
M = 2e4;
5050
for ( i = 0; i < M; i++ ) {
5151
v = PRIMES[ i ];
52-
t.equal( isPrime( v ), true, 'returns true when provided '+v );
52+
t.equal( isPrime( v ), true, 'returns expected value when provided '+v );
5353
}
5454
// Randomly test prime numbers chosen from the remainder of the list of known prime numbers...
5555
N = PRIMES.length - 1;
5656
for ( i = 0; i < 1e3; i++ ) {
5757
j = discreteUniform( M, N );
5858
v = PRIMES[ j ];
59-
t.equal( isPrime( v ), true, 'returns true when provided '+v );
59+
t.equal( isPrime( v ), true, 'returns expected value when provided '+v );
6060
}
6161
t.end();
6262
});
@@ -72,30 +72,30 @@ tape( 'the function returns `false` if provided a composite number', function te
7272
N = PRIMES.length;
7373
hash = {};
7474
for ( i = 0; i < N; i++ ) {
75-
hash[ PRIMES[i] ] = true;
75+
hash[ PRIMES[ i ] ] = true;
7676
}
7777
// Only test odd integers, as even integers are trivially composite...
7878
M = 2e5;
7979
for ( i = 3; i < M; i += 2 ) {
8080
if ( hash[ i ] ) {
8181
continue;
8282
}
83-
t.equal( isPrime( i ), false, 'returns false when provided '+i );
83+
t.equal( isPrime( i ), false, 'returns expected value when provided '+i );
8484
}
8585
// Generate random composite integers...
8686
MAX = PRIMES[ N-1 ];
8787
for ( i = 0; i < 1e3; i++ ) {
8888
// Generate an odd integer...
89-
j = discreteUniform( trunc( M/2 ), trunc( MAX/2 ) );
90-
j = (2*j) + 1;
89+
j = discreteUniform( trunc( M / 2 ), trunc( MAX / 2 ) );
90+
j = ( 2 * j ) + 1;
9191

9292
// Check if the generated integer is a known prime number...
9393
if ( hash[ j ] ) {
9494
// Repeat iteration...
9595
i -= 1;
9696
continue;
9797
}
98-
t.equal( isPrime( j ), false, 'returns false when provided '+j );
98+
t.equal( isPrime( j ), false, 'returns expected value when provided '+j );
9999
}
100100
t.end();
101101
});
@@ -104,9 +104,9 @@ tape( 'the function returns `false` if not provided a positive integer', functio
104104
var v;
105105
var i;
106106
for ( i = 0; i < 100; i++ ) {
107-
v = ( randu()*100.0 ) - 50.0;
107+
v = ( randu() * 100.0 ) - 50.0;
108108
if ( trunc(v) !== v ) {
109-
t.equal( isPrime( v ), false, 'returns false when provided '+v );
109+
t.equal( isPrime( v ), false, 'returns expected value when provided '+v );
110110
}
111111
}
112112
t.end();

lib/node_modules/@stdlib/math/base/assert/is-prime/test/test.native.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -58,14 +58,14 @@ tape( 'the function returns `true` if provided a prime number', opts, function t
5858
M = 2e4;
5959
for ( i = 0; i < M; i++ ) {
6060
v = PRIMES[ i ];
61-
t.equal( isPrime( v ), true, 'returns true when provided '+v );
61+
t.equal( isPrime( v ), true, 'returns expected value when provided '+v );
6262
}
6363
// Randomly test prime numbers chosen from the remainder of the list of known prime numbers...
6464
N = PRIMES.length - 1;
6565
for ( i = 0; i < 1e3; i++ ) {
6666
j = discreteUniform( M, N );
6767
v = PRIMES[ j ];
68-
t.equal( isPrime( v ), true, 'returns true when provided '+v );
68+
t.equal( isPrime( v ), true, 'returns expected value when provided '+v );
6969
}
7070
t.end();
7171
});
@@ -81,30 +81,30 @@ tape( 'the function returns `false` if provided a composite number', opts, funct
8181
N = PRIMES.length;
8282
hash = {};
8383
for ( i = 0; i < N; i++ ) {
84-
hash[ PRIMES[i] ] = true;
84+
hash[ PRIMES[ i ] ] = true;
8585
}
8686
// Only test odd integers, as even integers are trivially composite...
8787
M = 2e5;
8888
for ( i = 3; i < M; i += 2 ) {
8989
if ( hash[ i ] ) {
9090
continue;
9191
}
92-
t.equal( isPrime( i ), false, 'returns false when provided '+i );
92+
t.equal( isPrime( i ), false, 'returns expected value when provided '+i );
9393
}
9494
// Generate random composite integers...
9595
MAX = PRIMES[ N-1 ];
9696
for ( i = 0; i < 1e3; i++ ) {
9797
// Generate an odd integer...
98-
j = discreteUniform( trunc( M/2 ), trunc( MAX/2 ) );
99-
j = (2*j) + 1;
98+
j = discreteUniform( trunc( M / 2 ), trunc( MAX / 2 ) );
99+
j = ( 2 * j ) + 1;
100100

101101
// Check if the generated integer is a known prime number...
102102
if ( hash[ j ] ) {
103103
// Repeat iteration...
104104
i -= 1;
105105
continue;
106106
}
107-
t.equal( isPrime( j ), false, 'returns false when provided '+j );
107+
t.equal( isPrime( j ), false, 'returns expected value when provided '+j );
108108
}
109109
t.end();
110110
});
@@ -113,9 +113,9 @@ tape( 'the function returns `false` if not provided a positive integer', opts, f
113113
var v;
114114
var i;
115115
for ( i = 0; i < 100; i++ ) {
116-
v = ( randu()*100.0 ) - 50.0;
116+
v = ( randu() * 100.0 ) - 50.0;
117117
if ( trunc(v) !== v ) {
118-
t.equal( isPrime( v ), false, 'returns false when provided '+v );
118+
t.equal( isPrime( v ), false, 'returns expected value when provided '+v );
119119
}
120120
}
121121
t.end();

0 commit comments

Comments
 (0)