2121// MODULES //
2222
2323var tape = require ( 'tape' ) ;
24+ var Float64Results = require ( '@stdlib/stats/base/ztest/one-sample/results/float64' ) ;
25+ var isnan = require ( '@stdlib/math/base/assert/is-nan' ) ;
26+ var dfill = require ( '@stdlib/blas/ext/base/dfill' ) . ndarray ;
27+ var normalFactory = require ( '@stdlib/random/array/normal' ) . factory ;
2428var dztest = require ( './../lib/dztest.js' ) ;
2529
2630
31+ // VARIABLES //
32+
33+ var normal = normalFactory ( {
34+ 'seed' : 12345
35+ } ) ;
36+
37+
2738// TESTS //
2839
2940tape ( 'main export is a function' , function test ( t ) {
@@ -32,4 +43,201 @@ tape( 'main export is a function', function test( t ) {
3243 t . end ( ) ;
3344} ) ;
3445
35- // FIXME: add tests
46+ tape ( 'the function performs a one-sample Z-test over a strided array (alternative=two-sided)' , function test ( t ) {
47+ var results ;
48+ var out ;
49+ var x ;
50+
51+ results = new Float64Results ( ) ;
52+
53+ // Generate an array with a sufficiently large sample size to effectively guarantee expected results:
54+ x = normal ( 10000 , 0.0 , 1.0 , {
55+ 'dtype' : 'float64'
56+ } ) ;
57+
58+ out = dztest ( x . length , 'two-sided' , 0.1 , 0.0 , 1.0 , x , 1 , results ) ;
59+ t . strictEqual ( out , results , 'returns expected value' ) ;
60+ t . strictEqual ( out . rejected , false , 'returns expected value' ) ;
61+ t . strictEqual ( out . alternative , 'two-sided' , 'returns expected value' ) ;
62+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
63+
64+ out = dztest ( x . length , 'two-sided' , 0.1 , 100.0 , 1.0 , x , 1 , results ) ;
65+ t . strictEqual ( out , results , 'returns expected value' ) ;
66+ t . strictEqual ( out . rejected , true , 'returns expected value' ) ;
67+ t . strictEqual ( out . alternative , 'two-sided' , 'returns expected value' ) ;
68+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
69+
70+ // Generate an array with a sufficiently large sample size to effectively guarantee expected results:
71+ x = normal ( 10000 , 100.0 , 1.0 , {
72+ 'dtype' : 'float64'
73+ } ) ;
74+
75+ out = dztest ( x . length , 'two-sided' , 0.1 , 0.0 , 1.0 , x , 1 , results ) ;
76+ t . strictEqual ( out , results , 'returns expected value' ) ;
77+ t . strictEqual ( out . rejected , true , 'returns expected value' ) ;
78+ t . strictEqual ( out . alternative , 'two-sided' , 'returns expected value' ) ;
79+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
80+
81+ t . end ( ) ;
82+ } ) ;
83+
84+ tape ( 'the function performs a one-sample Z-test over a strided array (alternative=greater)' , function test ( t ) {
85+ var results ;
86+ var out ;
87+ var x ;
88+
89+ results = new Float64Results ( ) ;
90+
91+ // Generate an array with a sufficiently large sample size to effectively guarantee expected results:
92+ x = normal ( 10000 , 0.0 , 1.0 , {
93+ 'dtype' : 'float64'
94+ } ) ;
95+
96+ out = dztest ( x . length , 'greater' , 0.1 , 0.0 , 1.0 , x , 1 , results ) ;
97+ t . strictEqual ( out , results , 'returns expected value' ) ;
98+ t . strictEqual ( out . rejected , false , 'returns expected value' ) ;
99+ t . strictEqual ( out . alternative , 'greater' , 'returns expected value' ) ;
100+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
101+
102+ // Generate an array with a sufficiently large sample size to effectively guarantee expected results:
103+ x = normal ( 10000 , 100.0 , 1.0 , {
104+ 'dtype' : 'float64'
105+ } ) ;
106+
107+ out = dztest ( x . length , 'greater' , 0.1 , 0.0 , 1.0 , x , 1 , results ) ;
108+ t . strictEqual ( out , results , 'returns expected value' ) ;
109+ t . strictEqual ( out . rejected , true , 'returns expected value' ) ;
110+ t . strictEqual ( out . alternative , 'greater' , 'returns expected value' ) ;
111+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
112+
113+ t . end ( ) ;
114+ } ) ;
115+
116+ tape ( 'the function performs a one-sample Z-test over a strided array (alternative=less)' , function test ( t ) {
117+ var results ;
118+ var out ;
119+ var x ;
120+
121+ results = new Float64Results ( ) ;
122+
123+ // Generate an array with a sufficiently large sample size to effectively guarantee expected results:
124+ x = normal ( 10000 , 0.0 , 1.0 , {
125+ 'dtype' : 'float64'
126+ } ) ;
127+
128+ out = dztest ( x . length , 'less' , 0.1 , 0.0 , 1.0 , x , 1 , results ) ;
129+ t . strictEqual ( out , results , 'returns expected value' ) ;
130+ t . strictEqual ( out . rejected , false , 'returns expected value' ) ;
131+ t . strictEqual ( out . alternative , 'less' , 'returns expected value' ) ;
132+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
133+
134+ // Generate an array with a sufficiently large sample size to effectively guarantee expected results:
135+ x = normal ( 10000 , - 100.0 , 1.0 , {
136+ 'dtype' : 'float64'
137+ } ) ;
138+
139+ out = dztest ( x . length , 'less' , 0.1 , 0.0 , 1.0 , x , 1 , results ) ;
140+ t . strictEqual ( out , results , 'returns expected value' ) ;
141+ t . strictEqual ( out . rejected , true , 'returns expected value' ) ;
142+ t . strictEqual ( out . alternative , 'less' , 'returns expected value' ) ;
143+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
144+
145+ t . end ( ) ;
146+ } ) ;
147+
148+ tape ( 'if provided an `N` parameter less than or equal to `0`, the function returns `NaN` results' , function test ( t ) {
149+ var results ;
150+ var out ;
151+ var x ;
152+
153+ results = new Float64Results ( ) ;
154+ x = normal ( 10 , 0.0 , 1.0 , {
155+ 'dtype' : 'float64'
156+ } ) ;
157+
158+ out = dztest ( 0 , 'two-sided' , 0.1 , 0.0 , 1.0 , x , 1 , results ) ;
159+ t . strictEqual ( out , results , 'returns expected value' ) ;
160+ t . strictEqual ( out . rejected , false , 'returns expected value' ) ;
161+ t . strictEqual ( out . alternative , 'two-sided' , 'returns expected value' ) ;
162+ t . strictEqual ( isnan ( out . statistic ) , true , 'returns expected value' ) ;
163+
164+ out = dztest ( - 1 , 'two-sided' , 0.1 , 0.0 , 1.0 , x , 1 , results ) ;
165+ t . strictEqual ( out , results , 'returns expected value' ) ;
166+ t . strictEqual ( out . rejected , false , 'returns expected value' ) ;
167+ t . strictEqual ( out . alternative , 'two-sided' , 'returns expected value' ) ;
168+ t . strictEqual ( isnan ( out . statistic ) , true , 'returns expected value' ) ;
169+
170+ t . end ( ) ;
171+ } ) ;
172+
173+ tape ( 'the function supports a stride parameter' , function test ( t ) {
174+ var results ;
175+ var out ;
176+ var x ;
177+ var N ;
178+
179+ N = 10000 ;
180+ results = new Float64Results ( ) ;
181+
182+ // Generate an array with a sufficiently large sample size to effectively guarantee expected results:
183+ x = normal ( N * 2 , 0.0 , 1.0 , {
184+ 'dtype' : 'float64'
185+ } ) ;
186+ dfill ( N , NaN , x , 2 , 1 ) ;
187+
188+ out = dztest ( N , 'two-sided' , 0.1 , 0.0 , 1.0 , x , 2 , results ) ;
189+ t . strictEqual ( out , results , 'returns expected value' ) ;
190+ t . strictEqual ( out . rejected , false , 'returns expected value' ) ;
191+ t . strictEqual ( out . alternative , 'two-sided' , 'returns expected value' ) ;
192+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
193+
194+ // Generate an array with a sufficiently large sample size to effectively guarantee expected results:
195+ x = normal ( N * 2 , 100.0 , 1.0 , {
196+ 'dtype' : 'float64'
197+ } ) ;
198+ dfill ( N , NaN , x , 2 , 1 ) ;
199+
200+ out = dztest ( N , 'two-sided' , 0.1 , 0.0 , 1.0 , x , 2 , results ) ;
201+ t . strictEqual ( out , results , 'returns expected value' ) ;
202+ t . strictEqual ( out . rejected , true , 'returns expected value' ) ;
203+ t . strictEqual ( out . alternative , 'two-sided' , 'returns expected value' ) ;
204+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
205+
206+ t . end ( ) ;
207+ } ) ;
208+
209+ tape ( 'the function supports a negative stride parameter' , function test ( t ) {
210+ var results ;
211+ var out ;
212+ var x ;
213+ var N ;
214+
215+ N = 10000 ;
216+ results = new Float64Results ( ) ;
217+
218+ // Generate an array with a sufficiently large sample size to effectively guarantee expected results:
219+ x = normal ( N * 2 , 0.0 , 1.0 , {
220+ 'dtype' : 'float64'
221+ } ) ;
222+ dfill ( N , NaN , x , 2 , 1 ) ;
223+
224+ out = dztest ( N , 'two-sided' , 0.1 , 0.0 , 1.0 , x , - 2 , results ) ;
225+ t . strictEqual ( out , results , 'returns expected value' ) ;
226+ t . strictEqual ( out . rejected , false , 'returns expected value' ) ;
227+ t . strictEqual ( out . alternative , 'two-sided' , 'returns expected value' ) ;
228+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
229+
230+ // Generate an array with a sufficiently large sample size to effectively guarantee expected results:
231+ x = normal ( N * 2 , 100.0 , 1.0 , {
232+ 'dtype' : 'float64'
233+ } ) ;
234+ dfill ( N , NaN , x , 2 , 1 ) ;
235+
236+ out = dztest ( N , 'two-sided' , 0.1 , 0.0 , 1.0 , x , - 2 , results ) ;
237+ t . strictEqual ( out , results , 'returns expected value' ) ;
238+ t . strictEqual ( out . rejected , true , 'returns expected value' ) ;
239+ t . strictEqual ( out . alternative , 'two-sided' , 'returns expected value' ) ;
240+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
241+
242+ t . end ( ) ;
243+ } ) ;
0 commit comments