fUnit 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,170 @@
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: String</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">String</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/lib/funit/assertions_rb.html">
59
+ lib/funit/assertions.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
+ Object
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
+ <div id="description">
82
+ <p>
83
+ Thanks to James Edward Gray II by way of ruby-talk mailing list
84
+ </p>
85
+
86
+ </div>
87
+
88
+
89
+ </div>
90
+
91
+ <div id="method-list">
92
+ <h3 class="section-bar">Methods</h3>
93
+
94
+ <div class="name-list">
95
+ <a href="#M000001">get_args</a>&nbsp;&nbsp;
96
+ </div>
97
+ </div>
98
+
99
+ </div>
100
+
101
+
102
+ <!-- if includes -->
103
+
104
+ <div id="section">
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
+ <!-- if method_list -->
114
+ <div id="methods">
115
+ <h3 class="section-bar">Public Instance methods</h3>
116
+
117
+ <div id="method-M000001" class="method-detail">
118
+ <a name="M000001"></a>
119
+
120
+ <div class="method-heading">
121
+ <a href="#M000001" class="method-signature">
122
+ <span class="method-name">get_args</span><span class="method-args">()</span>
123
+ </a>
124
+ </div>
125
+
126
+ <div class="method-description">
127
+ <p><a class="source-toggle" href="#"
128
+ onclick="toggleCode('M000001-source');return false;">[Source]</a></p>
129
+ <div class="method-source-code" id="M000001-source">
130
+ <pre>
131
+ <span class="ruby-comment cmt"># File lib/funit/assertions.rb, line 16</span>
132
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_args</span>
133
+ <span class="ruby-identifier">scanner</span> = <span class="ruby-constant">StringScanner</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>)
134
+ <span class="ruby-identifier">result</span> = <span class="ruby-identifier">scanner</span>.<span class="ruby-identifier">eos?</span> <span class="ruby-value">? </span><span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span> <span class="ruby-operator">:</span> [<span class="ruby-value str">&quot;&quot;</span>]
135
+ <span class="ruby-identifier">paren_depth</span> = <span class="ruby-value">0</span>
136
+ <span class="ruby-keyword kw">until</span> <span class="ruby-identifier">scanner</span>.<span class="ruby-identifier">eos?</span>
137
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">scanner</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp re">/[^(),]+/</span>)
138
+ <span class="ruby-comment cmt"># do nothing--we found the part of the argument we need to add</span>
139
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">scanner</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp re">/\(/</span>)
140
+ <span class="ruby-identifier">paren_depth</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
141
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">scanner</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp re">/\)/</span>)
142
+ <span class="ruby-identifier">paren_depth</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
143
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">scanner</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp re">/,\s*/</span>) <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">paren_depth</span>.<span class="ruby-identifier">zero?</span>
144
+ <span class="ruby-identifier">result</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;&quot;</span>
145
+ <span class="ruby-keyword kw">next</span>
146
+ <span class="ruby-keyword kw">end</span>
147
+
148
+ <span class="ruby-identifier">result</span>.<span class="ruby-identifier">last</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">scanner</span>.<span class="ruby-identifier">matched</span>
149
+ <span class="ruby-keyword kw">end</span>
150
+
151
+ <span class="ruby-identifier">result</span>
152
+ <span class="ruby-keyword kw">end</span>
153
+ </pre>
154
+ </div>
155
+ </div>
156
+ </div>
157
+
158
+
159
+ </div>
160
+
161
+
162
+ </div>
163
+
164
+
165
+ <div id="validator-badges">
166
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
167
+ </div>
168
+
169
+ </body>
170
+ </html>
@@ -1 +1 @@
1
- Sat Apr 15 17:13:05 EDT 2006
1
+ Tue Apr 18 07:35:14 EDT 2006
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Sat Apr 15 17:12:55 EDT 2006</td>
59
+ <td>Sun Apr 16 07:29:30 EDT 2006</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -180,7 +180,7 @@ href="http://rubyforge.org/tracker/?group_id=1416">the tracking system</a>.
180
180
  <p>
181
181
  FUnit is released under the NASA Open Source Agreement, which requests
182
182
  registration. If you would like to register, send an email to <a
