fUnit 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. data/{LICENSE → COPYING} +21 -21
  2. data/README +26 -2
  3. data/Rakefile +97 -0
  4. data/docs/html/classes/Funit.html +390 -0
  5. data/docs/html/classes/Funit/Assertions.html +285 -0
  6. data/docs/html/classes/Funit/Compiler.html +160 -0
  7. data/docs/html/classes/Funit/Depend.html +441 -0
  8. data/docs/html/classes/Funit/TestSuite.html +417 -0
  9. data/docs/html/created.rid +1 -0
  10. data/docs/html/files/COPYING.html +563 -0
  11. data/docs/html/files/README.html +151 -0
  12. data/docs/html/files/lib/funit/assertions_rb.html +101 -0
  13. data/docs/html/files/lib/funit/fortran_deps_rb.html +107 -0
  14. data/docs/html/files/lib/funit/functions_rb.html +101 -0
  15. data/docs/html/files/lib/funit/test_suite_rb.html +101 -0
  16. data/docs/html/files/lib/funit_rb.html +111 -0
  17. data/docs/html/fr_class_index.html +31 -0
  18. data/docs/html/fr_file_index.html +33 -0
  19. data/docs/html/fr_method_index.html +59 -0
  20. data/docs/html/index.html +24 -0
  21. data/docs/html/rdoc-style.css +208 -0
  22. data/examples/CFD/FluxFunctions.f90 +35 -0
  23. data/examples/CFD/FluxFunctionsMT.f90 +336 -0
  24. data/examples/CFD/FluxFunctionsMT.ftk +49 -0
  25. data/examples/CFD/Gammas.f90 +8 -0
  26. data/examples/CFD/GasModel.f90 +17 -0
  27. data/examples/CFD/GasModelMT.f90 +173 -0
  28. data/examples/CFD/GasModelMT.ftk +22 -0
  29. data/examples/CFD/TestRunner +0 -0
  30. data/examples/CFD/TestRunner.f90 +23 -0
  31. data/examples/CFD/fluxfunctions.mod +45 -0
  32. data/examples/CFD/gammas.mod +20 -0
  33. data/examples/CFD/gasmodel.mod +30 -0
  34. data/examples/CFD/gasmodelmt.mod +27 -0
  35. data/examples/StopWatch/StopWatch.f90 +50 -0
  36. data/examples/StopWatch/StopWatchMT.f90 +343 -0
  37. data/examples/StopWatch/StopWatchMT.ftk +73 -0
  38. data/examples/StopWatch/TestRunner +0 -0
  39. data/examples/StopWatch/TestRunner.f90 +23 -0
  40. data/examples/StopWatch/stopwatch.mod +34 -0
  41. data/examples/StopWatch/stopwatchmt.mod +27 -0
  42. data/lib/funit.rb +1 -6
  43. data/lib/funit/fortran_deps.rb +112 -0
  44. data/lib/funit/functions.rb +2 -5
  45. data/tests/tc_fortran_deps.rb +2 -2
  46. metadata +73 -22
  47. data/INSTALL +0 -19
  48. data/lib/fortran_deps.rb +0 -109
