fUnit 0.0.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README +16 -15
- data/Rakefile +1 -1
- data/bin/funit +1 -1
- data/docs/html/classes/Funit.html +20 -22
- data/docs/html/classes/Funit/Assertions.html +1 -1
- data/docs/html/classes/Funit/Compiler.html +3 -3
- data/docs/html/classes/Funit/TestSuite.html +43 -43
- data/docs/html/created.rid +1 -1
- data/docs/html/files/README.html +22 -25
- data/docs/html/files/lib/funit/assertions_rb.html +1 -1
- data/docs/html/files/lib/funit/functions_rb.html +1 -1
- data/docs/html/files/lib/funit/test_suite_rb.html +10 -1
- data/docs/html/files/lib/funit_rb.html +1 -1
- data/docs/html/fr_method_index.html +2 -2
- data/examples/CFD/{FluxFunctionsMT.ftk → FluxFunctions.fun} +1 -1
- data/examples/CFD/{GasModelMT.ftk → GasModel.fun} +1 -1
- data/examples/StopWatch/{StopWatchMT.ftk → StopWatch.fun} +0 -0
- data/lib/funit.rb +4 -6
- data/lib/funit/assertions.rb +1 -1
- data/lib/funit/functions.rb +20 -20
- data/lib/funit/test_suite.rb +43 -38
- data/tests/tc_compile.rb +7 -4
- data/tests/tc_fortran_deps.rb +3 -0
- data/tests/tc_funit.rb +30 -16
- data/tests/tc_test_suite.rb +29 -31
- metadata +4 -17
- data/examples/CFD/FluxFunctionsMT.f90 +0 -336
- data/examples/CFD/GasModelMT.f90 +0 -173
- data/examples/CFD/TestRunner +0 -0
- data/examples/CFD/TestRunner.f90 +0 -23
- data/examples/CFD/fluxfunctions.mod +0 -45
- data/examples/CFD/gammas.mod +0 -20
- data/examples/CFD/gasmodel.mod +0 -30
- data/examples/CFD/gasmodelmt.mod +0 -27
- data/examples/StopWatch/StopWatchMT.f90 +0 -343
- data/examples/StopWatch/TestRunner +0 -0
- data/examples/StopWatch/TestRunner.f90 +0 -23
- data/examples/StopWatch/stopwatch.mod +0 -34
- data/examples/StopWatch/stopwatchmt.mod +0 -27
data/README
CHANGED
@@ -22,7 +22,7 @@ for test files.
|
|
22
22
|
|
23
23
|
== Requirements
|
24
24
|
|
25
|
-
1. A Fortran 90/95/2003 compiler (set via
|
25
|
+
1. A Fortran 90/95/2003 compiler (set via FC environment variable)
|
26
26
|
2. {The Ruby language}[http://www.ruby-lang.org/] with the
|
27
27
|
{RubyGems package manager}[http://rubyforge.org/projects/rubygems/]
|
28
28
|
|
@@ -47,7 +47,7 @@ temperature,
|
|
47
47
|
..
|
48
48
|
end module
|
49
49
|
|
50
|
-
The tests of this module would be contained in <tt>
|
50
|
+
The tests of this module would be contained in <tt>gas_physics.fun</tt>,
|
51
51
|
and might contain a test like,
|
52
52
|
|
53
53
|
..
|
@@ -65,16 +65,16 @@ with the command,
|
|
65
65
|
|
66
66
|
funit gas_physics
|
67
67
|
|
68
|
-
which would transform your fragments contained in <tt>
|
68
|
+
which would transform your fragments contained in <tt>gas_physics.fun</tt>
|
69
69
|
into valid Fortran code, create a test runner program, compile everything,
|
70
70
|
and run the tests. A sample output would look like,
|
71
71
|
|
72
|
-
parsing
|
72
|
+
parsing gas_physics.fun
|
73
73
|
computing dependencies
|
74
74
|
locating associated source files and sorting for compilation
|
75
75
|
g95 -o TestRunner
|
76
76
|
gas_physics.f90 \
|
77
|
-
|
77
|
+
gas_physics_fun.f90 \
|
78
78
|
TestRunner.f90
|
79
79
|
|
80
80
|
gas_physics test suite:
|
@@ -82,15 +82,18 @@ and run the tests. A sample output would look like,
|
|
82
82
|
|
83
83
|
== Support
|
84
84
|
|
85
|
-
Send email to
|
86
|
-
|
85
|
+
Send email to
|
86
|
+
{funit-support@rubyforge.org}[mailto:funit-support@rubyforge.org]
|
87
|
+
or submit a request through
|
88
|
+
{the tracking system}[http://rubyforge.org/tracker/?group_id=1416].
|
87
89
|
|
88
90
|
== License
|
89
91
|
|
90
92
|
FUnit is released under the NASA Open Source Agreement, which
|
91
93
|
requests registration. If you would like to register, send
|
92
|
-
an email to
|
93
|
-
|
94
|
+
an email to
|
95
|
+
{funit-registration@rubyforge.org}[mailto:funit-registration@rubyforge.org?subject=fUnit%20Registration]
|
96
|
+
with your name, institution (if applicable), city, postal code, and country.
|
94
97
|
See COPYING[http://funit.rubyforge.org/files/COPYING.html] for details.
|
95
98
|
|
96
99
|
== A Brief History
|
@@ -116,9 +119,11 @@ rewrote the framework in Ruby[http:www.ruby-lang.org].
|
|
116
119
|
== To Do
|
117
120
|
|
118
121
|
* Make tests fail gracefully if Fortran compiler is not found.
|
119
|
-
* Complete migration
|
122
|
+
* Complete migration from CamelCase to snake_case for methods and variables.
|
123
|
+
* Use 2-space indentation everywhere.
|
120
124
|
* Use 'test' keyword instead of 'beginTest' business.
|
121
|
-
* Don't add to test name during translation to avoid
|
125
|
+
* Don't add to test name during translation to avoid
|
126
|
+
Fortran's 32-character limit on names.
|
122
127
|
* Rename assertions to more consistent with other xUnits.
|
123
128
|
* Add assertions to capture stops and warning messages.
|
124
129
|
* Clean up documentation.
|
@@ -126,7 +131,3 @@ rewrote the framework in Ruby[http:www.ruby-lang.org].
|
|
126
131
|
Erik Veenstra's RubyScript2Exe[http://www.erikveen.dds.nl/rubyscript2exe/].
|
127
132
|
* Use a makefile instead of a single, ordered command line for compilation.
|
128
133
|
* Add a clean option to remove all generated artifacts.
|
129
|
-
* Migrate to a new naming convention?
|
130
|
-
E.g., gas_physics.fun -> gas_physics_fun.f90
|
131
|
-
* Change Fortran envinoment variable from <tt>F9X</tt> to GNU-standard
|
132
|
-
<tt>FC</tt>.
|
data/Rakefile
CHANGED
data/bin/funit
CHANGED
@@ -90,7 +90,7 @@
|
|
90
90
|
|
91
91
|
<div id="description">
|
92
92
|
<p>
|
93
|
-
|
93
|
+
Compile and run the requested tests
|
94
94
|
</p>
|
95
95
|
|
96
96
|
</div>
|
@@ -103,10 +103,10 @@ Create test suite wrapper code
|
|
103
103
|
|
104
104
|
<div class="name-list">
|
105
105
|
<a href="#M000008">compileTests</a>
|
106
|
-
<a href="#M000003">
|
106
|
+
<a href="#M000003">funit_exists?</a>
|
107
107
|
<a href="#M000004">parseCommandLine</a>
|
108
108
|
<a href="#M000002">requestedModules</a>
|
109
|
-
<a href="#M000001">
|
109
|
+
<a href="#M000001">run_tests</a>
|
110
110
|
<a href="#M000006">syntaxError</a>
|
111
111
|
<a href="#M000007">warning</a>
|
112
112
|
<a href="#M000005">writeTestRunner</a>
|
@@ -168,7 +168,7 @@ Class <a href="Funit/TestSuite.html" class="link">Funit::TestSuite</a><br />
|
|
168
168
|
<span class="ruby-identifier">puts</span> <span class="ruby-value str">"locating associated source files and sorting for compilation"</span>
|
169
169
|
<span class="ruby-identifier">requiredSources</span> = <span class="ruby-identifier">dependencies</span>.<span class="ruby-identifier">required_source_files</span>(<span class="ruby-value str">'TestRunner.f90'</span>)
|
170
170
|
|
171
|
-
<span class="ruby-identifier">puts</span> <span class="ruby-identifier">compile</span> = <span class="ruby-node">"#{ENV['
|
171
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-identifier">compile</span> = <span class="ruby-node">"#{ENV['FC']} #{ENV['FCFLAGS']} -o TestRunner \\\n #{requiredSources.join(" \\\n ")}"</span>
|
172
172
|
|
173
173
|
<span class="ruby-identifier">raise</span> <span class="ruby-value str">"Compile failed."</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">system</span>(<span class="ruby-identifier">compile</span>)
|
174
174
|
<span class="ruby-keyword kw">end</span>
|
@@ -182,7 +182,7 @@ Class <a href="Funit/TestSuite.html" class="link">Funit::TestSuite</a><br />
|
|
182
182
|
|
183
183
|
<div class="method-heading">
|
184
184
|
<a href="#M000003" class="method-signature">
|
185
|
-
<span class="method-name">
|
185
|
+
<span class="method-name">funit_exists?</span><span class="method-args">(moduleName)</span>
|
186
186
|
</a>
|
187
187
|
</div>
|
188
188
|
|
@@ -192,8 +192,8 @@ Class <a href="Funit/TestSuite.html" class="link">Funit::TestSuite</a><br />
|
|
192
192
|
<div class="method-source-code" id="M000003-source">
|
193
193
|
<pre>
|
194
194
|
<span class="ruby-comment cmt"># File lib/funit/functions.rb, line 40</span>
|
195
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">
|
196
|
-
<span class="ruby-constant">File</span>.<span class="ruby-identifier">exists?</span> <span class="ruby-identifier">moduleName</span><span class="ruby-operator">+</span><span class="ruby-value str">"
|
195
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">funit_exists?</span>(<span class="ruby-identifier">moduleName</span>)
|
196
|
+
<span class="ruby-constant">File</span>.<span class="ruby-identifier">exists?</span> <span class="ruby-identifier">moduleName</span><span class="ruby-operator">+</span><span class="ruby-value str">".fun"</span>
|
197
197
|
<span class="ruby-keyword kw">end</span>
|
198
198
|
</pre>
|
199
199
|
</div>
|
@@ -224,8 +224,8 @@ Class <a href="Funit/TestSuite.html" class="link">Funit::TestSuite</a><br />
|
|
224
224
|
<span class="ruby-keyword kw">end</span>
|
225
225
|
|
226
226
|
<span class="ruby-identifier">moduleNames</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">mod</span><span class="ruby-operator">|</span>
|
227
|
-
<span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">
|
228
|
-
<span class="ruby-identifier">errorMessage</span> = <span class="ruby-value str">"Error: could not find test suite \#{mod}
|
227
|
+
<span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">funit_exists?</span>(<span class="ruby-identifier">mod</span>)
|
228
|
+
<span class="ruby-identifier">errorMessage</span> = <span class="ruby-value str">"Error: could not find test suite \#{mod}.fun\nTest suites available in this directory:\n\#{requestedModules([]).join(' ')}\n\nUsage: \#{File.basename $0} [test names (w/o .fun suffix)]\n"</span>
|
229
229
|
<span class="ruby-identifier">raise</span> <span class="ruby-identifier">errorMessage</span>
|
230
230
|
<span class="ruby-keyword kw">end</span>
|
231
231
|
<span class="ruby-keyword kw">end</span>
|
@@ -253,7 +253,7 @@ Class <a href="Funit/TestSuite.html" class="link">Funit::TestSuite</a><br />
|
|
253
253
|
<span class="ruby-comment cmt"># File lib/funit/functions.rb, line 33</span>
|
254
254
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">requestedModules</span>(<span class="ruby-identifier">moduleNames</span>)
|
255
255
|
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">moduleNames</span>.<span class="ruby-identifier">empty?</span>)
|
256
|
-
<span class="ruby-identifier">moduleNames</span> = <span class="ruby-constant">Dir</span>[<span class="ruby-value str">"
|
256
|
+
<span class="ruby-identifier">moduleNames</span> = <span class="ruby-constant">Dir</span>[<span class="ruby-value str">"*.fun"</span>].<span class="ruby-identifier">each</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">mod</span><span class="ruby-operator">|</span> <span class="ruby-identifier">mod</span>.<span class="ruby-identifier">chomp!</span> <span class="ruby-value str">".fun"</span> }
|
257
257
|
<span class="ruby-keyword kw">end</span>
|
258
258
|
<span class="ruby-identifier">moduleNames</span>
|
259
259
|
<span class="ruby-keyword kw">end</span>
|
@@ -267,7 +267,7 @@ Class <a href="Funit/TestSuite.html" class="link">Funit::TestSuite</a><br />
|
|
267
267
|
|
268
268
|
<div class="method-heading">
|
269
269
|
<a href="#M000001" class="method-signature">
|
270
|
-
<span class="method-name">
|
270
|
+
<span class="method-name">run_tests</span><span class="method-args">()</span>
|
271
271
|
</a>
|
272
272
|
</div>
|
273
273
|
|
@@ -277,14 +277,12 @@ Class <a href="Funit/TestSuite.html" class="link">Funit::TestSuite</a><br />
|
|
277
277
|
<div class="method-source-code" id="M000001-source">
|
278
278
|
<pre>
|
279
279
|
<span class="ruby-comment cmt"># File lib/funit.rb, line 18</span>
|
280
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">
|
281
|
-
<span class="ruby-constant">Compiler</span>.<span class="ruby-identifier">new</span
|
280
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">run_tests</span>
|
281
|
+
<span class="ruby-constant">Compiler</span>.<span class="ruby-identifier">new</span><span class="ruby-comment cmt"># a test for compiler env set (remove this later)</span>
|
282
282
|
<span class="ruby-identifier">writeTestRunner</span>(<span class="ruby-identifier">testSuites</span> = <span class="ruby-identifier">parseCommandLine</span>)
|
283
283
|
|
284
|
-
<span class="ruby-comment cmt"># convert each
|
285
|
-
<span class="ruby-identifier">testSuites</span>.<span class="ruby-identifier">each</span> <span class="ruby-
|
286
|
-
<span class="ruby-identifier">testSuiteF90</span> = <span class="ruby-constant">TestSuite</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">testSuite</span>)
|
287
|
-
<span class="ruby-keyword kw">end</span>
|
284
|
+
<span class="ruby-comment cmt"># convert each *.fun file into a Fortran file:</span>
|
285
|
+
<span class="ruby-identifier">testSuites</span>.<span class="ruby-identifier">each</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">ts</span><span class="ruby-operator">|</span> <span class="ruby-constant">TestSuite</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">ts</span>) }
|
288
286
|
|
289
287
|
<span class="ruby-identifier">compileTests</span> <span class="ruby-identifier">testSuites</span>
|
290
288
|
|
@@ -311,7 +309,7 @@ Class <a href="Funit/TestSuite.html" class="link">Funit::TestSuite</a><br />
|
|
311
309
|
<pre>
|
312
310
|
<span class="ruby-comment cmt"># File lib/funit/functions.rb, line 113</span>
|
313
311
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">syntaxError</span>( <span class="ruby-identifier">message</span>, <span class="ruby-identifier">testSuite</span> )
|
314
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-node">"\n *Error: #{message} [#{testSuite}
|
312
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-node">"\n *Error: #{message} [#{testSuite}.fun:#$.]\n\n"</span>
|
315
313
|
<span class="ruby-keyword kw">end</span>
|
316
314
|
</pre>
|
317
315
|
</div>
|
@@ -334,7 +332,7 @@ Class <a href="Funit/TestSuite.html" class="link">Funit::TestSuite</a><br />
|
|
334
332
|
<pre>
|
335
333
|
<span class="ruby-comment cmt"># File lib/funit/functions.rb, line 117</span>
|
336
334
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">warning</span>( <span class="ruby-identifier">message</span>, <span class="ruby-identifier">testSuite</span> )
|
337
|
-
<span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">"\n *Warning: #{message} [#{testSuite}
|
335
|
+
<span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">"\n *Warning: #{message} [#{testSuite}.fun:#$.]"</span>
|
338
336
|
<span class="ruby-keyword kw">end</span>
|
339
337
|
</pre>
|
340
338
|
</div>
|
@@ -361,14 +359,14 @@ Class <a href="Funit/TestSuite.html" class="link">Funit::TestSuite</a><br />
|
|
361
359
|
<span class="ruby-constant">File</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-value str">"TestRunner.f90"</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exists?</span>(<span class="ruby-value str">"TestRunner.f90"</span>)
|
362
360
|
<span class="ruby-identifier">testRunner</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">new</span> <span class="ruby-value str">"TestRunner.f90"</span>, <span class="ruby-value str">"w"</span>
|
363
361
|
|
364
|
-
<span class="ruby-identifier">testRunner</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">"! TestRunner.f90 - runs
|
362
|
+
<span class="ruby-identifier">testRunner</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">"! TestRunner.f90 - runs test suites\n!\n! \#{File.basename $0} generated this file on \#{Time.now}.\n\nprogram TestRunner\n\n"</span>
|
365
363
|
|
366
|
-
<span class="ruby-identifier">testSuites</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">testSuite</span><span class="ruby-operator">|</span> <span class="ruby-identifier">testRunner</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">" use #{testSuite}
|
364
|
+
<span class="ruby-identifier">testSuites</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">testSuite</span><span class="ruby-operator">|</span> <span class="ruby-identifier">testRunner</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">" use #{testSuite}_fun"</span> }
|
367
365
|
|
368
366
|
<span class="ruby-identifier">testRunner</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">"\nimplicit none\n\ninteger :: numTests, numAsserts, numAssertsTested, numFailures\n"</span>
|
369
367
|
|
370
368
|
<span class="ruby-identifier">testSuites</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">testSuite</span><span class="ruby-operator">|</span>
|
371
|
-
<span class="ruby-identifier">testRunner</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">"\nprint *, \"\"\nprint *, \"\#{testSuite} test suite:\"\ncall
|
369
|
+
<span class="ruby-identifier">testRunner</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">"\nprint *, \"\"\nprint *, \"\#{testSuite} test suite:\"\ncall test_\#{testSuite}( numTests, &\nnumAsserts, numAssertsTested, numFailures )\nprint *, \"Passed\", numAssertsTested, \"of\", numAsserts, &\n\"possible asserts comprising\", &\nnumTests-numFailures, \"of\", numTests, \"tests.\"\n"</span>
|
372
370
|
<span class="ruby-keyword kw">end</span>
|
373
371
|
|
374
372
|
<span class="ruby-identifier">testRunner</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">"\n print *, \"\""</span>
|
@@ -263,7 +263,7 @@
|
|
263
263
|
<pre>
|
264
264
|
<span class="ruby-comment cmt"># File lib/funit/assertions.rb, line 61</span>
|
265
265
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">writeAssert</span>
|
266
|
-
<span class="ruby-value str">"\n! \#@type assertion\nnumAsserts = numAsserts + 1\nif (noAssertFailed) then\nif (\#@condition) then\nprint *, \" *\#@type failed* in test \#@testName &\n&[\#{@suiteName}
|
266
|
+
<span class="ruby-value str">"\n! \#@type assertion\nnumAsserts = numAsserts + 1\nif (noAssertFailed) then\nif (\#@condition) then\nprint *, \" *\#@type failed* in test \#@testName &\n&[\#{@suiteName}.fun:\#{@lineNumber.to_s}]\"\nprint *, \" \", \#@message\nprint *, \"\"\nnoAssertFailed = .false.\nnumFailures = numFailures + 1\nelse\nnumAssertsTested = numAssertsTested + 1\nendif\nendif\n"</span>
|
267
267
|
<span class="ruby-keyword kw">end</span>
|
268
268
|
</pre>
|
269
269
|
</div>
|
@@ -126,7 +126,7 @@
|
|
126
126
|
|
127
127
|
<div class="method-heading">
|
128
128
|
<a href="#M000025" class="method-signature">
|
129
|
-
<span class="method-name">new</span><span class="method-args">( name=ENV['
|
129
|
+
<span class="method-name">new</span><span class="method-args">( name=ENV['FC'] )</span>
|
130
130
|
</a>
|
131
131
|
</div>
|
132
132
|
|
@@ -136,8 +136,8 @@
|
|
136
136
|
<div class="method-source-code" id="M000025-source">
|
137
137
|
<pre>
|
138
138
|
<span class="ruby-comment cmt"># File lib/funit/functions.rb, line 17</span>
|
139
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>( <span class="ruby-identifier">name</span>=<span class="ruby-constant">ENV</span>[<span class="ruby-value str">'
|
140
|
-
<span class="ruby-identifier">errorMessage</span> = <span class="ruby-value str">"\nFortran compiler environment variable '
|
139
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>( <span class="ruby-identifier">name</span>=<span class="ruby-constant">ENV</span>[<span class="ruby-value str">'FC'</span>] )
|
140
|
+
<span class="ruby-identifier">errorMessage</span> = <span class="ruby-value str">"\nFortran compiler environment variable 'FC' not set:\n\nfor bourne-based shells: export FC=lf95 (in .profile)\nfor c-based shells: setenv FC lf95 (in .login)\nfor windows: set FC=C:\\\\Program Files\\\\lf95 (in autoexec.bat)\n\n"</span>
|
141
141
|
<span class="ruby-identifier">raise</span>(<span class="ruby-identifier">errorMessage</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@name</span> = <span class="ruby-identifier">name</span>
|
142
142
|
<span class="ruby-keyword kw">end</span>
|
143
143
|
</pre>
|
@@ -136,13 +136,13 @@
|
|
136
136
|
onclick="toggleCode('M000026-source');return false;">[Source]</a></p>
|
137
137
|
<div class="method-source-code" id="M000026-source">
|
138
138
|
<pre>
|
139
|
-
<span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line
|
139
|
+
<span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line 24</span>
|
140
140
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span> <span class="ruby-identifier">suiteName</span>
|
141
141
|
<span class="ruby-ivar">@lineNumber</span> = <span class="ruby-value str">'blank'</span>
|
142
142
|
<span class="ruby-ivar">@suiteName</span> = <span class="ruby-identifier">suiteName</span>
|
143
|
-
<span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">
|
144
|
-
<span class="ruby-constant">File</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">suiteName</span><span class="ruby-operator">+</span><span class="ruby-value str">"
|
145
|
-
<span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">suiteName</span><span class="ruby-operator">+</span><span class="ruby-value str">"
|
143
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">funit_exists?</span>(<span class="ruby-identifier">suiteName</span>)
|
144
|
+
<span class="ruby-constant">File</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">suiteName</span><span class="ruby-operator">+</span><span class="ruby-value str">".fun"</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exists?</span>(<span class="ruby-identifier">suiteName</span><span class="ruby-operator">+</span><span class="ruby-value str">"_fun.f90"</span>)
|
145
|
+
<span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">suiteName</span><span class="ruby-operator">+</span><span class="ruby-value str">"_fun.f90"</span>,<span class="ruby-value str">"w"</span>)
|
146
146
|
<span class="ruby-ivar">@tests</span>, <span class="ruby-ivar">@setup</span>, <span class="ruby-ivar">@teardown</span> = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>, <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>, <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>
|
147
147
|
<span class="ruby-identifier">topWrapper</span>
|
148
148
|
<span class="ruby-identifier">expand</span>
|
@@ -160,7 +160,7 @@
|
|
160
160
|
|
161
161
|
<div class="method-heading">
|
162
162
|
<a href="#M000032" class="method-signature">
|
163
|
-
<span class="method-name">aTest</span><span class="method-args">(testName,
|
163
|
+
<span class="method-name">aTest</span><span class="method-args">(testName, funit_contents)</span>
|
164
164
|
</a>
|
165
165
|
</div>
|
166
166
|
|
@@ -169,22 +169,22 @@
|
|
169
169
|
onclick="toggleCode('M000032-source');return false;">[Source]</a></p>
|
170
170
|
<div class="method-source-code" id="M000032-source">
|
171
171
|
<pre>
|
172
|
-
<span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line
|
173
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">aTest</span> <span class="ruby-identifier">testName</span>, <span class="ruby-identifier">
|
172
|
+
<span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line 124</span>
|
173
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">aTest</span> <span class="ruby-identifier">testName</span>, <span class="ruby-identifier">funit_contents</span>
|
174
174
|
<span class="ruby-ivar">@testName</span> = <span class="ruby-identifier">testName</span>
|
175
175
|
<span class="ruby-ivar">@tests</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">testName</span>
|
176
176
|
<span class="ruby-identifier">syntaxError</span>(<span class="ruby-value str">"test name #@testName not unique"</span>,<span class="ruby-ivar">@suiteName</span>) <span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@tests</span>.<span class="ruby-identifier">uniq!</span>)
|
177
177
|
|
178
|
-
<span class="ruby-identifier">puts</span> <span class="ruby-node">" subroutine
|
178
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-node">" subroutine #{testName}\n\n"</span>
|
179
179
|
|
180
180
|
<span class="ruby-identifier">numOfAsserts</span> = <span class="ruby-value">0</span>
|
181
181
|
|
182
|
-
<span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">line</span> = <span class="ruby-identifier">
|
182
|
+
<span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">line</span> = <span class="ruby-identifier">funit_contents</span>.<span class="ruby-identifier">shift</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">line</span> <span class="ruby-operator">!~</span> <span class="ruby-regexp re">/endTest/i</span>
|
183
183
|
<span class="ruby-keyword kw">case</span> <span class="ruby-identifier">line</span>
|
184
184
|
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">$commentLine</span>
|
185
185
|
<span class="ruby-identifier">puts</span> <span class="ruby-identifier">line</span>
|
186
186
|
<span class="ruby-keyword kw">when</span> <span class="ruby-regexp re">/Is(RealEqual|False|True|EqualWithin|Equal)/i</span>
|
187
|
-
<span class="ruby-ivar">@lineNumber</span> = <span class="ruby-ivar">@
|
187
|
+
<span class="ruby-ivar">@lineNumber</span> = <span class="ruby-ivar">@funit_TotalLines</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">funit_contents</span>.<span class="ruby-identifier">length</span>
|
188
188
|
<span class="ruby-identifier">numOfAsserts</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
189
189
|
<span class="ruby-identifier">puts</span> <span class="ruby-identifier">send</span>( <span class="ruby-identifier">$&</span>.<span class="ruby-identifier">downcase!</span>, <span class="ruby-identifier">line</span> )
|
190
190
|
<span class="ruby-keyword kw">else</span>
|
@@ -194,7 +194,7 @@
|
|
194
194
|
<span class="ruby-identifier">warning</span>(<span class="ruby-value str">"no asserts in test"</span>, <span class="ruby-ivar">@suiteName</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">numOfAsserts</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
195
195
|
|
196
196
|
<span class="ruby-identifier">puts</span> <span class="ruby-value str">"\n numTests = numTests + 1\n\n"</span>
|
197
|
-
<span class="ruby-identifier">puts</span> <span class="ruby-node">" end subroutine
|
197
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-node">" end subroutine #{testName}\n\n"</span>
|
198
198
|
<span class="ruby-keyword kw">end</span>
|
199
199
|
</pre>
|
200
200
|
</div>
|
@@ -206,7 +206,7 @@
|
|
206
206
|
|
207
207
|
<div class="method-heading">
|
208
208
|
<a href="#M000029" class="method-signature">
|
209
|
-
<span class="method-name">addtoSetup</span><span class="method-args">(
|
209
|
+
<span class="method-name">addtoSetup</span><span class="method-args">(funit_contents)</span>
|
210
210
|
</a>
|
211
211
|
</div>
|
212
212
|
|
@@ -215,9 +215,9 @@
|
|
215
215
|
onclick="toggleCode('M000029-source');return false;">[Source]</a></p>
|
216
216
|
<div class="method-source-code" id="M000029-source">
|
217
217
|
<pre>
|
218
|
-
<span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line
|
219
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addtoSetup</span> <span class="ruby-identifier">
|
220
|
-
<span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">line</span> = <span class="ruby-identifier">
|
218
|
+
<span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line 107</span>
|
219
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addtoSetup</span> <span class="ruby-identifier">funit_contents</span>
|
220
|
+
<span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">line</span> = <span class="ruby-identifier">funit_contents</span>.<span class="ruby-identifier">shift</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">line</span> <span class="ruby-operator">!~</span> <span class="ruby-regexp re">/endSetup/i</span>
|
221
221
|
<span class="ruby-ivar">@setup</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">line</span>
|
222
222
|
<span class="ruby-keyword kw">end</span>
|
223
223
|
<span class="ruby-keyword kw">end</span>
|
@@ -231,7 +231,7 @@
|
|
231
231
|
|
232
232
|
<div class="method-heading">
|
233
233
|
<a href="#M000030" class="method-signature">
|
234
|
-
<span class="method-name">addtoTeardown</span><span class="method-args">(
|
234
|
+
<span class="method-name">addtoTeardown</span><span class="method-args">(funit_contents)</span>
|
235
235
|
</a>
|
236
236
|
</div>
|
237
237
|
|
@@ -240,9 +240,9 @@
|
|
240
240
|
onclick="toggleCode('M000030-source');return false;">[Source]</a></p>
|
241
241
|
<div class="method-source-code" id="M000030-source">
|
242
242
|
<pre>
|
243
|
-
<span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line
|
244
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addtoTeardown</span> <span class="ruby-identifier">
|
245
|
-
<span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">line</span> = <span class="ruby-identifier">
|
243
|
+
<span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line 113</span>
|
244
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addtoTeardown</span> <span class="ruby-identifier">funit_contents</span>
|
245
|
+
<span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">line</span> = <span class="ruby-identifier">funit_contents</span>.<span class="ruby-identifier">shift</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">line</span> <span class="ruby-operator">!~</span> <span class="ruby-regexp re">/endTeardown/i</span>
|
246
246
|
<span class="ruby-ivar">@teardown</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">line</span>
|
247
247
|
<span class="ruby-keyword kw">end</span>
|
248
248
|
<span class="ruby-keyword kw">end</span>
|
@@ -265,7 +265,7 @@
|
|
265
265
|
onclick="toggleCode('M000033-source');return false;">[Source]</a></p>
|
266
266
|
<div class="method-source-code" id="M000033-source">
|
267
267
|
<pre>
|
268
|
-
<span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line
|
268
|
+
<span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line 151</span>
|
269
269
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">close</span>
|
270
270
|
<span class="ruby-identifier">puts</span> <span class="ruby-value str">"\n subroutine Setup"</span>
|
271
271
|
<span class="ruby-identifier">puts</span> <span class="ruby-ivar">@setup</span>
|
@@ -276,17 +276,17 @@
|
|
276
276
|
<span class="ruby-identifier">puts</span> <span class="ruby-ivar">@teardown</span>
|
277
277
|
<span class="ruby-identifier">puts</span> <span class="ruby-value str">" end subroutine Teardown\n\n"</span>
|
278
278
|
|
279
|
-
<span class="ruby-identifier">puts</span> <span class="ruby-value str">"\nsubroutine
|
279
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-value str">"\nsubroutine test_\#{@suiteName}( nTests, nAsserts, nAssertsTested, nFailures )\n\ninteger :: nTests\ninteger :: nAsserts\ninteger :: nAssertsTested\ninteger :: nFailures\n\ncontinue\n"</span>
|
280
280
|
|
281
281
|
<span class="ruby-ivar">@tests</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">testName</span><span class="ruby-operator">|</span>
|
282
282
|
<span class="ruby-identifier">puts</span> <span class="ruby-value str">"\n call Setup"</span>
|
283
|
-
<span class="ruby-identifier">puts</span> <span class="ruby-node">" call
|
283
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-node">" call #{testName}"</span>
|
284
284
|
<span class="ruby-identifier">puts</span> <span class="ruby-value str">" call Teardown"</span>
|
285
285
|
<span class="ruby-keyword kw">end</span>
|
286
286
|
|
287
|
-
<span class="ruby-identifier">puts</span> <span class="ruby-value str">"\nnTests = numTests\nnAsserts = numAsserts\nnAssertsTested = numAssertsTested\nnFailures = numFailures\n\nend subroutine
|
287
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-value str">"\nnTests = numTests\nnAsserts = numAsserts\nnAssertsTested = numAssertsTested\nnFailures = numFailures\n\nend subroutine test_\#{@suiteName}\n\nend module \#{@suiteName}_fun\n"</span>
|
288
288
|
<span class="ruby-keyword kw">super</span>
|
289
|
-
<span class="ruby-constant">File</span>.<span class="ruby-identifier">chmod</span>(<span class="ruby-value">0444</span>,<span class="ruby-ivar">@suiteName</span><span class="ruby-operator">+</span><span class="ruby-value str">"
|
289
|
+
<span class="ruby-constant">File</span>.<span class="ruby-identifier">chmod</span>(<span class="ruby-value">0444</span>,<span class="ruby-ivar">@suiteName</span><span class="ruby-operator">+</span><span class="ruby-value str">"_fun.f90"</span>)
|
290
290
|
<span class="ruby-keyword kw">end</span>
|
291
291
|
</pre>
|
292
292
|
</div>
|
@@ -307,35 +307,35 @@
|
|
307
307
|
onclick="toggleCode('M000028-source');return false;">[Source]</a></p>
|
308
308
|
<div class="method-source-code" id="M000028-source">
|
309
309
|
<pre>
|
310
|
-
<span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line
|
310
|
+
<span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line 64</span>
|
311
311
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">expand</span>
|
312
312
|
|
313
|
-
<span class="ruby-identifier">
|
314
|
-
<span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">
|
313
|
+
<span class="ruby-identifier">funit_file</span> = <span class="ruby-ivar">@suiteName</span><span class="ruby-operator">+</span><span class="ruby-value str">".fun"</span>
|
314
|
+
<span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span> <span class="ruby-node">"expanding #{funit_file}..."</span>
|
315
315
|
|
316
|
-
<span class="ruby-identifier">
|
317
|
-
<span class="ruby-ivar">@
|
316
|
+
<span class="ruby-identifier">funit_contents</span> = <span class="ruby-constant">IO</span>.<span class="ruby-identifier">readlines</span>(<span class="ruby-identifier">funit_file</span>)
|
317
|
+
<span class="ruby-ivar">@funit_TotalLines</span> = <span class="ruby-identifier">funit_contents</span>.<span class="ruby-identifier">length</span>
|
318
318
|
|
319
|
-
<span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">line</span> = <span class="ruby-identifier">
|
319
|
+
<span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">line</span> = <span class="ruby-identifier">funit_contents</span>.<span class="ruby-identifier">shift</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">line</span> <span class="ruby-operator">!~</span> <span class="ruby-identifier">$keyword</span>
|
320
320
|
<span class="ruby-identifier">puts</span> <span class="ruby-identifier">line</span>
|
321
321
|
<span class="ruby-keyword kw">end</span>
|
322
322
|
|
323
|
-
<span class="ruby-identifier">
|
323
|
+
<span class="ruby-identifier">funit_contents</span>.<span class="ruby-identifier">unshift</span> <span class="ruby-identifier">line</span>
|
324
324
|
|
325
325
|
<span class="ruby-identifier">puts</span> <span class="ruby-value str">" contains\n\n"</span>
|
326
326
|
|
327
|
-
<span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">line</span> = <span class="ruby-identifier">
|
327
|
+
<span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">line</span> = <span class="ruby-identifier">funit_contents</span>.<span class="ruby-identifier">shift</span>)
|
328
328
|
<span class="ruby-keyword kw">case</span> <span class="ruby-identifier">line</span>
|
329
329
|
<span class="ruby-keyword kw">when</span> <span class="ruby-identifier">$commentLine</span>
|
330
330
|
<span class="ruby-identifier">puts</span> <span class="ruby-identifier">line</span>
|
331
331
|
<span class="ruby-keyword kw">when</span> <span class="ruby-regexp re">/beginSetup/i</span>
|
332
|
-
<span class="ruby-identifier">addtoSetup</span> <span class="ruby-identifier">
|
332
|
+
<span class="ruby-identifier">addtoSetup</span> <span class="ruby-identifier">funit_contents</span>
|
333
333
|
<span class="ruby-keyword kw">when</span> <span class="ruby-regexp re">/beginTeardown/i</span>
|
334
|
-
<span class="ruby-identifier">addtoTeardown</span> <span class="ruby-identifier">
|
334
|
+
<span class="ruby-identifier">addtoTeardown</span> <span class="ruby-identifier">funit_contents</span>
|
335
335
|
<span class="ruby-keyword kw">when</span> <span class="ruby-regexp re">/XbeginTest\s+(\w+)/i</span>
|
336
|
-
<span class="ruby-identifier">ignoreTest</span>(<span class="ruby-identifier">$1</span>,<span class="ruby-identifier">
|
336
|
+
<span class="ruby-identifier">ignoreTest</span>(<span class="ruby-identifier">$1</span>,<span class="ruby-identifier">funit_contents</span>)
|
337
337
|
<span class="ruby-keyword kw">when</span> <span class="ruby-regexp re">/beginTest\s+(\w+)/i</span>
|
338
|
-
<span class="ruby-identifier">aTest</span>(<span class="ruby-identifier">$1</span>,<span class="ruby-identifier">
|
338
|
+
<span class="ruby-identifier">aTest</span>(<span class="ruby-identifier">$1</span>,<span class="ruby-identifier">funit_contents</span>)
|
339
339
|
<span class="ruby-keyword kw">when</span> <span class="ruby-regexp re">/beginTest/i</span>
|
340
340
|
<span class="ruby-identifier">syntaxError</span> <span class="ruby-value str">"no name given for beginTest"</span>, <span class="ruby-ivar">@suiteName</span>
|
341
341
|
<span class="ruby-keyword kw">when</span> <span class="ruby-regexp re">/end(Setup|Teardown|Test)/i</span>
|
@@ -347,7 +347,7 @@
|
|
347
347
|
<span class="ruby-keyword kw">end</span>
|
348
348
|
<span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt"># while</span>
|
349
349
|
|
350
|
-
<span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-
|
350
|
+
<span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">"done."</span>
|
351
351
|
|
352
352
|
<span class="ruby-keyword kw">end</span>
|
353
353
|
</pre>
|
@@ -360,7 +360,7 @@
|
|
360
360
|
|
361
361
|
<div class="method-heading">
|
362
362
|
<a href="#M000031" class="method-signature">
|
363
|
-
<span class="method-name">ignoreTest</span><span class="method-args">(testName,
|
363
|
+
<span class="method-name">ignoreTest</span><span class="method-args">(testName, funit_contents)</span>
|
364
364
|
</a>
|
365
365
|
</div>
|
366
366
|
|
@@ -369,10 +369,10 @@
|
|
369
369
|
onclick="toggleCode('M000031-source');return false;">[Source]</a></p>
|
370
370
|
<div class="method-source-code" id="M000031-source">
|
371
371
|
<pre>
|
372
|
-
<span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line
|
373
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">ignoreTest</span> <span class="ruby-identifier">testName</span>, <span class="ruby-identifier">
|
372
|
+
<span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line 119</span>
|
373
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">ignoreTest</span> <span class="ruby-identifier">testName</span>, <span class="ruby-identifier">funit_contents</span>
|
374
374
|
<span class="ruby-identifier">warning</span>(<span class="ruby-node">"Ignoring test: #{testName}"</span>, <span class="ruby-ivar">@suiteName</span>)
|
375
|
-
<span class="ruby-identifier">line</span> = <span class="ruby-identifier">
|
375
|
+
<span class="ruby-identifier">line</span> = <span class="ruby-identifier">funit_contents</span>.<span class="ruby-identifier">shift</span> <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">line</span> <span class="ruby-operator">!~</span> <span class="ruby-regexp re">/endTest/i</span>
|
376
376
|
<span class="ruby-keyword kw">end</span>
|
377
377
|
</pre>
|
378
378
|
</div>
|
@@ -393,9 +393,9 @@
|
|
393
393
|
onclick="toggleCode('M000027-source');return false;">[Source]</a></p>
|
394
394
|
<div class="method-source-code" id="M000027-source">
|
395
395
|
<pre>
|
396
|
-
<span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line
|
396
|
+
<span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line 36</span>
|
397
397
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">topWrapper</span>
|
398
|
-
<span class="ruby-identifier">puts</span> <span class="ruby-value str">"! \#{@suiteName}
|
398
|
+
<span class="ruby-identifier">puts</span> <span class="ruby-value str">"! \#{@suiteName}_fun.f90 - a unit test suite for \#{@suiteName}.f90\n!\n! \#{File.basename $0} generated this file from \#{@suiteName}.fun\n! at \#{Time.now}\n\nmodule \#{@suiteName}_fun\n\nuse \#{@suiteName}\n\nimplicit none\n\nlogical :: noAssertFailed\n\npublic :: test_\#@suiteName\n\nprivate\n\ninteger :: numTests = 0\ninteger :: numAsserts = 0\ninteger :: numAssertsTested = 0\ninteger :: numFailures = 0\n\n"</span>
|
399
399
|
<span class="ruby-keyword kw">end</span>
|
400
400
|
</pre>
|
401
401
|
</div>
|