183
- href="mailto:funit-registration@rubyforge.org?subject=fUnit%20Registration">funit-registration@rubyforge.org</a>
183
+ href="mailto:funit-registration@rubyforge.org?subject=fUnit%20Registration&body=%20%20%20%20%20%20%20Name:%20%0AInstitution:%20%0A%20%20%20%20%20%20%20City:%20%0APostal%20Code:%20%0A%20%20%20%20Country:%20">funit-registration@rubyforge.org</a>
184
184
  with your name, institution (if applicable), city, postal code, and
185
185
  country. See <a
186
186
  href="http://funit.rubyforge.org/files/COPYING.html">COPYING</a> for
@@ -213,9 +213,6 @@ framework in <a href="http:www.ruby-lang.org">Ruby</a>.
213
213
  </li>
214
214
  <li>Complete migration from CamelCase to snake_case for methods and variables.
215
215
 
216
- </li>
217
- <li>Use 2-space indentation everywhere.
218
-
219
216
  </li>
220
217
  <li>Use &#8216;test&#8217; keyword instead of &#8216;beginTest&#8217; business.
221
218
 
@@ -229,9 +226,6 @@ framework in <a href="http:www.ruby-lang.org">Ruby</a>.
229
226
  </li>
230
227
  <li>Add assertions to capture stops and warning messages.
231
228
 
232
- </li>
233
- <li>Clean up documentation.
234
-
235
229
  </li>
236
230
  <li>To increase portability, create a single, stand-alone executable with Erik
237
231
  Veenstra&#8217;s <a
@@ -240,9 +234,6 @@ href="http://www.erikveen.dds.nl/rubyscript2exe/">RubyScript2Exe</a>.
240
234
  </li>
241
235
  <li>Use a makefile instead of a single, ordered command line for compilation.
242
236
 
243
- </li>
244
- <li>Add a clean option to remove all generated artifacts.
245
-
246
237
  </li>
247
238
  </ul>
248
239
 
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Sat Apr 15 11:39:27 EDT 2006</td>
59
+ <td>Mon Apr 17 19:41:43 EDT 2006</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -75,6 +75,13 @@ Define Fortran assertion macros
75
75
 
76
76
  </div>
77
77
 
78
+ <div id="requires-list">
79
+ <h3 class="section-bar">Required files</h3>
80
+
81
+ <div class="name-list">
82
+ strscan&nbsp;&nbsp;
83
+ </div>
84
+ </div>
78
85
 
79
86
  </div>
80
87
 
@@ -25,6 +25,7 @@
25
25
  <a href="classes/Funit/Compiler.html">Funit::Compiler</a><br />
26
26
  <a href="classes/Funit/Depend.html">Funit::Depend</a><br />
27
27
  <a href="classes/Funit/TestSuite.html">Funit::TestSuite</a><br />
28
+ <a href="classes/String.html">String</a><br />
28
29
  </div>
29
30
  </div>
30
31
  </body>
@@ -20,39 +20,40 @@
20
20
  <div id="index">
21
21
  <h1 class="section-bar">Methods</h1>
22
22
  <div id="index-entries">