@@ -0,0 +1,417 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: Funit::TestSuite</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">Funit::TestSuite</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/funit/test_suite_rb.html">
59
+ lib/funit/test_suite.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ File
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+
81
+
82
+
83
+ </div>
84
+
85
+ <div id="method-list">
86
+ <h3 class="section-bar">Methods</h3>
87
+
88
+ <div class="name-list">
89
+ <a href="#M000032">aTest</a>&nbsp;&nbsp;
90
+ <a href="#M000029">addtoSetup</a>&nbsp;&nbsp;
91
+ <a href="#M000030">addtoTeardown</a>&nbsp;&nbsp;
92
+ <a href="#M000033">close</a>&nbsp;&nbsp;
93
+ <a href="#M000028">expand</a>&nbsp;&nbsp;
94
+ <a href="#M000031">ignoreTest</a>&nbsp;&nbsp;
95
+ <a href="#M000026">new</a>&nbsp;&nbsp;
96
+ <a href="#M000027">topWrapper</a>&nbsp;&nbsp;
97
+ </div>
98
+ </div>
99
+
100
+ </div>
101
+
102
+
103
+ <!-- if includes -->
104
+ <div id="includes">
105
+ <h3 class="section-bar">Included Modules</h3>
106
+
107
+ <div id="includes-list">
108
+ <span class="include-name"><a href="../Funit.html">Funit</a></span>
109
+ </div>
110
+ </div>
111
+
112
+ <div id="section">
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+ <!-- if method_list -->
122
+ <div id="methods">
123
+ <h3 class="section-bar">Public Class methods</h3>
124
+
125
+ <div id="method-M000026" class="method-detail">
126
+ <a name="M000026"></a>
127
+
128
+ <div class="method-heading">
129
+ <a href="#M000026" class="method-signature">
130
+ <span class="method-name">new</span><span class="method-args">(suiteName)</span>
131
+ </a>
132
+ </div>
133
+
134
+ <div class="method-description">
135
+ <p><a class="source-toggle" href="#"
136
+ onclick="toggleCode('M000026-source');return false;">[Source]</a></p>
137
+ <div class="method-source-code" id="M000026-source">
138
+ <pre>
139
+ <span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line 9</span>
140
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span> <span class="ruby-identifier">suiteName</span>
141
+ <span class="ruby-ivar">@lineNumber</span> = <span class="ruby-value str">'blank'</span>
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">ftkExists?</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">&quot;MT.f90&quot;</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">&quot;MT.f90&quot;</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">&quot;MT.f90&quot;</span>,<span class="ruby-value str">&quot;w&quot;</span>)
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
+ <span class="ruby-identifier">topWrapper</span>
148
+ <span class="ruby-identifier">expand</span>
149
+ <span class="ruby-identifier">close</span>
150
+ <span class="ruby-keyword kw">end</span>
151
+ </pre>
152
+ </div>
153
+ </div>
154
+ </div>
155
+
156
+ <h3 class="section-bar">Public Instance methods</h3>
157
+
158
+ <div id="method-M000032" class="method-detail">
159
+ <a name="M000032"></a>
160
+
161
+ <div class="method-heading">
162
+ <a href="#M000032" class="method-signature">
163
+ <span class="method-name">aTest</span><span class="method-args">(testName, ftk)</span>
164
+ </a>
165
+ </div>
166
+
167
+ <div class="method-description">
168
+ <p><a class="source-toggle" href="#"
169
+ onclick="toggleCode('M000032-source');return false;">[Source]</a></p>
170
+ <div class="method-source-code" id="M000032-source">
171
+ <pre>
172
+ <span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line 109</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">ftk</span>
174
+ <span class="ruby-ivar">@testName</span> = <span class="ruby-identifier">testName</span>
175
+ <span class="ruby-ivar">@tests</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">testName</span>
176
+ <span class="ruby-identifier">syntaxError</span>(<span class="ruby-value str">&quot;test name #@testName not unique&quot;</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
+
178
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot; subroutine Test#{testName}\n\n&quot;</span>
179
+
180
+ <span class="ruby-identifier">numOfAsserts</span> = <span class="ruby-value">0</span>
181
+
182
+ <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">line</span> = <span class="ruby-identifier">ftk</span>.<span class="ruby-identifier">shift</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">line</span> <span class="ruby-operator">!~</span> <span class="ruby-regexp re">/endTest/i</span>
183
+ <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">line</span>
184
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">$commentLine</span>
185
+ <span class="ruby-identifier">puts</span> <span class="ruby-identifier">line</span>
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">@ftkTotalLines</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">ftk</span>.<span class="ruby-identifier">length</span>
188
+ <span class="ruby-identifier">numOfAsserts</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
189
+ <span class="ruby-identifier">puts</span> <span class="ruby-identifier">send</span>( <span class="ruby-identifier">$&amp;</span>.<span class="ruby-identifier">downcase!</span>, <span class="ruby-identifier">line</span> )
190
+ <span class="ruby-keyword kw">else</span>
191
+ <span class="ruby-identifier">puts</span> <span class="ruby-identifier">line</span>
192
+ <span class="ruby-keyword kw">end</span>
193
+ <span class="ruby-keyword kw">end</span>
194
+ <span class="ruby-identifier">warning</span>(<span class="ruby-value str">&quot;no asserts in test&quot;</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
+
196
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;\n numTests = numTests + 1\n\n&quot;</span>
197
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot; end subroutine Test#{testName}\n\n&quot;</span>
198
+ <span class="ruby-keyword kw">end</span>
199
+ </pre>
200
+ </div>
201
+ </div>
202
+ </div>
203
+
204
+ <div id="method-M000029" class="method-detail">
205
+ <a name="M000029"></a>
206
+
207
+ <div class="method-heading">
208
+ <a href="#M000029" class="method-signature">
209
+ <span class="method-name">addtoSetup</span><span class="method-args">(ftk)</span>
210
+ </a>
211
+ </div>
212
+
213
+ <div class="method-description">
214
+ <p><a class="source-toggle" href="#"
215
+ onclick="toggleCode('M000029-source');return false;">[Source]</a></p>
216
+ <div class="method-source-code" id="M000029-source">
217
+ <pre>
218
+ <span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line 92</span>
219
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addtoSetup</span> <span class="ruby-identifier">ftk</span>
220
+ <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">line</span> = <span class="ruby-identifier">ftk</span>.<span class="ruby-identifier">shift</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">line</span> <span class="ruby-operator">!~</span> <span class="ruby-regexp re">/endSetup/i</span>
221
+ <span class="ruby-ivar">@setup</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">line</span>
222
+ <span class="ruby-keyword kw">end</span>
223
+ <span class="ruby-keyword kw">end</span>
224
+ </pre>
225
+ </div>
226
+ </div>
227
+ </div>
228
+
229
+ <div id="method-M000030" class="method-detail">
230
+ <a name="M000030"></a>
231
+
232
+ <div class="method-heading">
233
+ <a href="#M000030" class="method-signature">
234
+ <span class="method-name">addtoTeardown</span><span class="method-args">(ftk)</span>
235
+ </a>
236
+ </div>
237
+
238
+ <div class="method-description">
239
+ <p><a class="source-toggle" href="#"
240
+ onclick="toggleCode('M000030-source');return false;">[Source]</a></p>
241
+ <div class="method-source-code" id="M000030-source">
242
+ <pre>
243
+ <span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line 98</span>
244
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addtoTeardown</span> <span class="ruby-identifier">ftk</span>
245
+ <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">line</span> = <span class="ruby-identifier">ftk</span>.<span class="ruby-identifier">shift</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">line</span> <span class="ruby-operator">!~</span> <span class="ruby-regexp re">/endTeardown/i</span>
246
+ <span class="ruby-ivar">@teardown</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">line</span>
247
+ <span class="ruby-keyword kw">end</span>
248
+ <span class="ruby-keyword kw">end</span>
249
+ </pre>
250
+ </div>
251
+ </div>
252
+ </div>
253
+
254
+ <div id="method-M000033" class="method-detail">
255
+ <a name="M000033"></a>
256
+
257
+ <div class="method-heading">
258
+ <a href="#M000033" class="method-signature">
259
+ <span class="method-name">close</span><span class="method-args">()</span>
260
+ </a>
261
+ </div>
262
+
263
+ <div class="method-description">
264
+ <p><a class="source-toggle" href="#"
265
+ onclick="toggleCode('M000033-source');return false;">[Source]</a></p>
266
+ <div class="method-source-code" id="M000033-source">
267
+ <pre>
268
+ <span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line 136</span>
269
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">close</span>
270
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;\n subroutine Setup&quot;</span>
271
+ <span class="ruby-identifier">puts</span> <span class="ruby-ivar">@setup</span>
272
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot; noAssertFailed = .true.&quot;</span>
273
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot; end subroutine Setup\n\n&quot;</span>
274
+
275
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;\n subroutine Teardown&quot;</span>
276
+ <span class="ruby-identifier">puts</span> <span class="ruby-ivar">@teardown</span>
277
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot; end subroutine Teardown\n\n&quot;</span>
278
+
279
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;\nsubroutine MT\#{@suiteName}( nTests, nAsserts, nAssertsTested, nFailures )\n\ninteger :: nTests\ninteger :: nAsserts\ninteger :: nAssertsTested\ninteger :: nFailures\n\ncontinue\n&quot;</span>
280
+
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
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;\n call Setup&quot;</span>
283
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot; call Test#{testName}&quot;</span>
284
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot; call Teardown&quot;</span>
285
+ <span class="ruby-keyword kw">end</span>
286
+
287
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;\nnTests = numTests\nnAsserts = numAsserts\nnAssertsTested = numAssertsTested\nnFailures = numFailures\n\nend subroutine MT\#{@suiteName}\n\nend module \#{@suiteName}MT\n&quot;</span>
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">&quot;MT.f90&quot;</span>)
290
+ <span class="ruby-keyword kw">end</span>
291
+ </pre>
292
+ </div>
293
+ </div>
294
+ </div>
295
+
296
+ <div id="method-M000028" class="method-detail">
297
+ <a name="M000028"></a>
298
+
299
+ <div class="method-heading">
300
+ <a href="#M000028" class="method-signature">
301
+ <span class="method-name">expand</span><span class="method-args">()</span>
302
+ </a>
303
+ </div>
304
+
305
+ <div class="method-description">
306
+ <p><a class="source-toggle" href="#"
307
+ onclick="toggleCode('M000028-source');return false;">[Source]</a></p>
308
+ <div class="method-source-code" id="M000028-source">
309
+ <pre>
310
+ <span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line 49</span>
311
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">expand</span>
312
+
313
+ <span class="ruby-identifier">ftkFile</span> = <span class="ruby-ivar">@suiteName</span><span class="ruby-operator">+</span><span class="ruby-value str">&quot;MT.ftk&quot;</span>
314
+ <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;parsing #{ftkFile}&quot;</span>
315
+
316
+ <span class="ruby-identifier">ftk</span> = <span class="ruby-constant">IO</span>.<span class="ruby-identifier">readlines</span>(<span class="ruby-identifier">ftkFile</span>)
317
+ <span class="ruby-ivar">@ftkTotalLines</span> = <span class="ruby-identifier">ftk</span>.<span class="ruby-identifier">length</span>
318
+
319
+ <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">line</span> = <span class="ruby-identifier">ftk</span>.<span class="ruby-identifier">shift</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">line</span> <span class="ruby-operator">!~</span> <span class="ruby-identifier">$keyword</span>
320
+ <span class="ruby-identifier">puts</span> <span class="ruby-identifier">line</span>
321
+ <span class="ruby-keyword kw">end</span>
322
+
323
+ <span class="ruby-identifier">ftk</span>.<span class="ruby-identifier">unshift</span> <span class="ruby-identifier">line</span>
324
+
325
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot; contains\n\n&quot;</span>
326
+
327
+ <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">line</span> = <span class="ruby-identifier">ftk</span>.<span class="ruby-identifier">shift</span>)
328
+ <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">line</span>
329
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">$commentLine</span>
330
+ <span class="ruby-identifier">puts</span> <span class="ruby-identifier">line</span>
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">ftk</span>
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">ftk</span>
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">ftk</span>)
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">ftk</span>)
339
+ <span class="ruby-keyword kw">when</span> <span class="ruby-regexp re">/beginTest/i</span>
340
+ <span class="ruby-identifier">syntaxError</span> <span class="ruby-value str">&quot;no name given for beginTest&quot;</span>, <span class="ruby-ivar">@suiteName</span>
341
+ <span class="ruby-keyword kw">when</span> <span class="ruby-regexp re">/end(Setup|Teardown|Test)/i</span>
342
+ <span class="ruby-identifier">syntaxError</span> <span class="ruby-value str">&quot;no matching begin#$1 for an #$&amp;&quot;</span>, <span class="ruby-ivar">@suiteName</span>
343
+ <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">$assertRegEx</span>
344
+ <span class="ruby-identifier">syntaxError</span> <span class="ruby-value str">&quot;#$1 assert not in a test block&quot;</span>, <span class="ruby-ivar">@suiteName</span>
345
+ <span class="ruby-keyword kw">else</span>
346
+ <span class="ruby-identifier">puts</span> <span class="ruby-identifier">line</span>
347
+ <span class="ruby-keyword kw">end</span>
348
+ <span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt"># while</span>
349
+
350
+ <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;completed #{ftkFile}&quot;</span>
351
+
352
+ <span class="ruby-keyword kw">end</span>
353
+ </pre>
354
+ </div>
355
+ </div>
356
+ </div>
357
+
358
+ <div id="method-M000031" class="method-detail">
359
+ <a name="M000031"></a>
360
+
361
+ <div class="method-heading">
362
+ <a href="#M000031" class="method-signature">
363
+ <span class="method-name">ignoreTest</span><span class="method-args">(testName, ftk)</span>
364
+ </a>
365
+ </div>
366
+
367
+ <div class="method-description">
368
+ <p><a class="source-toggle" href="#"
369
+ onclick="toggleCode('M000031-source');return false;">[Source]</a></p>
370
+ <div class="method-source-code" id="M000031-source">
371
+ <pre>
372
+ <span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line 104</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">ftk</span>
374
+ <span class="ruby-identifier">warning</span>(<span class="ruby-node">&quot;Ignoring test: #{testName}&quot;</span>, <span class="ruby-ivar">@suiteName</span>)
375
+ <span class="ruby-identifier">line</span> = <span class="ruby-identifier">ftk</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
+ <span class="ruby-keyword kw">end</span>
377
+ </pre>
378
+ </div>
379
+ </div>
380
+ </div>
381
+
382
+ <div id="method-M000027" class="method-detail">
383
+ <a name="M000027"></a>
384
+
385
+ <div class="method-heading">
386
+ <a href="#M000027" class="method-signature">
387
+ <span class="method-name">topWrapper</span><span class="method-args">()</span>
388
+ </a>
389
+ </div>
390
+
391
+ <div class="method-description">
392
+ <p><a class="source-toggle" href="#"
393
+ onclick="toggleCode('M000027-source');return false;">[Source]</a></p>
394
+ <div class="method-source-code" id="M000027-source">
395
+ <pre>
396
+ <span class="ruby-comment cmt"># File lib/funit/test_suite.rb, line 21</span>
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">&quot;! \#{@suiteName}MT.f90 - a Fortran mobility test suite for \#{@suiteName}.f90\n!\n! [dynamically generated from \#{@suiteName}MT.ftk\n! by \#{File.basename $0} Ruby script \#{Time.now}]\n\nmodule \#{@suiteName}MT\n\nuse \#{@suiteName}\n\nimplicit none\n\nprivate\n\npublic :: MT\#{@suiteName}\n\nlogical :: noAssertFailed\n\ninteger :: numTests = 0\ninteger :: numAsserts = 0\ninteger :: numAssertsTested = 0\ninteger :: numFailures = 0\n\n&quot;</span>
399
+ <span class="ruby-keyword kw">end</span>
400
+ </pre>
401
+ </div>
402
+ </div>
403
+ </div>
404
+
405
+
406
+ </div>
407
+
408
+
409
+ </div>
410
+
411
+
412
+ <div id="validator-badges">
413
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
414
+ </div>
415
+
416
+ </body>
417
+ </html>
@@ -0,0 +1 @@
1
+ Sun Apr 09 01:04:11 EDT 2006
@@ -0,0 +1,563 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>File: COPYING</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="fileHeader">
50
+ <h1>COPYING</h1>
51
+ <table class="header-table">
52
+ <tr class="top-aligned-row">
53
+ <td><strong>Path:</strong></td>
54
+ <td>COPYING
55
+ </td>
56
+ </tr>
57
+ <tr class="top-aligned-row">
58
+ <td><strong>Last Update:</strong></td>
59
+ <td>Sat Apr 08 08:57:06 EDT 2006</td>
60
+ </tr>
61
+ </table>
62
+ </div>
63
+ <!-- banner header -->
64
+
65
+ <div id="bodyContent">
66
+
67
+
68
+
69
+ <div id="contextContent">
70
+
71
+ <div id="description">
72
+ <p>
73
+ NASA OPEN SOURCE AGREEMENT VERSION 1.3
74
+ </p>
75
+ <p>
76
+ THIS OPEN SOURCE AGREEMENT (&quot;AGREEMENT&quot;) DEFINES THE RIGHTS OF
77
+ USE, REPRODUCTION, DISTRIBUTION, MODIFICATION AND REDISTRIBUTION OF CERTAIN
78
+ COMPUTER SOFTWARE ORIGINALLY RELEASED BY THE UNITED STATES GOVERNMENT AS
79
+ REPRESENTED BY THE GOVERNMENT AGENCY LISTED BELOW (&quot;GOVERNMENT
80
+ AGENCY&quot;). THE UNITED STATES GOVERNMENT, AS REPRESENTED BY GOVERNMENT
81
+ AGENCY, IS AN INTENDED THIRD-PARTY BENEFICIARY OF ALL SUBSEQUENT
82
+ DISTRIBUTIONS OR REDISTRIBUTIONS OF THE SUBJECT SOFTWARE. ANYONE WHO USES,
83
+ REPRODUCES, DISTRIBUTES, MODIFIES OR REDISTRIBUTES THE SUBJECT SOFTWARE, AS
84
+ DEFINED HEREIN, OR ANY PART THEREOF, IS, BY THAT ACTION, ACCEPTING IN FULL
85
+ THE RESPONSIBILITIES AND OBLIGATIONS CONTAINED IN THIS AGREEMENT.
86
+ </p>
87
+ <p>
88
+ Government Agency: NASA Langley Research Center Government Agency Original
89
+ Software Designation: LAR-17081-1 Government Agency Original Software
90
+ Title: fUnit User Registration Requested: please see clause 3.F. Government
91
+ Agency Point of Contact: funit-support@rubyforge.org
92
+ </p>
93
+ <ol>
94
+ <li>DEFINITIONS
95
+
96
+ </li>
97
+ </ol>
98
+ <ol>
99
+ <li type="A">&quot;Contributor&quot; means Government Agency, as the developer of the
100
+
101
+ </li>
102
+ </ol>
103
+ <p>
104
+ Original Software, and any entity that makes a Modification.
105
+ </p>
106
+ <ol>
107
+ <li type="A">&quot;Covered Patents&quot; mean patent claims licensable by a Contributor
108
+
109
+ </li>
110
+ </ol>
111
+ <p>
112
+ that are necessarily infringed by the use or sale of its Modification alone
113
+ or when combined with the Subject Software.
114
+ </p>
115
+ <ol>
116
+ <li type="A">&quot;Display&quot; means the showing of a copy of the Subject Software,
117
+
118
+ </li>
119
+ </ol>
120
+ <p>
121
+ either directly or by means of an image, or any other device.
122
+ </p>
123
+ <ol>
124
+ <li type="A">&quot;Distribution&quot; means conveyance or transfer of the Subject
125
+
126
+ </li>
127
+ </ol>
128
+ <p>
129
+ Software, regardless of means, to another.
130
+ </p>
131
+ <ol>
132
+ <li type="A">&quot;Larger Work&quot; means computer software that combines Subject
133
+
134
+ </li>
135
+ </ol>
136
+ <p>
137
+ Software, or portions thereof, with software separate from the Subject
138
+ Software that is not governed by the terms of this Agreement.
139
+ </p>
140
+ <ol>
141
+ <li type="A">&quot;Modification&quot; means any alteration of, including addition to or
142
+
143
+ </li>
144
+ </ol>
145
+ <p>
146
+ deletion from, the substance or structure of either the Original Software
147
+ or Subject Software, and includes derivative works, as that term is defined
148
+ in the Copyright Statute, 17 USC 101. However, the act of including Subject
149
+ Software as part of a Larger Work does not in and of itself constitute a
150
+ Modification.
151
+ </p>
152
+ <ol>
153
+ <li type="A">&quot;Original Software&quot; means the computer software first released
154
+
155
+ </li>
156
+ </ol>
157
+ <p>
158
+ under this Agreement by Government Agency with Government Agency
159
+ designation NASA and entitled fUnit, including source code, object code and
160
+ accompanying documentation, if any.
161
+ </p>
162
+ <ol>
163
+ <li type="A">&quot;Recipient&quot; means anyone who acquires the Subject Software under
164
+
165
+ </li>
166
+ </ol>
167
+ <p>
168
+ this Agreement, including all Contributors.
169
+ </p>
170
+ <ol>
171
+ <li type="A">&quot;Redistribution&quot; means Distribution of the Subject Software after
172
+ a
173
+
174
+ </li>
175
+ </ol>
176
+ <p>
177
+ Modification has been made.
178
+ </p>
179
+ <ol>
180
+ <li type="A">&quot;Reproduction&quot; means the making of a counterpart, image or copy
181
+ of
182
+
183
+ </li>
184
+ </ol>
185
+ <p>
186
+ the Subject Software.
187
+ </p>
188
+ <ol>
189
+ <li type="A">&quot;Sale&quot; means the exchange of the Subject Software for money or
190
+
191
+ </li>
192
+ </ol>
193
+ <p>
194
+ equivalent value.
195
+ </p>
196
+ <ol>
197
+ <li type="A">&quot;Subject Software&quot; means the Original Software, Modifications, or
198
+
199
+ </li>
200
+ </ol>
201
+ <p>
202
+ any respective parts thereof.
203
+ </p>
204
+ <ol>
205
+ <li type="A">&quot;Use&quot; means the application or employment of the Subject Software
206
+
207
+ </li>
208
+ </ol>
209
+ <p>
210
+ for any purpose.
211
+ </p>
212
+ <ol>
213
+ <li>GRANT OF RIGHTS
214
+
215
+ </li>
216
+ </ol>
217
+ <ol>
218
+ <li type="A">Under Non-Patent Rights: Subject to the terms and conditions of
219
+
220
+ </li>
221
+ </ol>
222
+ <p>
223
+ this Agreement, each Contributor, with respect to its own contribution to
224
+ the Subject Software, hereby grants to each Recipient a non-exclusive,
225
+ world-wide, royalty-free license to engage in the following activities
226
+ pertaining to the Subject Software:
227
+ </p>
228
+ <pre>
229
+ 1. Use
230
+ 2. Distribution
231
+ 3. Reproduction
232
+ 4. Modification
233
+ 5. Redistribution
234
+ 6. Display
235
+ </pre>
236
+ <ol>
237
+ <li type="A">Under Patent Rights: Subject to the terms and conditions of this
238
+
239
+ </li>
240
+ </ol>
241
+ <p>
242
+ Agreement, each Contributor, with respect to its own contribution to the
243
+ Subject Software, hereby grants to each Recipient under Covered Patents a
244
+ non-exclusive, world-wide, royalty-free license to engage in the following
245
+ activities pertaining to the Subject Software:
246
+ </p>
247
+ <pre>
248
+ 1. Use
249
+ 2. Distribution
250
+ 3. Reproduction
251
+ 4. Sale
252
+ 5. Offer for Sale
253
+ </pre>
254
+ <ol>
255
+ <li type="A">The rights granted under Paragraph B. also apply to the combination
256
+
257
+ </li>
258
+ </ol>
259
+ <p>
260
+ of a Contributor&#8217;s Modification and the Subject Software if, at the
261
+ time the Modification is added by the Contributor, the addition of such
262
+ Modification causes the combination to be covered by the Covered Patents.
263
+ It does not apply to any other combinations that include a Modification.
264
+ </p>
265
+ <ol>
266
+ <li type="A">The rights granted in Paragraphs A. and B. allow the Recipient to
267
+
268
+ </li>
269
+ </ol>
270
+ <p>
271
+ sublicense those same rights. Such sublicense must be under the same terms
272
+ and conditions of this Agreement.
273
+ </p>
274
+ <ol>
275
+ <li>OBLIGATIONS OF RECIPIENT
276
+
277
+ </li>
278
+ </ol>
279
+ <ol>
280
+ <li type="A">Distribution or Redistribution of the Subject Software must be made
281
+
282
+ </li>
283
+ </ol>
284
+ <p>
285
+ under this Agreement except for additions covered under paragraph 3H.
286
+ </p>
287
+ <ol>
288
+ <li>Whenever a Recipient distributes or redistributes the Subject
289
+
290
+ <pre>
291
+ Software, a copy of this Agreement must be included with each copy
292
+ of the Subject Software; and
293
+ </pre>
294
+ </li>
295
+ <li>If Recipient distributes or redistributes the Subject Software in
296
+
297
+ <pre>
298
+ any form other than source code, Recipient must also make the
299
+ source code freely available, and must provide with each copy of
300
+ the Subject Software information on how to obtain the source code
301
+ in a reasonable manner on or through a medium customarily used for
302
+ software exchange.
303
+ </pre>
304
+ </li>
305
+ </ol>
306
+ <ol>
307
+ <li type="A">Each Recipient must ensure that the following copyright notice
308
+
309
+ </li>
310
+ </ol>
311
+ <p>
312
+ appears prominently in the Subject Software:
313
+ </p>
314
+ <pre>
315
+ Copyright 2006 United States Government as represented by
316
+ NASA Langley Research Center. No copyright is claimed in
317
+ the United States under Title 17, U.S. Code. All Other Rights
318
+ Reserved.
319
+ </pre>
320
+ <ol>
321
+ <li type="A">Each Contributor must characterize its alteration of the Subject
322
+
323
+ </li>
324
+ </ol>
325
+ <p>
326
+ Software as a Modification and must identify itself as the originator of
327
+ its Modification in a manner that reasonably allows subsequent Recipients
328
+ to identify the originator of the Modification. In fulfillment of these
329
+ requirements, Contributor must include a file (e.g., a change log file)
330
+ that describes the alterations made and the date of the alterations,
331
+ identifies Contributor as originator of the alterations, and consents to
332
+ characterization of the alterations as a Modification, for example, by
333
+ including a statement that the Modification is derived, directly or
334
+ indirectly, from Original Software provided by Government Agency. Once
335
+ consent is granted, it may not thereafter be revoked.
336
+ </p>
337
+ <ol>
338
+ <li type="A">A Contributor may add its own copyright notice to the Subject
339
+
340
+ </li>
341
+ </ol>
342
+ <p>
343
+ Software. Once a copyright notice has been added to the Subject Software, a
344
+ Recipient may not remove it without the express permission of the
345
+ Contributor who added the notice.
346
+ </p>
347
+ <ol>
348
+ <li type="A">A Recipient may not make any representation in the Subject Software
349
+
350
+ </li>
351
+ </ol>
352
+ <p>
353
+ or in any promotional, advertising or other material that may be construed
354
+ as an endorsement by Government Agency or by any prior Recipient of any
355
+ product or service provided by Recipient, or that may seek to obtain
356
+ commercial advantage by the fact of Government Agency&#8217;s or a prior
357
+ Recipient&#8217;s participation in this Agreement.
358
+ </p>
359
+ <ol>
360
+ <li type="A">In an effort to track usage and maintain accurate records of the
361
+
362
+ </li>
363
+ </ol>
364
+ <p>
365
+ Subject Software, each Recipient, upon receipt of the Subject Software, is
366
+ requested to provide Government Agency, by e-mail to the Government Agency
367
+ Point of Contact listed in clause 5.F., the following information: name,
368
+ institution (if applicable), postal code, and country. Recipient&#8217;s
369
+ name and personal information shall be used for statistical purposes only.
370
+ Once a Recipient makes a Modification available, it is requested that the
371
+ Recipient inform Government Agency, by e-mail to the Government Agency
372
+ Point of Contact listed in clause 5.F., how to access the Modification.
373
+ </p>
374
+ <ol>
375
+ <li type="A">Each Contributor represents that that its Modification is believed
376
+
377
+ </li>
378
+ </ol>
379
+ <p>
380
+ to be Contributor&#8217;s original creation and does not violate any
381
+ existing agreements, regulations, statutes or rules, and further that
382
+ Contributor has sufficient rights to grant the rights conveyed by this
383
+ Agreement.
384
+ </p>
385
+ <ol>
386
+ <li type="A">A Recipient may choose to offer, and to charge a fee for, warranty,
387
+
388
+ </li>
389
+ </ol>
390
+ <p>
391
+ support, indemnity and/or liability obligations to one or more other
392
+ Recipients of the Subject Software. A Recipient may do so, however, only on
393
+ its own behalf and not on behalf of Government Agency or any other
394
+ Recipient. Such a Recipient must make it absolutely clear that any such
395
+ warranty, support, indemnity and/or liability obligation is offered by that
396
+ Recipient alone. Further, such Recipient agrees to indemnify Government
397
+ Agency and every other Recipient for any liability incurred by them as a
398
+ result of warranty, support, indemnity and/or liability offered by such
399
+ Recipient.
400
+ </p>
401
+ <ol>
402
+ <li type="A">A Recipient may create a Larger Work by combining Subject Software
403
+
404
+ </li>
405
+ </ol>
406
+ <p>
407
+ with separate software not governed by the terms of this agreement and
408
+ distribute the Larger Work as a single product. In such case, the Recipient
409
+ must make sure Subject Software, or portions thereof, included in the
410
+ Larger Work is subject to this Agreement.
411
+ </p>
412
+ <ol>
413
+ <li type="A">Notwithstanding any provisions contained herein, Recipient is
414
+
415
+ </li>
416
+ </ol>
417
+ <p>
418
+ hereby put on notice that export of any goods or technical data from the
419
+ United States may require some form of export license from the U.S.
420
+ Government. Failure to obtain necessary export licenses may result in
421
+ criminal liability under U.S. laws. Government Agency neither represents
422
+ that a license shall not be required nor that, if required, it shall be
423
+ issued. Nothing granted herein provides any such export license.
424
+ </p>
425
+ <ol>
426
+ <li>DISCLAIMER OF WARRANTIES AND LIABILITIES; WAIVER AND INDEMNIFICATION
427
+
428
+ </li>
429
+ </ol>
430
+ <ol>
431
+ <li type="A">No Warranty: THE SUBJECT SOFTWARE IS PROVIDED &quot;AS IS&quot; WITHOUT ANY
432
+
433
+ </li>
434
+ </ol>
435
+ <p>
436
+ WARRANTY OF ANY KIND, EITHER EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING,
437
+ BUT NOT LIMITED TO, ANY WARRANTY THAT THE SUBJECT SOFTWARE WILL CONFORM TO
438
+ SPECIFICATIONS, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
439
+ PARTICULAR PURPOSE, OR FREEDOM FROM INFRINGEMENT, ANY WARRANTY THAT THE
440
+ SUBJECT SOFTWARE WILL BE ERROR FREE, OR ANY WARRANTY THAT DOCUMENTATION, IF
441
+ PROVIDED, WILL CONFORM TO THE SUBJECT SOFTWARE. THIS AGREEMENT DOES NOT, IN
442
+ ANY MANNER, CONSTITUTE AN ENDORSEMENT BY GOVERNMENT AGENCY OR ANY PRIOR
443
+ RECIPIENT OF ANY RESULTS, RESULTING DESIGNS, HARDWARE, SOFTWARE PRODUCTS OR
444
+ ANY OTHER APPLICATIONS RESULTING FROM USE OF THE SUBJECT SOFTWARE. FURTHER,
445
+ GOVERNMENT AGENCY DISCLAIMS ALL WARRANTIES AND LIABILITIES REGARDING
446
+ THIRD-PARTY SOFTWARE, IF PRESENT IN THE ORIGINAL SOFTWARE, AND DISTRIBUTES
447
+ IT &quot;AS IS.&quot;
448
+ </p>
449
+ <ol>
450
+ <li type="A">Waiver and Indemnity: RECIPIENT AGREES TO WAIVE ANY AND ALL CLAIMS
451
+
452
+ </li>
453
+ </ol>
454
+ <p>
455
+ AGAINST THE UNITED STATES GOVERNMENT, ITS CONTRACTORS AND SUBCONTRACTORS,
456
+ AS WELL AS ANY PRIOR RECIPIENT. IF RECIPIENT&#8216;S USE OF THE SUBJECT
457
+ SOFTWARE RESULTS IN ANY LIABILITIES, DEMANDS, DAMAGES, EXPENSES OR LOSSES
458
+ ARISING FROM SUCH USE, INCLUDING ANY DAMAGES FROM PRODUCTS BASED ON, OR
459
+ RESULTING FROM, RECIPIENT&#8216;S USE OF THE SUBJECT SOFTWARE, RECIPIENT
460
+ SHALL INDEMNIFY AND HOLD HARMLESS THE UNITED STATES GOVERNMENT, ITS
461
+ CONTRACTORS AND SUBCONTRACTORS, AS WELL AS ANY PRIOR RECIPIENT, TO THE
462
+ EXTENT PERMITTED BY LAW. RECIPIENT&#8216;S SOLE REMEDY FOR ANY SUCH MATTER
463
+ SHALL BE THE IMMEDIATE, UNILATERAL TERMINATION OF THIS AGREEMENT.
464
+ </p>
465
+ <ol>
466
+ <li>GENERAL TERMS
467
+
468
+ </li>
469
+ </ol>
470
+ <ol>
471
+ <li type="A">Termination: This Agreement and the rights granted hereunder will
472
+
473
+ </li>
474
+ </ol>
475
+ <p>
476
+ terminate automatically if a Recipient fails to comply with these terms and
477
+ conditions, and fails to cure such noncompliance within thirty (30) days of
478
+ becoming aware of such noncompliance. Upon termination, a Recipient agrees
479
+ to immediately cease use and distribution of the Subject Software. All
480
+ sublicenses to the Subject Software properly granted by the breaching
481
+ Recipient shall survive any such termination of this Agreement.
482
+ </p>
483
+ <ol>
484
+ <li type="A">Severability: If any provision of this Agreement is invalid or
485
+
486
+ </li>
487
+ </ol>
488
+ <p>
489
+ unenforceable under applicable law, it shall not affect the validity or
490
+ enforceability of the remainder of the terms of this Agreement.
491
+ </p>
492
+ <ol>
493
+ <li type="A">Applicable Law: This Agreement shall be subject to United States
494
+
495
+ </li>
496
+ </ol>
497
+ <p>
498
+ federal law only for all purposes, including, but not limited to,
499
+ determining the validity of this Agreement, the meaning of its provisions
500
+ and the rights, obligations and remedies of the parties.
501
+ </p>
502
+ <ol>
503
+ <li type="A">Entire Understanding: This Agreement constitutes the entire
504
+
505
+ </li>
506
+ </ol>
507
+ <p>
508
+ understanding and agreement of the parties relating to release of the
509
+ Subject Software and may not be superseded, modified or amended except by
510
+ further written agreement duly executed by the parties.
511
+ </p>
512
+ <ol>
513
+ <li type="A">Binding Authority: By accepting and using the Subject Software
514
+
515
+ </li>
516
+ </ol>
517
+ <p>
518
+ under this Agreement, a Recipient affirms its authority to bind the
519
+ Recipient to all terms and conditions of this Agreement and that that
520
+ Recipient hereby agrees to all terms and conditions herein.
521
+ </p>
522
+ <ol>
523
+ <li type="A">Point of Contact: Any Recipient contact with Government Agency is
524
+
525
+ </li>
526
+ </ol>
527
+ <p>
528
+ to be directed to the designated representative as follows:
529
+ funit-support@rubyforge.org.
530
+ </p>
531
+
532
+ </div>
533
+
534
+
535
+ </div>
536
+
537
+
538
+ </div>
539
+
540
+
541
+ <!-- if includes -->
542
+
543
+ <div id="section">
544
+
545
+
546
+
547
+
548
+
549
+
550
+
551
+
552
+ <!-- if method_list -->
553
+
554
+
555
+ </div>
556
+
557
+
558
+ <div id="validator-badges">
559
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
560
+ </div>
561
+
562
+ </body>
563
+ </html>