Skip to content

Commit b1f4e3e

Browse files
committed
feat: tests added
1 parent 13ddb81 commit b1f4e3e

File tree

2 files changed

+305
-0
lines changed

2 files changed

+305
-0
lines changed
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
/**
2+
* @license Apache-2.0
3+
*
4+
* Copyright (c) 2018 The Stdlib Authors.
5+
*
6+
* Licensed under the Apache License, Version 2.0 (the "License");
7+
* you may not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing, software
13+
* distributed under the License is distributed on an "AS IS" BASIS,
14+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*/
18+
19+
'use strict';
20+
21+
// MODULES //
22+
23+
var tape = require( 'tape' );
24+
var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
25+
var PINF = require( '@stdlib/constants/float32/pinf' );
26+
var NINF = require( '@stdlib/constants/float32/ninf' );
27+
var lcmf = require( './../lib' );
28+
29+
30+
// TESTS //
31+
32+
tape( 'main export is a function', function test( t ) {
33+
t.ok( true, __filename );
34+
t.strictEqual( typeof lcmf, 'function', 'main export is a function' );
35+
t.end();
36+
});
37+
38+
tape( 'the function returns `NaN` if either argument is `NaN`', function test( t ) {
39+
var v;
40+
41+
v = lcmf( NaN, 10 );
42+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
43+
44+
v = lcmf( 10, NaN );
45+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
46+
47+
v = lcmf( NaN, NaN );
48+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
49+
50+
t.end();
51+
});
52+
53+
tape( 'the function returns `NaN` if either argument is `+infinity`', function test( t ) {
54+
var v;
55+
56+
v = lcmf( PINF, 10 );
57+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
58+
59+
v = lcmf( 10, PINF );
60+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
61+
62+
v = lcmf( PINF, PINF );
63+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
64+
65+
t.end();
66+
});
67+
68+
tape( 'the function returns `NaN` if either argument is `-infinity`', function test( t ) {
69+
var v;
70+
71+
v = lcmf( NINF, 10 );
72+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
73+
74+
v = lcmf( 10, NINF );
75+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
76+
77+
v = lcmf( NINF, NINF );
78+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
79+
80+
t.end();
81+
});
82+
83+
tape( 'the function returns `NaN` if either argument is not an integer value', function test( t ) {
84+
var v;
85+
86+
v = lcmf( 3.14, 10 );
87+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
88+
89+
v = lcmf( 10, 3.14 );
90+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
91+
92+
v = lcmf( 3.14, 6.18 );
93+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
94+
95+
t.end();
96+
});
97+
98+
tape( 'the function returns `0` if either argument is `0`', function test( t ) {
99+
var v = lcmf( 0, 0 );
100+
t.strictEqual( v, 0, 'returns 0' );
101+
102+
v = lcmf( 2, 0 );
103+
t.strictEqual( v, 0, 'returns 0' );
104+
105+
v = lcmf( 0, -3 );
106+
t.strictEqual( v, 0, 'returns 0' );
107+
108+
t.end();
109+
});
110+
111+
tape( 'the function computes the least common multiple', function test( t ) {
112+
var v;
113+
114+
v = lcmf( 0, 0 );
115+
t.strictEqual( v, 0, 'returns 0' );
116+
117+
v = lcmf( 1, 0 );
118+
t.strictEqual( v, 0, 'returns 0' );
119+
120+
v = lcmf( 0, 1 );
121+
t.strictEqual( v, 0, 'returns 0' );
122+
123+
v = lcmf( 6, 4 );
124+
t.strictEqual( v, 12, 'returns 12' );
125+
126+
v = lcmf( 6, -4 );
127+
t.strictEqual( v, 12, 'returns 12' );
128+
129+
v = lcmf( -6, -4 );
130+
t.strictEqual( v, 12, 'returns 12' );
131+
132+
v = lcmf( 2, 8 );
133+
t.strictEqual( v, 8, 'returns 8' );
134+
135+
v = lcmf( 15, 20 );
136+
t.strictEqual( v, 60, 'returns 60' );
137+
138+
v = lcmf( 20, 15 );
139+
t.strictEqual( v, 60, 'returns 60' );
140+
141+
v = lcmf( 35, -21 );
142+
t.strictEqual( v, 105, 'returns 105' );
143+
144+
v = lcmf( 48, 18 );
145+
t.strictEqual( v, 144, 'returns 144' );
146+
147+
t.end();
148+
});
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
/**
2+
* @license Apache-2.0
3+
*
4+
* Copyright (c) 2024 The Stdlib Authors.
5+
*
6+
* Licensed under the Apache License, Version 2.0 (the "License");
7+
* you may not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing, software
13+
* distributed under the License is distributed on an "AS IS" BASIS,
14+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*/
18+
19+
'use strict';
20+
21+
// MODULES //
22+
23+
var resolve = require( 'path' ).resolve;
24+
var tape = require( 'tape' );
25+
var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
26+
var PINF = require( '@stdlib/constants/float32/pinf' );
27+
var NINF = require( '@stdlib/constants/float32/ninf' );
28+
var tryRequire = require( '@stdlib/utils/try-require' );
29+
30+
31+
// VARIABLES //
32+
33+
var lcmf = tryRequire( resolve( __dirname, './../lib/native.js' ) );
34+
var opts = {
35+
'skip': ( lcmf instanceof Error )
36+
};
37+
38+
39+
// TESTS //
40+
41+
tape( 'main export is a function', opts, function test( t ) {
42+
t.ok( true, __filename );
43+
t.strictEqual( typeof lcmf, 'function', 'main export is a function' );
44+
t.end();
45+
});
46+
47+
tape( 'the function returns `NaN` if either argument is `NaN`', opts, function test( t ) {
48+
var v;
49+
50+
v = lcmf( NaN, 10 );
51+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
52+
53+
v = lcmf( 10, NaN );
54+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
55+
56+
v = lcmf( NaN, NaN );
57+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
58+
59+
t.end();
60+
});
61+
62+
tape( 'the function returns `NaN` if either argument is `+infinity`', opts, function test( t ) {
63+
var v;
64+
65+
v = lcmf( PINF, 10 );
66+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
67+
68+
v = lcmf( 10, PINF );
69+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
70+
71+
v = lcmf( PINF, PINF );
72+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
73+
74+
t.end();
75+
});
76+
77+
tape( 'the function returns `NaN` if either argument is `-infinity`', opts, function test( t ) {
78+
var v;
79+
80+
v = lcmf( NINF, 10 );
81+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
82+
83+
v = lcmf( 10, NINF );
84+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
85+
86+
v = lcmf( NINF, NINF );
87+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
88+
89+
t.end();
90+
});
91+
92+
tape( 'the function returns `NaN` if either argument is not an integer value', opts, function test( t ) {
93+
var v;
94+
95+
v = lcmf( 3.14, 10 );
96+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
97+
98+
v = lcmf( 10, 3.14 );
99+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
100+
101+
v = lcmf( 3.14, 6.18 );
102+
t.strictEqual( isnanf( v ), true, 'returns NaN' );
103+
104+
t.end();
105+
});
106+
107+
tape( 'the function returns `0` if either argument is `0`', opts, function test( t ) {
108+
var v = lcmf( 0, 0 );
109+
t.strictEqual( v, 0, 'returns 0' );
110+
111+
v = lcmf( 2, 0 );
112+
t.strictEqual( v, 0, 'returns 0' );
113+
114+
v = lcmf( 0, -3 );
115+
t.strictEqual( v, 0, 'returns 0' );
116+
117+
t.end();
118+
});
119+
120+
tape( 'the function computes the least common multiple', opts, function test( t ) {
121+
var v;
122+
123+
v = lcmf( 0, 0 );
124+
t.strictEqual( v, 0, 'returns 0' );
125+
126+
v = lcmf( 1, 0 );
127+
t.strictEqual( v, 0, 'returns 0' );
128+
129+
v = lcmf( 0, 1 );
130+
t.strictEqual( v, 0, 'returns 0' );
131+
132+
v = lcmf( 6, 4 );
133+
t.strictEqual( v, 12, 'returns 12' );
134+
135+
v = lcmf( 6, -4 );
136+
t.strictEqual( v, 12, 'returns 12' );
137+
138+
v = lcmf( -6, -4 );
139+
t.strictEqual( v, 12, 'returns 12' );
140+
141+
v = lcmf( 2, 8 );
142+
t.strictEqual( v, 8, 'returns 8' );
143+
144+
v = lcmf( 15, 20 );
145+
t.strictEqual( v, 60, 'returns 60' );
146+
147+
v = lcmf( 20, 15 );
148+
t.strictEqual( v, 60, 'returns 60' );
149+
150+
v = lcmf( 35, -21 );
151+
t.strictEqual( v, 105, 'returns 105' );
152+
153+
v = lcmf( 48, 18 );
154+
t.strictEqual( v, 144, 'returns 144' );
155+
156+
t.end();
157+
});

0 commit comments

Comments
 (0)