📄 tester.htm
字号:
</font></font><font SIZE="2" face="Courier New">string[] refs = null</font><font SIZE="2"><font face="Courier New">;</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">if</font><font SIZE="2"><font face="Courier New">(
!References.Empty ) {</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
refs = </font></font><font SIZE="2" face="Courier New">new string</font><font SIZE="2"><font face="Courier New">[References.Count];</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
References.CopyTo( refs, 0 );</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
}</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
EnvironmentReference[] envs = </font></font>
<font SIZE="2" face="Courier New">new</font><font SIZE="2"><font face="Courier New">
EnvironmentReference[Environments.Count];</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
Environments.CopyTo( envs, 0 );</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
GenerationHistory = CompileAndTest( CodeFile, refs, GenerationHistory,
envs,</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
BaseClassNamespace, TestLimit );</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
AppDomain.CurrentDomain.SetData( "GenerationHistory",
GenerationHistory );</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">}</font></font></td>
</tr>
</table>
</center>
</div>
<p class="dtH4" style="margin-top: 0; margin-bottom: 0"> </p>
<p class="dtH4" style="margin-top: 0; margin-bottom: 0"> </p>
<div align="center">
<center>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="90%" id="AutoNumber10">
<tr>
<td width="100%"><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"></font>
<font SIZE="2" face="Courier New">public static GenerationHistory
CompileAndTest( string codeFile, string</font><font face="Courier New" SIZE="2">[]
references, </font></p>
<font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
GenerationHistory generationHistory, EnvironmentReference[]
environments, </font></font><font SIZE="2" face="Courier New">string</font></p>
<p style="margin-top: 0; margin-bottom: 0">
<font face="Courier New" size="2"> </font><font SIZE="2" face="Courier New">
baseClassNamespace, int</font><font SIZE="2"><font face="Courier New">
testLimit ) {</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">//check for null
generation history and namespace </p>
</font><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">// (Compile and
CreateEnvironments will take care of the rest)</p>
</font><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">if( generationHistory
== null</font><font SIZE="2"><font face="Courier New"> ) {</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">throw new</font><font face="Courier New" SIZE="2">
ArgumentNullException( "generationHistory", "The GenerationHistory</font></p>
<p style="margin-top: 0; margin-bottom: 0">
<font face="Courier New" SIZE="2">
</font><font SIZE="2"><font face="Courier New"> passed to
Tester.CompileAndTest was null." );</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
}</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">if( baseClassNamespace
== null</font><font SIZE="2"><font face="Courier New"> ) {</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">throw new</font><font face="Courier New" SIZE="2">
ArgumentNullException( "baseClassNamespace", "The Base Class namespace</font></p>
<p style="margin-top: 0; margin-bottom: 0">
<font face="Courier New" SIZE="2">
</font><font SIZE="2"><font face="Courier New"> passed to
Tester.CompileAndTest was null." );</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
}</font></p>
<p style="margin-top: 0; margin-bottom: 0"> </p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">//instantiate
Environments</p>
</font><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
EnvironmentCollection envs = CreateEnvironments( environments );</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">//compile the code and
check for errors</p>
</font><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
CompilerResults results = Compile( codeFile, references, </font>
</font><font SIZE="2" face="Courier New">false, true</font><font SIZE="2"><font face="Courier New">
);</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">if</font><font SIZE="2"><font face="Courier New">(
results.Errors.Count > 0 ) {</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">throw new</font><font face="Courier New" SIZE="2">
CompilationException( String.Format( "Errors occured during the</font></p>
<p style="margin-top: 0; margin-bottom: 0">
<font face="Courier New" SIZE="2">
</font><font face="Courier New" SIZE="2"> compilation of the file
\"{0}\".", codeFile ), results.Errors );</font></p>
<font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
}</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">//instantiate each
Individual</p>
</font><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
Assembly a = results.CompiledAssembly;</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
IndividualCollection individuals = </font></font>
<font SIZE="2" face="Courier New">new</font><font SIZE="2"><font face="Courier New">
IndividualCollection();</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">foreach( string name
in</font><font SIZE="2"><font face="Courier New">
generationHistory.Names ) {</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
individuals.Add( (IIndividual) a.CreateInstance( baseClassNamespace +
"." + name</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
) );</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
}</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">//notify Environments
of start of Population test</p>
</font><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">foreach( IEnvironment
env in</font><font SIZE="2"><font face="Courier New"> envs ) {</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
env.PopulationSetup( individuals );</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
}</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">//test each Individual</p>
</font><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">foreach( IIndividual
individual in</font><font SIZE="2"><font face="Courier New">
individuals ) {</font></p>
</font><font SIZE="2" face="Courier New">
<p style="margin-top: 0; margin-bottom: 0">
</p>
</font><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
HistoryCollection histories = </font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
generationHistory[ individual.GetType().Name ].Histories;</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">//test Individual in
each Environment</p>
</font><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">foreach( IEnvironment
env in</font><font SIZE="2"><font face="Courier New"> envs ) {</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">//notify Environment
of start of Individual test</p>
</font><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
env.IndividualSetup( individual );</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
individual.Environment = env;</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">//test loop</p>
</font><font SIZE="2">
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
individual.TestSetup();</font></p>
<p style="margin-top: 0; margin-bottom: 0"><font face="Courier New">
</font></font><font SIZE="2" face="Courier New">for( int</font><font face="Courier New" SIZE="2">
loopCount = 0; loopCount <= testLimit && </font></p>
<p style="margin-top: 0; margin-bottom: 0">
<font face="Courier New" SIZE="2">
!individual.FinishedTesting(); </font><font SIZE="2">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -