<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>InlineScopeVMTestCase xref</title>
<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
</head>
<body>
<pre>

<a name="1" href="#1">1</a>   <strong class="jxr_keyword">package</strong> org.apache.velocity.test;
<a name="2" href="#2">2</a>   
<a name="3" href="#3">3</a>   <em class="jxr_comment">/*</em>
<a name="4" href="#4">4</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
<a name="5" href="#5">5</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
<a name="6" href="#6">6</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
<a name="7" href="#7">7</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
<a name="8" href="#8">8</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
<a name="9" href="#9">9</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
<a name="10" href="#10">10</a>  <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
<a name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
<a name="12" href="#12">12</a>  <em class="jxr_comment"> *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a name="13" href="#13">13</a>  <em class="jxr_comment"> *</em>
<a name="14" href="#14">14</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing,</em>
<a name="15" href="#15">15</a>  <em class="jxr_comment"> * software distributed under the License is distributed on an</em>
<a name="16" href="#16">16</a>  <em class="jxr_comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a name="17" href="#17">17</a>  <em class="jxr_comment"> * KIND, either express or implied.  See the License for the</em>
<a name="18" href="#18">18</a>  <em class="jxr_comment"> * specific language governing permissions and limitations</em>
<a name="19" href="#19">19</a>  <em class="jxr_comment"> * under the License.    </em>
<a name="20" href="#20">20</a>  <em class="jxr_comment"> */</em>
<a name="21" href="#21">21</a>  
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.io.BufferedWriter;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.io.FileOutputStream;
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.io.OutputStreamWriter;
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.io.Writer;
<a name="26" href="#26">26</a>  
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> junit.framework.Test;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> junit.framework.TestSuite;
<a name="29" href="#29">29</a>  
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.Template;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.VelocityContext;
<a name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.app.Velocity;
<a name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.runtime.RuntimeSingleton;
<a name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.velocity.test.misc.TestLogChute;
<a name="35" href="#35">35</a>  
<a name="36" href="#36">36</a>  <em class="jxr_javadoccomment">/**</em>
<a name="37" href="#37">37</a>  <em class="jxr_javadoccomment"> * Tests if the VM template-locality is working.</em>
<a name="38" href="#38">38</a>  <em class="jxr_javadoccomment"> *</em>
<a name="39" href="#39">39</a>  <em class="jxr_javadoccomment"> * @author &lt;a href="<a href="mailto:geirm@optonline.net" target="alexandria_uri">mailto:geirm@optonline.net</a>"&gt;Geir Magnusson Jr.&lt;/a&gt;</em>
<a name="40" href="#40">40</a>  <em class="jxr_javadoccomment"> * @author &lt;a href="<a href="mailto:dlr@collab.net" target="alexandria_uri">mailto:dlr@collab.net</a>"&gt;Daniel Rall&lt;/a&gt;</em>
<a name="41" href="#41">41</a>  <em class="jxr_javadoccomment"> * @version $Id: InlineScopeVMTestCase.java 704299 2008-10-14 03:13:16Z nbubna $</em>
<a name="42" href="#42">42</a>  <em class="jxr_javadoccomment"> */</em>
<a name="43" href="#43">43</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/velocity/test/InlineScopeVMTestCase.html">InlineScopeVMTestCase</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../org/apache/velocity/test/BaseTestCase.html">BaseTestCase</a> implements <a href="../../../../org/apache/velocity/test/TemplateTestBase.html">TemplateTestBase</a>
<a name="44" href="#44">44</a>  {
<a name="45" href="#45">45</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/velocity/test/InlineScopeVMTestCase.html">InlineScopeVMTestCase</a>(String name)
<a name="46" href="#46">46</a>      {
<a name="47" href="#47">47</a>          <strong class="jxr_keyword">super</strong>(name);
<a name="48" href="#48">48</a>      }
<a name="49" href="#49">49</a>  
<a name="50" href="#50">50</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp()
<a name="51" href="#51">51</a>              <strong class="jxr_keyword">throws</strong> Exception
<a name="52" href="#52">52</a>      {
<a name="53" href="#53">53</a>          <em class="jxr_comment">/*</em>
<a name="54" href="#54">54</a>  <em class="jxr_comment">         *  do our properties locally, and just override the ones we want</em>
<a name="55" href="#55">55</a>  <em class="jxr_comment">         *  changed</em>
<a name="56" href="#56">56</a>  <em class="jxr_comment">         */</em>
<a name="57" href="#57">57</a>  
<a name="58" href="#58">58</a>          Velocity.setProperty(
<a name="59" href="#59">59</a>              Velocity.VM_PERM_ALLOW_INLINE_REPLACE_GLOBAL, <span class="jxr_string">"true"</span>);
<a name="60" href="#60">60</a>  
<a name="61" href="#61">61</a>          Velocity.setProperty(
<a name="62" href="#62">62</a>              Velocity.VM_PERM_INLINE_LOCAL, <span class="jxr_string">"true"</span>);
<a name="63" href="#63">63</a>  
<a name="64" href="#64">64</a>          Velocity.setProperty(
<a name="65" href="#65">65</a>              Velocity.FILE_RESOURCE_LOADER_PATH, FILE_RESOURCE_LOADER_PATH);
<a name="66" href="#66">66</a>          
<a name="67" href="#67">67</a>          Velocity.setProperty(
<a name="68" href="#68">68</a>                  Velocity.RUNTIME_LOG_LOGSYSTEM_CLASS, TestLogChute.<strong class="jxr_keyword">class</strong>.getName());
<a name="69" href="#69">69</a>  
<a name="70" href="#70">70</a>          Velocity.init();
<a name="71" href="#71">71</a>      }
<a name="72" href="#72">72</a>  
<a name="73" href="#73">73</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> Test suite ()
<a name="74" href="#74">74</a>      {
<a name="75" href="#75">75</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> TestSuite(InlineScopeVMTestCase.<strong class="jxr_keyword">class</strong>);
<a name="76" href="#76">76</a>      }
<a name="77" href="#77">77</a>  
<a name="78" href="#78">78</a>      <em class="jxr_javadoccomment">/**</em>
<a name="79" href="#79">79</a>  <em class="jxr_javadoccomment">     * Runs the test.</em>
<a name="80" href="#80">80</a>  <em class="jxr_javadoccomment">     */</em>
<a name="81" href="#81">81</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testInlineScopeVM ()
<a name="82" href="#82">82</a>              <strong class="jxr_keyword">throws</strong> Exception
<a name="83" href="#83">83</a>      {
<a name="84" href="#84">84</a>          assureResultsDirectoryExists(RESULT_DIR);
<a name="85" href="#85">85</a>  
<a name="86" href="#86">86</a>          <em class="jxr_comment">/*</em>
<a name="87" href="#87">87</a>  <em class="jxr_comment">         * Get the template and the output. Do them backwards.</em>
<a name="88" href="#88">88</a>  <em class="jxr_comment">         * vm_test2 uses a local VM and vm_test1 doesn't</em>
<a name="89" href="#89">89</a>  <em class="jxr_comment">         */</em>
<a name="90" href="#90">90</a>  
<a name="91" href="#91">91</a>          Template template2 = RuntimeSingleton.getTemplate(
<a name="92" href="#92">92</a>              getFileName(<strong class="jxr_keyword">null</strong>, <span class="jxr_string">"vm_test2"</span>, TMPL_FILE_EXT));
<a name="93" href="#93">93</a>  
<a name="94" href="#94">94</a>          Template template1 = RuntimeSingleton.getTemplate(
<a name="95" href="#95">95</a>              getFileName(<strong class="jxr_keyword">null</strong>, <span class="jxr_string">"vm_test1"</span>, TMPL_FILE_EXT));
<a name="96" href="#96">96</a>  
<a name="97" href="#97">97</a>          FileOutputStream fos1 =
<a name="98" href="#98">98</a>              <strong class="jxr_keyword">new</strong> FileOutputStream (
<a name="99" href="#99">99</a>                  getFileName(RESULT_DIR, <span class="jxr_string">"vm_test1"</span>, RESULT_FILE_EXT));
<a name="100" href="#100">100</a> 
<a name="101" href="#101">101</a>         FileOutputStream fos2 =
<a name="102" href="#102">102</a>             <strong class="jxr_keyword">new</strong> FileOutputStream (
<a name="103" href="#103">103</a>                 getFileName(RESULT_DIR, <span class="jxr_string">"vm_test2"</span>, RESULT_FILE_EXT));
<a name="104" href="#104">104</a> 
<a name="105" href="#105">105</a>         Writer writer1 = <strong class="jxr_keyword">new</strong> BufferedWriter(<strong class="jxr_keyword">new</strong> OutputStreamWriter(fos1));
<a name="106" href="#106">106</a>         Writer writer2 = <strong class="jxr_keyword">new</strong> BufferedWriter(<strong class="jxr_keyword">new</strong> OutputStreamWriter(fos2));
<a name="107" href="#107">107</a> 
<a name="108" href="#108">108</a>         <em class="jxr_comment">/*</em>
<a name="109" href="#109">109</a> <em class="jxr_comment">         *  put the Vector into the context, and merge both</em>
<a name="110" href="#110">110</a> <em class="jxr_comment">         */</em>
<a name="111" href="#111">111</a> 
<a name="112" href="#112">112</a>         VelocityContext context = <strong class="jxr_keyword">new</strong> VelocityContext();
<a name="113" href="#113">113</a> 
<a name="114" href="#114">114</a>         template1.merge(context, writer1);
<a name="115" href="#115">115</a>         writer1.flush();
<a name="116" href="#116">116</a>         writer1.close();
<a name="117" href="#117">117</a> 
<a name="118" href="#118">118</a>         template2.merge(context, writer2);
<a name="119" href="#119">119</a>         writer2.flush();
<a name="120" href="#120">120</a>         writer2.close();
<a name="121" href="#121">121</a> 
<a name="122" href="#122">122</a>         <strong class="jxr_keyword">if</strong> (!isMatch(RESULT_DIR,COMPARE_DIR,<span class="jxr_string">"vm_test1"</span>,
<a name="123" href="#123">123</a>                 RESULT_FILE_EXT,CMP_FILE_EXT) ||
<a name="124" href="#124">124</a>             !isMatch(RESULT_DIR,COMPARE_DIR,<span class="jxr_string">"vm_test2"</span>,
<a name="125" href="#125">125</a>                 RESULT_FILE_EXT,CMP_FILE_EXT))
<a name="126" href="#126">126</a>         {
<a name="127" href="#127">127</a>             fail(<span class="jxr_string">"Output incorrect."</span>);
<a name="128" href="#128">128</a>         }
<a name="129" href="#129">129</a>     }
<a name="130" href="#130">130</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