23
- <a href="classes/Funit/TestSuite.html#M000032">aTest (Funit::TestSuite)</a><br />
24
- <a href="classes/Funit/TestSuite.html#M000029">addtoSetup (Funit::TestSuite)</a><br />
25
- <a href="classes/Funit/TestSuite.html#M000030">addtoTeardown (Funit::TestSuite)</a><br />
26
- <a href="classes/Funit/Depend.html#M000018">build_dictionary_of_modules_in (Funit::Depend)</a><br />
27
- <a href="classes/Funit/Depend.html#M000020">build_hash_of_modules_in_files_within (Funit::Depend)</a><br />
28
- <a href="classes/Funit/TestSuite.html#M000033">close (Funit::TestSuite)</a><br />
29
- <a href="classes/Funit.html#M000008">compileTests (Funit)</a><br />
30
- <a href="classes/Funit/Depend.html#M000022">dependencies (Funit::Depend)</a><br />
31
- <a href="classes/Funit/TestSuite.html#M000028">expand (Funit::TestSuite)</a><br />
32
- <a href="classes/Funit/Depend.html#M000019">fortran_files_within (Funit::Depend)</a><br />
33
- <a href="classes/Funit.html#M000003">funit_exists? (Funit)</a><br />
34
- <a href="classes/Funit/TestSuite.html#M000031">ignoreTest (Funit::TestSuite)</a><br />
35
- <a href="classes/Funit/Assertions.html#M000013">isequal (Funit::Assertions)</a><br />
36
- <a href="classes/Funit/Assertions.html#M000012">isequalwithin (Funit::Assertions)</a><br />
37
- <a href="classes/Funit/Assertions.html#M000010">isfalse (Funit::Assertions)</a><br />
38
- <a href="classes/Funit/Assertions.html#M000011">isrealequal (Funit::Assertions)</a><br />
39
- <a href="classes/Funit/Assertions.html#M000009">istrue (Funit::Assertions)</a><br />
40
- <a href="classes/Funit/Depend.html#M000021">makefile_dependency_line (Funit::Depend)</a><br />
41
- <a href="classes/Funit/Depend.html#M000017">modules_defined_in (Funit::Depend)</a><br />
42
- <a href="classes/Funit/Depend.html#M000016">modules_used_in (Funit::Depend)</a><br />
43
- <a href="classes/Funit/Depend.html#M000015">new (Funit::Depend)</a><br />
44
- <a href="classes/Funit/Compiler.html#M000025">new (Funit::Compiler)</a><br />
45
- <a href="classes/Funit/TestSuite.html#M000026">new (Funit::TestSuite)</a><br />
46
- <a href="classes/Funit.html#M000004">parseCommandLine (Funit)</a><br />
47
- <a href="classes/Funit.html#M000002">requestedModules (Funit)</a><br />
48
- <a href="classes/Funit/Depend.html#M000024">required_source_files (Funit::Depend)</a><br />
49
- <a href="classes/Funit.html#M000001">run_tests (Funit)</a><br />
50
- <a href="classes/Funit/Depend.html#M000023">source_file_dependencies (Funit::Depend)</a><br />
51
- <a href="classes/Funit.html#M000006">syntaxError (Funit)</a><br />
52
- <a href="classes/Funit/TestSuite.html#M000027">topWrapper (Funit::TestSuite)</a><br />
53
- <a href="classes/Funit.html#M000007">warning (Funit)</a><br />
54
- <a href="classes/Funit/Assertions.html#M000014">writeAssert (Funit::Assertions)</a><br />
55
- <a href="classes/Funit.html#M000005">writeTestRunner (Funit)</a><br />
23
+ <a href="classes/Funit/TestSuite.html#M000033">aTest (Funit::TestSuite)</a><br />
24
+ <a href="classes/Funit/TestSuite.html#M000030">addtoSetup (Funit::TestSuite)</a><br />
25
+ <a href="classes/Funit/TestSuite.html#M000031">addtoTeardown (Funit::TestSuite)</a><br />
26
+ <a href="classes/Funit/Depend.html#M000019">build_dictionary_of_modules_in (Funit::Depend)</a><br />
27
+ <a href="classes/Funit/Depend.html#M000021">build_hash_of_modules_in_files_within (Funit::Depend)</a><br />
28
+ <a href="classes/Funit/TestSuite.html#M000034">close (Funit::TestSuite)</a><br />
29
+ <a href="classes/Funit.html#M000009">compileTests (Funit)</a><br />
30
+ <a href="classes/Funit/Depend.html#M000023">dependencies (Funit::Depend)</a><br />
31
+ <a href="classes/Funit/TestSuite.html#M000029">expand (Funit::TestSuite)</a><br />
32
+ <a href="classes/Funit/Depend.html#M000020">fortran_files_within (Funit::Depend)</a><br />
33
+ <a href="classes/Funit.html#M000004">funit_exists? (Funit)</a><br />
34
+ <a href="classes/String.html#M000001">get_args (String)</a><br />
35
+ <a href="classes/Funit/TestSuite.html#M000032">ignoreTest (Funit::TestSuite)</a><br />
36
+ <a href="classes/Funit/Assertions.html#M000014">isequal (Funit::Assertions)</a><br />
37
+ <a href="classes/Funit/Assertions.html#M000013">isequalwithin (Funit::Assertions)</a><br />
38
+ <a href="classes/Funit/Assertions.html#M000011">isfalse (Funit::Assertions)</a><br />
39
+ <a href="classes/Funit/Assertions.html#M000012">isrealequal (Funit::Assertions)</a><br />
40
+ <a href="classes/Funit/Assertions.html#M000010">istrue (Funit::Assertions)</a><br />
41
+ <a href="classes/Funit/Depend.html#M000022">makefile_dependency_line (Funit::Depend)</a><br />
42
+ <a href="classes/Funit/Depend.html#M000018">modules_defined_in (Funit::Depend)</a><br />
43
+ <a href="classes/Funit/Depend.html#M000017">modules_used_in (Funit::Depend)</a><br />
44
+ <a href="classes/Funit/TestSuite.html#M000027">new (Funit::TestSuite)</a><br />
45
+ <a href="classes/Funit/Compiler.html#M000026">new (Funit::Compiler)</a><br />
46
+ <a href="classes/Funit/Depend.html#M000016">new (Funit::Depend)</a><br />
47
+ <a href="classes/Funit.html#M000005">parseCommandLine (Funit)</a><br />
48
+ <a href="classes/Funit.html#M000003">requestedModules (Funit)</a><br />
49
+ <a href="classes/Funit/Depend.html#M000025">required_source_files (Funit::Depend)</a><br />
50
+ <a href="classes/Funit.html#M000002">run_tests (Funit)</a><br />
51
+ <a href="classes/Funit/Depend.html#M000024">source_file_dependencies (Funit::Depend)</a><br />
52
+ <a href="classes/Funit.html#M000007">syntaxError (Funit)</a><br />
53
+ <a href="classes/Funit/TestSuite.html#M000028">topWrapper (Funit::TestSuite)</a><br />
54
+ <a href="classes/Funit.html#M000008">warning (Funit)</a><br />
55
+ <a href="classes/Funit/Assertions.html#M000015">writeAssert (Funit::Assertions)</a><br />
56
+ <a href="classes/Funit.html#M000006">writeTestRunner (Funit)</a><br />
56
57
  </div>
57
58
  </div>
58
59
  </body>
@@ -8,49 +8,79 @@
8
8
  # This file is governed by the NASA Open Source Agreement.
9
9
  # See COPYING for details.
10
10
  #++
11
+ require 'strscan'
12
+
13
+ # Thanks to James Edward Gray II by way of ruby-talk mailing list
14
+
15
+ class String
16
+ def get_args
17
+ scanner = StringScanner.new(self)
18
+ result = scanner.eos? ? Array.new : [""]
19
+ paren_depth = 0
20
+ until scanner.eos?
21
+ if scanner.scan(/[^(),]+/)
22
+ # do nothing--we found the part of the argument we need to add
23
+ elsif scanner.scan(/\(/)
24
+ paren_depth += 1
25
+ elsif scanner.scan(/\)/)
26
+ paren_depth -= 1
27
+ elsif scanner.scan(/,\s*/) and paren_depth.zero?
28
+ result << ""
29
+ next
30
+ end
31
+
32
+ result.last << scanner.matched
33
+ end
34
+
35
+ result
36
+ end
37
+ end
38
+
11
39
  module Funit
12
40
  module Assertions
13
41
 
14
42
  $assertRegEx = /Is(RealEqual|False|True|EqualWithin|Equal)\(.*\)/i
15
43
 
16
44
  def istrue(line)
17
- line=~/\((.+)\)/
45
+ line.match(/\((.+)\)/)
18
46
  @type = 'IsTrue'
19
47
  @condition = ".not.(#$1)"
20
48
  @message = "\"#$1 is not true\""
21
49
  syntaxError("invalid body for #@type",@suiteName) unless $1=~/\S+/
22
- writeAssert
50
+ writeAssert
23
51
  end
24
52
 
25
53
  def isfalse(line)
26
- line=~/\((.+)\)/
54
+ line.match(/\((.+)\)/)
27
55
  @type = 'IsFalse'
28
56
  @condition = "#$1"
29
57
  @message = "\"#$1 is not false\""
30
58
  syntaxError("invalid body for #@type",@suiteName) unless $1=~/\S+/
31
- writeAssert
59
+ writeAssert
32
60
  end
33
61
 
34
62
  def isrealequal(line)
35
- line=~/\(([^,]+),(.+)\)/
63
+ line.match(/\((.*)\)/)
64
+ expected, actual = *($1.get_args)
36
65
  @type = 'IsRealEqual'
37
- @condition = ".not.(#$1+2*spacing(real(#$1)).ge.#$2 &\n .and.#$1-2*spacing(real(#$1)).le.#$2)"
38
- @message = "\"#$2 (\",#$2,\") is not\",#$1,\"within\",2*spacing(real(#$1))"
66
+ @condition = ".not.(#{expected}+2*spacing(real(#{expected})).ge.#{actual} &\n .and.#{expected}-2*spacing(real(#{expected})).le.#{actual})"
67
+ @message = "\"#{actual} (\",#{actual},\") is not\",#{expected},\"within\",2*spacing(real(#{expected}))"
39
68
  syntaxError("invalid body for #@type",@suiteName) unless $&
40
69
  writeAssert
41
70
  end
42
71
 
43
72
  def isequalwithin(line)
44
- line=~/\(([^,]+),(.+),(.+)\)/
73
+ line.match(/\((.*)\)/)
74
+ expected, actual, tolerance = *($1.get_args)
45
75
  @type = 'IsEqualWithin'
46
- @condition = ".not.(#$2+#$3.ge.#$1 &\n .and.#$2-#$3.le.#$1)"
47
- @message = "\"#$1 (\",#$1,\") is not\",#$2,\"within\",#$3"
76
+ @condition = ".not.(#{actual}+#{tolerance}.ge.#{expected} &\n .and.#{actual}-#{tolerance}.le.#{expected})"
77
+ @message = "\"#{expected} (\",#{expected},\") is not\",#{actual},\"within\",#{tolerance}"
48
78
  syntaxError("invalid body for #@type",@suiteName) unless $&
49
79
  writeAssert
50
80
  end
51
81
 
52
82
  def isequal(line)
53
- line=~/\((\w+\(.*\)|[^,]+),(.+)\)/
83
+ line.match(/\((\w+\(.*\)|[^,]+),(.+)\)/)
54
84
  @type = 'IsEqual'
55
85
  @condition = ".not.(#$1==#$2)"
56
86
  @message = "\"#$1 (\",#$1,\") is not\", #$2"
@@ -60,13 +90,12 @@ module Funit
60
90
 
61
91
  def writeAssert
62
92
  <<-OUTPUT
63
-
64
93
  ! #@type assertion
65
94
  numAsserts = numAsserts + 1
66
95
  if (noAssertFailed) then
67
96
  if (#@condition) then
68
97
  print *, " *#@type failed* in test #@testName &
69
- &[#{@suiteName}.fun:#{@lineNumber.to_s}]"
98
+ &[#{@suiteName}.fun:#{@lineNumber.to_s}]"
70
99
  print *, " ", #@message
71
100
  print *, ""
72
101
  noAssertFailed = .false.
@@ -7,27 +7,27 @@ require 'funit/functions'
7
7
 
8
8
  class TestCompiler < Test::Unit::TestCase
9
9
 
10
- def setup
11
- @compilerStub = 'dummyCompiler'
12
- @oldCompilerName = ENV['FC']
13
- end
14
-
15
- def test_explicit_compiler_name
16
- assert_equal @compilerStub, Funit::Compiler.new(@compilerStub).name
17
- end
18
-
19
- def test_compiler_name_from_environment
20
- ENV['FC'] = @compilerStub
21
- assert_equal @compilerStub, Funit::Compiler.new.name
22
- end
23
-
24
- def test_no_environment_compiler_name
25
- ENV['FC'] = nil
26
- assert_raises(RuntimeError) {Funit::Compiler.new}
27
- end
28
-
29
- def teardown
30
- ENV['FC'] = @oldCompilerName
31
- end
10
+ def setup
11
+ @compilerStub = 'dummyCompiler'
12
+ @oldCompilerName = ENV['FC']
13
+ end
14
+
15
+ def teardown
16
+ ENV['FC'] = @oldCompilerName
17
+ end
18
+
19
+ def test_explicit_compiler_name
20
+ assert_equal @compilerStub, Funit::Compiler.new(@compilerStub).name
21
+ end
22
+
23
+ def test_compiler_name_from_environment
24
+ ENV['FC'] = @compilerStub
25
+ assert_equal @compilerStub, Funit::Compiler.new.name
26
+ end
27
+
28
+ def test_no_environment_compiler_name
29
+ ENV['FC'] = nil
30
+ assert_raises(RuntimeError) {Funit::Compiler.new}
31
+ end
32
32
 
33
33
  end