<!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>DRFATestCase xref</title>
<link type="text/css" rel="stylesheet" href="../../../stylesheet.css" />
</head>
<body>
<pre>

<a name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
<a name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one or more</em>
<a name="3" href="#3">3</a>   <em class="jxr_comment"> * contributor license agreements.  See the NOTICE file distributed with</em>
<a name="4" href="#4">4</a>   <em class="jxr_comment"> * this work for additional information regarding copyright ownership.</em>
<a name="5" href="#5">5</a>   <em class="jxr_comment"> * The ASF licenses this file to You under the Apache License, Version 2.0</em>
<a name="6" href="#6">6</a>   <em class="jxr_comment"> * (the "License"); you may not use this file except in compliance with</em>
<a name="7" href="#7">7</a>   <em class="jxr_comment"> * the License.  You may obtain a copy of the License at</em>
<a name="8" href="#8">8</a>   <em class="jxr_comment"> * </em>
<a name="9" href="#9">9</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="10" href="#10">10</a>  <em class="jxr_comment"> * </em>
<a name="11" href="#11">11</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
<a name="12" href="#12">12</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
<a name="13" href="#13">13</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
<a name="14" href="#14">14</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
<a name="15" href="#15">15</a>  <em class="jxr_comment"> * limitations under the License.</em>
<a name="16" href="#16">16</a>  <em class="jxr_comment"> */</em>
<a name="17" href="#17">17</a>  
<a name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.log4j;
<a name="19" href="#19">19</a>  
<a name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> junit.framework.TestCase;
<a name="21" href="#21">21</a>  
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.io.File;
<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.IOException;
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.io.FileInputStream;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.text.SimpleDateFormat;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.Calendar;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.util.Date;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.util.Compare;
<a name="30" href="#30">30</a>  
<a name="31" href="#31">31</a>  <em class="jxr_javadoccomment">/**</em>
<a name="32" href="#32">32</a>  <em class="jxr_javadoccomment">   Exhaustive test of the DailyRollingFileAppender compute algorithm.</em>
<a name="33" href="#33">33</a>  
<a name="34" href="#34">34</a>  <em class="jxr_javadoccomment">   @author Ceki G&amp;uuml;lc&amp;uuml;</em>
<a name="35" href="#35">35</a>  <em class="jxr_javadoccomment">   @author Curt Arnold</em>
<a name="36" href="#36">36</a>  <em class="jxr_javadoccomment"> */</em>
<a name="37" href="#37">37</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../org/apache/log4j/DRFATestCase.html">DRFATestCase</a> <strong class="jxr_keyword">extends</strong> TestCase {
<a name="38" href="#38">38</a>  
<a name="39" href="#39">39</a>      <em class="jxr_javadoccomment">/**</em>
<a name="40" href="#40">40</a>  <em class="jxr_javadoccomment">     * Create new test.</em>
<a name="41" href="#41">41</a>  <em class="jxr_javadoccomment">     * @param name test name.</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> <a href="../../../org/apache/log4j/DRFATestCase.html">DRFATestCase</a>(<strong class="jxr_keyword">final</strong> String name) {
<a name="44" href="#44">44</a>      <strong class="jxr_keyword">super</strong>(name);
<a name="45" href="#45">45</a>    }
<a name="46" href="#46">46</a>  
<a name="47" href="#47">47</a>      <em class="jxr_javadoccomment">/**</em>
<a name="48" href="#48">48</a>  <em class="jxr_javadoccomment">     * Reset configuration after every test.</em>
<a name="49" href="#49">49</a>  <em class="jxr_javadoccomment">     */</em>
<a name="50" href="#50">50</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> tearDown() {
<a name="51" href="#51">51</a>        LogManager.resetConfiguration();
<a name="52" href="#52">52</a>    }
<a name="53" href="#53">53</a>  
<a name="54" href="#54">54</a>      <em class="jxr_javadoccomment">/**</em>
<a name="55" href="#55">55</a>  <em class="jxr_javadoccomment">     * Test prediction of check period.</em>
<a name="56" href="#56">56</a>  <em class="jxr_javadoccomment">     */</em>
<a name="57" href="#57">57</a>    <strong class="jxr_keyword">public</strong>
<a name="58" href="#58">58</a>    <strong class="jxr_keyword">void</strong> testComputeCheckPeriod() {
<a name="59" href="#59">59</a>      DailyRollingFileAppender drfa = <strong class="jxr_keyword">new</strong> DailyRollingFileAppender();
<a name="60" href="#60">60</a>      drfa.setName(<span class="jxr_string">"testComputeCheckPeriod"</span>);
<a name="61" href="#61">61</a>      drfa.setDatePattern(<span class="jxr_string">"yyyy-MM-dd.'log'"</span>);
<a name="62" href="#62">62</a>      drfa.activateOptions();
<a name="63" href="#63">63</a>  
<a name="64" href="#64">64</a>      drfa.computeCheckPeriod();
<a name="65" href="#65">65</a>      assertEquals(drfa.computeCheckPeriod(),
<a name="66" href="#66">66</a>           DailyRollingFileAppender.TOP_OF_DAY);
<a name="67" href="#67">67</a>  
<a name="68" href="#68">68</a>      drfa.setDatePattern(<span class="jxr_string">"yyyy-MM-dd mm.'log'"</span>);
<a name="69" href="#69">69</a>      assertEquals(drfa.computeCheckPeriod(),
<a name="70" href="#70">70</a>           DailyRollingFileAppender.TOP_OF_MINUTE);
<a name="71" href="#71">71</a>  
<a name="72" href="#72">72</a>      drfa.setDatePattern(<span class="jxr_string">"yyyy-MM-dd a.'log'"</span>);
<a name="73" href="#73">73</a>      assertEquals(drfa.computeCheckPeriod(),
<a name="74" href="#74">74</a>           DailyRollingFileAppender.HALF_DAY);
<a name="75" href="#75">75</a>  
<a name="76" href="#76">76</a>      drfa.setDatePattern(<span class="jxr_string">"yyyy-MM-dd HH.'log'"</span>);
<a name="77" href="#77">77</a>      assertEquals(drfa.computeCheckPeriod(),
<a name="78" href="#78">78</a>           DailyRollingFileAppender.TOP_OF_HOUR);
<a name="79" href="#79">79</a>  
<a name="80" href="#80">80</a>      drfa.setDatePattern(<span class="jxr_string">"yyyy-MM.'log'"</span>);
<a name="81" href="#81">81</a>      assertEquals(drfa.computeCheckPeriod(),
<a name="82" href="#82">82</a>           DailyRollingFileAppender.TOP_OF_MONTH);
<a name="83" href="#83">83</a>  
<a name="84" href="#84">84</a>      drfa.setDatePattern(<span class="jxr_string">"'log'HH'log'"</span>);
<a name="85" href="#85">85</a>      assertEquals(drfa.computeCheckPeriod(),
<a name="86" href="#86">86</a>           DailyRollingFileAppender.TOP_OF_HOUR);
<a name="87" href="#87">87</a>    }
<a name="88" href="#88">88</a>  
<a name="89" href="#89">89</a>  
<a name="90" href="#90">90</a>      <em class="jxr_javadoccomment">/**</em>
<a name="91" href="#91">91</a>  <em class="jxr_javadoccomment">     *   Test of RollingCalendar.</em>
<a name="92" href="#92">92</a>  <em class="jxr_javadoccomment">     */</em>
<a name="93" href="#93">93</a>    <strong class="jxr_keyword">public</strong>
<a name="94" href="#94">94</a>    <strong class="jxr_keyword">void</strong> testRC1() {
<a name="95" href="#95">95</a>      RollingCalendar rc = <strong class="jxr_keyword">new</strong> RollingCalendar();
<a name="96" href="#96">96</a>      rc.setType(DailyRollingFileAppender.TOP_OF_DAY);
<a name="97" href="#97">97</a>  
<a name="98" href="#98">98</a>      Calendar c = Calendar.getInstance();
<a name="99" href="#99">99</a>  
<a name="100" href="#100">100</a>     <em class="jxr_comment">// jan, mar, may, july, aug, oct, dec have 31 days</em>
<a name="101" href="#101">101</a>     <strong class="jxr_keyword">int</strong> [] M31 = {0,2,4,6,7,9,11};
<a name="102" href="#102">102</a> 
<a name="103" href="#103">103</a>     <strong class="jxr_keyword">for</strong>(<strong class="jxr_keyword">int</strong> i = 0; i &lt; M31.length; i ++) {
<a name="104" href="#104">104</a>       <strong class="jxr_keyword">for</strong>(<strong class="jxr_keyword">int</strong> d = 1; d &lt;=31; d++) {
<a name="105" href="#105">105</a>     <strong class="jxr_keyword">for</strong>(<strong class="jxr_keyword">int</strong> h = 0; h &lt; 23; h++) {
<a name="106" href="#106">106</a>       c.clear();
<a name="107" href="#107">107</a>       c.set(Calendar.YEAR, 20);
<a name="108" href="#108">108</a>       c.set(Calendar.MONTH, Calendar.JANUARY + M31[i]);
<a name="109" href="#109">109</a>       c.set(Calendar.DAY_OF_MONTH, d);
<a name="110" href="#110">110</a>       c.set(Calendar.HOUR_OF_DAY, h);
<a name="111" href="#111">111</a>       c.set(Calendar.MINUTE, 10);
<a name="112" href="#112">112</a>       c.set(Calendar.SECOND, 10);
<a name="113" href="#113">113</a>       c.set(Calendar.MILLISECOND, 88);
<a name="114" href="#114">114</a> 
<a name="115" href="#115">115</a>       c.setTime(rc.getNextCheckDate(c.getTime()));
<a name="116" href="#116">116</a>       <strong class="jxr_keyword">if</strong>(d == 31) {
<a name="117" href="#117">117</a>         assertEquals(c.get(Calendar.MONTH),(Calendar.JANUARY+M31[i]+1)%12);
<a name="118" href="#118">118</a>         assertEquals(c.get(Calendar.DAY_OF_MONTH), 1);
<a name="119" href="#119">119</a>       } <strong class="jxr_keyword">else</strong> {
<a name="120" href="#120">120</a>         assertEquals(c.get(Calendar.MONTH), Calendar.JANUARY+M31[i]);
<a name="121" href="#121">121</a>         assertEquals(c.get(Calendar.DAY_OF_MONTH), d+1);
<a name="122" href="#122">122</a>       }
<a name="123" href="#123">123</a>       assertEquals(c.get(Calendar.HOUR_OF_DAY), 0);
<a name="124" href="#124">124</a>       assertEquals(c.get(Calendar.MINUTE), 0);
<a name="125" href="#125">125</a>       assertEquals(c.get(Calendar.SECOND), 0);
<a name="126" href="#126">126</a>       assertEquals(c.get(Calendar.MILLISECOND), 0);
<a name="127" href="#127">127</a>     }
<a name="128" href="#128">128</a>       }
<a name="129" href="#129">129</a>     }
<a name="130" href="#130">130</a>   }
<a name="131" href="#131">131</a> 
<a name="132" href="#132">132</a>     <em class="jxr_javadoccomment">/**</em>
<a name="133" href="#133">133</a> <em class="jxr_javadoccomment">     * RollingCalendar test.</em>
<a name="134" href="#134">134</a> <em class="jxr_javadoccomment">     */</em>
<a name="135" href="#135">135</a>   <strong class="jxr_keyword">public</strong>
<a name="136" href="#136">136</a>   <strong class="jxr_keyword">void</strong> testRC2() {
<a name="137" href="#137">137</a>     RollingCalendar rc = <strong class="jxr_keyword">new</strong> RollingCalendar();
<a name="138" href="#138">138</a> 
<a name="139" href="#139">139</a>     rc.setType(DailyRollingFileAppender.TOP_OF_HOUR);
<a name="140" href="#140">140</a> 
<a name="141" href="#141">141</a>     Calendar c = Calendar.getInstance();
<a name="142" href="#142">142</a> 
<a name="143" href="#143">143</a>     <em class="jxr_comment">// jan, mar, may, july, aug, oct, dec have 31 days</em>
<a name="144" href="#144">144</a>     <strong class="jxr_keyword">int</strong> [] M31 = {0,2,4,6,7,9,11};
<a name="145" href="#145">145</a> 
<a name="146" href="#146">146</a>     <strong class="jxr_keyword">for</strong>(<strong class="jxr_keyword">int</strong> i = 0; i &lt; M31.length; i ++) {
<a name="147" href="#147">147</a>       System.out.println(<span class="jxr_string">"Month = "</span>+(M31[i]+1));
<a name="148" href="#148">148</a>       <strong class="jxr_keyword">for</strong>(<strong class="jxr_keyword">int</strong> d = 1; d &lt;= 31; d++) {
<a name="149" href="#149">149</a>     <strong class="jxr_keyword">for</strong>(<strong class="jxr_keyword">int</strong> h = 0; h &lt; 23; h++) {
<a name="150" href="#150">150</a>       <strong class="jxr_keyword">for</strong>(<strong class="jxr_keyword">int</strong> m = 0; m &lt;= 59; m++) {
<a name="151" href="#151">151</a>         c.clear();
<a name="152" href="#152">152</a>         c.set(Calendar.YEAR, 20);
<a name="153" href="#153">153</a>         c.set(Calendar.MONTH, Calendar.JANUARY + M31[i]);
<a name="154" href="#154">154</a>         c.set(Calendar.DAY_OF_MONTH, d);
<a name="155" href="#155">155</a>         c.set(Calendar.HOUR_OF_DAY, h);
<a name="156" href="#156">156</a>         c.set(Calendar.MINUTE, m);
<a name="157" href="#157">157</a>         c.set(Calendar.SECOND, 12);
<a name="158" href="#158">158</a>         c.set(Calendar.MILLISECOND, 88);
<a name="159" href="#159">159</a> 
<a name="160" href="#160">160</a>         <strong class="jxr_keyword">boolean</strong> dltState0 = c.getTimeZone().inDaylightTime(c.getTime());
<a name="161" href="#161">161</a>         c.setTime(rc.getNextCheckDate(c.getTime()));
<a name="162" href="#162">162</a>         <strong class="jxr_keyword">boolean</strong> dltState1 = c.getTimeZone().inDaylightTime(c.getTime());
<a name="163" href="#163">163</a> 
<a name="164" href="#164">164</a>         assertEquals(c.get(Calendar.MILLISECOND), 0);
<a name="165" href="#165">165</a>         assertEquals(c.get(Calendar.SECOND), 0);
<a name="166" href="#166">166</a>         assertEquals(c.get(Calendar.MINUTE), 0);
<a name="167" href="#167">167</a> 
<a name="168" href="#168">168</a>         <strong class="jxr_keyword">if</strong>(dltState0 == dltState1) {
<a name="169" href="#169">169</a>           assertEquals(c.get(Calendar.HOUR_OF_DAY), (h+1)%24);
<a name="170" href="#170">170</a>         } <strong class="jxr_keyword">else</strong> {
<a name="171" href="#171">171</a>           <em class="jxr_comment">// returning to standard time</em>
<a name="172" href="#172">172</a>           <strong class="jxr_keyword">if</strong>(dltState0) {
<a name="173" href="#173">173</a>         assertEquals(c.get(Calendar.HOUR_OF_DAY), h);
<a name="174" href="#174">174</a>           } <strong class="jxr_keyword">else</strong> { <em class="jxr_comment">// switching to day light saving time</em>
<a name="175" href="#175">175</a>         <em class="jxr_comment">//System.err.println("m="+m+", h="+h+", d="+d+", i="+i);</em>
<a name="176" href="#176">176</a>         <em class="jxr_comment">//if(h==2) {</em>
<a name="177" href="#177">177</a>         <em class="jxr_comment">// System.err.println(c);</em>
<a name="178" href="#178">178</a>         <em class="jxr_comment">//}</em>
<a name="179" href="#179">179</a>         <em class="jxr_comment">//assertEquals(c.get(Calendar.HOUR_OF_DAY), (h+2)%24);</em>
<a name="180" href="#180">180</a>           }
<a name="181" href="#181">181</a>         }
<a name="182" href="#182">182</a> 
<a name="183" href="#183">183</a>         <strong class="jxr_keyword">if</strong>(h == 23) {
<a name="184" href="#184">184</a>           assertEquals(c.get(Calendar.DAY_OF_MONTH), (d+1)%32);
<a name="185" href="#185">185</a>           <strong class="jxr_keyword">if</strong>(d == 31) {
<a name="186" href="#186">186</a>         assertEquals(c.get(Calendar.MONTH),
<a name="187" href="#187">187</a>                  (Calendar.JANUARY+M31[i]+1)%12);
<a name="188" href="#188">188</a>           } <strong class="jxr_keyword">else</strong> {
<a name="189" href="#189">189</a>         assertEquals(c.get(Calendar.MONTH),
<a name="190" href="#190">190</a>                  Calendar.JANUARY+M31[i]);
<a name="191" href="#191">191</a>           }
<a name="192" href="#192">192</a>         } <strong class="jxr_keyword">else</strong> {
<a name="193" href="#193">193</a>           assertEquals(c.get(Calendar.DAY_OF_MONTH), d);
<a name="194" href="#194">194</a>           assertEquals(c.get(Calendar.MONTH), Calendar.JANUARY+M31[i]);
<a name="195" href="#195">195</a>         }
<a name="196" href="#196">196</a>       }
<a name="197" href="#197">197</a>     }
<a name="198" href="#198">198</a>       }
<a name="199" href="#199">199</a>     }
<a name="200" href="#200">200</a>   }
<a name="201" href="#201">201</a> 
<a name="202" href="#202">202</a>     <em class="jxr_javadoccomment">/**</em>
<a name="203" href="#203">203</a> <em class="jxr_javadoccomment">     * RollingCalendar test.</em>
<a name="204" href="#204">204</a> <em class="jxr_javadoccomment">     */</em>
<a name="205" href="#205">205</a>   <strong class="jxr_keyword">public</strong>
<a name="206" href="#206">206</a>   <strong class="jxr_keyword">void</strong> testRC3() {
<a name="207" href="#207">207</a>     RollingCalendar rc = <strong class="jxr_keyword">new</strong> RollingCalendar();
<a name="208" href="#208">208</a> 
<a name="209" href="#209">209</a>     rc.setType(DailyRollingFileAppender.TOP_OF_MINUTE);
<a name="210" href="#210">210</a> 
<a name="211" href="#211">211</a>     <strong class="jxr_keyword">int</strong>[] S = {0, 1, 5, 10, 21, 30, 59};
<a name="212" href="#212">212</a>     <strong class="jxr_keyword">int</strong>[] M = {0, 1, 5, 10, 21, 30, 59};
<a name="213" href="#213">213</a>     Calendar c = Calendar.getInstance();
<a name="214" href="#214">214</a> 
<a name="215" href="#215">215</a>     <em class="jxr_comment">// jan, mar, may, july, aug, oct, dec have 31 days</em>
<a name="216" href="#216">216</a>     <strong class="jxr_keyword">int</strong> [] M31 = {2,9,0,4,6,7,11};
<a name="217" href="#217">217</a> 
<a name="218" href="#218">218</a>     <strong class="jxr_keyword">for</strong>(<strong class="jxr_keyword">int</strong> i = 0; i &lt; M31.length; i ++) {
<a name="219" href="#219">219</a>       System.out.println(<span class="jxr_string">"Month = "</span>+(M31[i]+1));
<a name="220" href="#220">220</a>       <strong class="jxr_keyword">for</strong>(<strong class="jxr_keyword">int</strong> d = 1; d &lt;= 31; d++) {
<a name="221" href="#221">221</a>     <strong class="jxr_keyword">for</strong>(<strong class="jxr_keyword">int</strong> h = 0; h &lt; 23; h++) {
<a name="222" href="#222">222</a>       <strong class="jxr_keyword">for</strong>(<strong class="jxr_keyword">int</strong> m = 0; m &lt; M.length; m++) {
<a name="223" href="#223">223</a>         <strong class="jxr_keyword">for</strong>(<strong class="jxr_keyword">int</strong> s = 0; s &lt; S.length; s++) {
<a name="224" href="#224">224</a>           c.clear();
<a name="225" href="#225">225</a>           c.set(Calendar.YEAR, 20);
<a name="226" href="#226">226</a>           c.set(Calendar.MONTH, Calendar.JANUARY + M31[i]);
<a name="227" href="#227">227</a>           c.set(Calendar.DAY_OF_MONTH, d);
<a name="228" href="#228">228</a>           c.set(Calendar.HOUR_OF_DAY, h);
<a name="229" href="#229">229</a>           c.set(Calendar.MINUTE, M[m]);
<a name="230" href="#230">230</a>           c.set(Calendar.SECOND, S[s]);
<a name="231" href="#231">231</a>           c.set(Calendar.MILLISECOND, 88);
<a name="232" href="#232">232</a>           c.add(Calendar.MILLISECOND, 1);
<a name="233" href="#233">233</a> 
<a name="234" href="#234">234</a>           <strong class="jxr_keyword">boolean</strong> dltState0 = c.getTimeZone().inDaylightTime(c.getTime());
<a name="235" href="#235">235</a> 
<a name="236" href="#236">236</a>           c.setTime(rc.getNextCheckDate(c.getTime()));
<a name="237" href="#237">237</a>           c.add(Calendar.MILLISECOND, 0);
<a name="238" href="#238">238</a>           <strong class="jxr_keyword">boolean</strong> dltState1 = c.getTimeZone().inDaylightTime(c.getTime());
<a name="239" href="#239">239</a> 
<a name="240" href="#240">240</a>           assertEquals(c.get(Calendar.MILLISECOND), 0);
<a name="241" href="#241">241</a>           assertEquals(c.get(Calendar.SECOND), 0);
<a name="242" href="#242">242</a>           assertEquals(c.get(Calendar.MINUTE), (M[m]+1)%60);
<a name="243" href="#243">243</a> 
<a name="244" href="#244">244</a>           <strong class="jxr_keyword">if</strong>(M[m] == 59) {
<a name="245" href="#245">245</a>         <strong class="jxr_keyword">if</strong>(dltState0 == dltState1) {
<a name="246" href="#246">246</a>           assertEquals(c.get(Calendar.HOUR_OF_DAY), (h+1)%24);
<a name="247" href="#247">247</a>         }
<a name="248" href="#248">248</a>         <strong class="jxr_keyword">if</strong>(h == 23) {
<a name="249" href="#249">249</a>           assertEquals(c.get(Calendar.DAY_OF_MONTH), (d+1)%32);
<a name="250" href="#250">250</a>           <strong class="jxr_keyword">if</strong>(d == 31) {
<a name="251" href="#251">251</a>               assertEquals(c.get(Calendar.MONTH),
<a name="252" href="#252">252</a>                  (Calendar.JANUARY+M31[i]+1)%12);
<a name="253" href="#253">253</a>           } <strong class="jxr_keyword">else</strong> {
<a name="254" href="#254">254</a>             assertEquals(c.get(Calendar.MONTH),
<a name="255" href="#255">255</a>                  Calendar.JANUARY+M31[i]);
<a name="256" href="#256">256</a>           }
<a name="257" href="#257">257</a>         } <strong class="jxr_keyword">else</strong> {
<a name="258" href="#258">258</a>           assertEquals(c.get(Calendar.DAY_OF_MONTH), d);
<a name="259" href="#259">259</a>         }
<a name="260" href="#260">260</a>           } <strong class="jxr_keyword">else</strong> {
<a name="261" href="#261">261</a>         <em class="jxr_comment">// allow discrepancies only if we are switching from std to dls time</em>
<a name="262" href="#262">262</a>         <strong class="jxr_keyword">if</strong>(c.get(Calendar.HOUR_OF_DAY) != h) {
<a name="263" href="#263">263</a>           c.add(Calendar.HOUR_OF_DAY, +1);
<a name="264" href="#264">264</a>           <strong class="jxr_keyword">boolean</strong> dltState2 = c.getTimeZone().inDaylightTime(c.getTime());
<a name="265" href="#265">265</a>           <strong class="jxr_keyword">if</strong>(dltState1 == dltState2) {
<a name="266" href="#266">266</a>             fail(<span class="jxr_string">"No switch"</span>);
<a name="267" href="#267">267</a>           }
<a name="268" href="#268">268</a>         }
<a name="269" href="#269">269</a>         assertEquals(c.get(Calendar.DAY_OF_MONTH), d);
<a name="270" href="#270">270</a>         assertEquals(c.get(Calendar.MONTH), Calendar.JANUARY+M31[i]);
<a name="271" href="#271">271</a>           }
<a name="272" href="#272">272</a>         }
<a name="273" href="#273">273</a>       }
<a name="274" href="#274">274</a>     }
<a name="275" href="#275">275</a>       }
<a name="276" href="#276">276</a>     }
<a name="277" href="#277">277</a>   }
<a name="278" href="#278">278</a> 
<a name="279" href="#279">279</a> 
<a name="280" href="#280">280</a>     <em class="jxr_javadoccomment">/**</em>
<a name="281" href="#281">281</a> <em class="jxr_javadoccomment">     * Common test code for 3 parameter constructor.</em>
<a name="282" href="#282">282</a> <em class="jxr_javadoccomment">     *</em>
<a name="283" href="#283">283</a> <em class="jxr_javadoccomment">     * @throws IOException if IOException during test.</em>
<a name="284" href="#284">284</a> <em class="jxr_javadoccomment">     */</em>
<a name="285" href="#285">285</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> test3Param(<strong class="jxr_keyword">final</strong> String datePattern,
<a name="286" href="#286">286</a>                           <strong class="jxr_keyword">final</strong> String filename) <strong class="jxr_keyword">throws</strong> IOException {
<a name="287" href="#287">287</a>        Layout layout = <strong class="jxr_keyword">new</strong> SimpleLayout();
<a name="288" href="#288">288</a>        DailyRollingFileAppender appender =
<a name="289" href="#289">289</a>                <strong class="jxr_keyword">new</strong> DailyRollingFileAppender(layout, filename, datePattern);
<a name="290" href="#290">290</a>        assertEquals(datePattern, appender.getDatePattern());
<a name="291" href="#291">291</a>        Logger root = Logger.getRootLogger();
<a name="292" href="#292">292</a>        root.addAppender(appender);
<a name="293" href="#293">293</a>        root.info(<span class="jxr_string">"Hello, World"</span>);
<a name="294" href="#294">294</a>        assertTrue(<strong class="jxr_keyword">new</strong> File(filename).exists());
<a name="295" href="#295">295</a>     }
<a name="296" href="#296">296</a> 
<a name="297" href="#297">297</a>     <em class="jxr_javadoccomment">/**</em>
<a name="298" href="#298">298</a> <em class="jxr_javadoccomment">     * Creates an appender with an unrecognized top-of-year pattern.</em>
<a name="299" href="#299">299</a> <em class="jxr_javadoccomment">     *</em>
<a name="300" href="#300">300</a> <em class="jxr_javadoccomment">     * @throws IOException if IOException during test.</em>
<a name="301" href="#301">301</a> <em class="jxr_javadoccomment">     */</em>
<a name="302" href="#302">302</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTopOfYear() <strong class="jxr_keyword">throws</strong> IOException {
<a name="303" href="#303">303</a>         <strong class="jxr_keyword">try</strong> {
<a name="304" href="#304">304</a>             test3Param(<span class="jxr_string">"'.'yyyy"</span>, <span class="jxr_string">"output/drfa_topOfYear.log"</span>);
<a name="305" href="#305">305</a>             fail(<span class="jxr_string">"Expected illegal state exception."</span>);
<a name="306" href="#306">306</a>         } <strong class="jxr_keyword">catch</strong>(IllegalStateException ex) {
<a name="307" href="#307">307</a>             assertNotNull(ex);
<a name="308" href="#308">308</a>         }
<a name="309" href="#309">309</a>     }
<a name="310" href="#310">310</a> 
<a name="311" href="#311">311</a>     <em class="jxr_javadoccomment">/**</em>
<a name="312" href="#312">312</a> <em class="jxr_javadoccomment">     * Creates an appender with a top-of-month pattern.</em>
<a name="313" href="#313">313</a> <em class="jxr_javadoccomment">     *</em>
<a name="314" href="#314">314</a> <em class="jxr_javadoccomment">     * @throws IOException if IOException during test.</em>
<a name="315" href="#315">315</a> <em class="jxr_javadoccomment">     */</em>
<a name="316" href="#316">316</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTopOfMonth() <strong class="jxr_keyword">throws</strong> IOException {
<a name="317" href="#317">317</a>         test3Param(<span class="jxr_string">"'.'yyyy-MM"</span>, <span class="jxr_string">"output/drfa_topOfMonth.log"</span>);
<a name="318" href="#318">318</a>     }
<a name="319" href="#319">319</a> 
<a name="320" href="#320">320</a> 
<a name="321" href="#321">321</a>     <em class="jxr_javadoccomment">/**</em>
<a name="322" href="#322">322</a> <em class="jxr_javadoccomment">     * Creates an appender with a top-of-week pattern.</em>
<a name="323" href="#323">323</a> <em class="jxr_javadoccomment">     *</em>
<a name="324" href="#324">324</a> <em class="jxr_javadoccomment">     * @throws IOException if IOException during test.</em>
<a name="325" href="#325">325</a> <em class="jxr_javadoccomment">     */</em>
<a name="326" href="#326">326</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTopOfWeek() <strong class="jxr_keyword">throws</strong> IOException {
<a name="327" href="#327">327</a>         test3Param(<span class="jxr_string">"'.'yyyy-w"</span>, <span class="jxr_string">"output/drfa_topOfWeek.log"</span>);
<a name="328" href="#328">328</a>     }
<a name="329" href="#329">329</a> 
<a name="330" href="#330">330</a>     <em class="jxr_javadoccomment">/**</em>
<a name="331" href="#331">331</a> <em class="jxr_javadoccomment">     * Creates an appender with a top-of-day pattern.</em>
<a name="332" href="#332">332</a> <em class="jxr_javadoccomment">     *</em>
<a name="333" href="#333">333</a> <em class="jxr_javadoccomment">     * @throws IOException if IOException during test.</em>
<a name="334" href="#334">334</a> <em class="jxr_javadoccomment">     */</em>
<a name="335" href="#335">335</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTopOfDay() <strong class="jxr_keyword">throws</strong> IOException {
<a name="336" href="#336">336</a>         test3Param(<span class="jxr_string">"'.'yyyy-MM-dd"</span>, <span class="jxr_string">"output/drfa_topOfDay.log"</span>);
<a name="337" href="#337">337</a>     }
<a name="338" href="#338">338</a> 
<a name="339" href="#339">339</a> 
<a name="340" href="#340">340</a>     <em class="jxr_javadoccomment">/**</em>
<a name="341" href="#341">341</a> <em class="jxr_javadoccomment">     * Creates an appender with a half day pattern.</em>
<a name="342" href="#342">342</a> <em class="jxr_javadoccomment">     *</em>
<a name="343" href="#343">343</a> <em class="jxr_javadoccomment">     * @throws IOException if IOException during test.</em>
<a name="344" href="#344">344</a> <em class="jxr_javadoccomment">     */</em>
<a name="345" href="#345">345</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testHalfDay() <strong class="jxr_keyword">throws</strong> IOException {
<a name="346" href="#346">346</a>         test3Param(<span class="jxr_string">"'.'yyyy-MM-dd-a"</span>, <span class="jxr_string">"output/drfa_halfDay.log"</span>);
<a name="347" href="#347">347</a>     }
<a name="348" href="#348">348</a> 
<a name="349" href="#349">349</a>     <em class="jxr_javadoccomment">/**</em>
<a name="350" href="#350">350</a> <em class="jxr_javadoccomment">     * Creates an appender with a top-of-hour pattern.</em>
<a name="351" href="#351">351</a> <em class="jxr_javadoccomment">     *</em>
<a name="352" href="#352">352</a> <em class="jxr_javadoccomment">     * @throws IOException if IOException during test.</em>
<a name="353" href="#353">353</a> <em class="jxr_javadoccomment">     */</em>
<a name="354" href="#354">354</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTopOfHour() <strong class="jxr_keyword">throws</strong> IOException {
<a name="355" href="#355">355</a>         test3Param(<span class="jxr_string">"'.'yyyy-MM-dd-HH"</span>, <span class="jxr_string">"output/drfa_topOfHour.log"</span>);
<a name="356" href="#356">356</a>     }
<a name="357" href="#357">357</a> 
<a name="358" href="#358">358</a>     <em class="jxr_javadoccomment">/**</em>
<a name="359" href="#359">359</a> <em class="jxr_javadoccomment">     * Creates an appender with a top-of-day pattern.</em>
<a name="360" href="#360">360</a> <em class="jxr_javadoccomment">     *</em>
<a name="361" href="#361">361</a> <em class="jxr_javadoccomment">     * @throws IOException if IOException during test.</em>
<a name="362" href="#362">362</a> <em class="jxr_javadoccomment">     */</em>
<a name="363" href="#363">363</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTopOfMinute() <strong class="jxr_keyword">throws</strong> IOException {
<a name="364" href="#364">364</a>         test3Param(<span class="jxr_string">"'.'yyyy-MM-dd-HH-mm"</span>, <span class="jxr_string">"output/drfa_topOfMinute.log"</span>);
<a name="365" href="#365">365</a>     }
<a name="366" href="#366">366</a> 
<a name="367" href="#367">367</a>     <em class="jxr_javadoccomment">/**</em>
<a name="368" href="#368">368</a> <em class="jxr_javadoccomment">     * Attempts to rollOver with no date pattern set.</em>
<a name="369" href="#369">369</a> <em class="jxr_javadoccomment">     *</em>
<a name="370" href="#370">370</a> <em class="jxr_javadoccomment">     * @throws IOException if IOException during test.</em>
<a name="371" href="#371">371</a> <em class="jxr_javadoccomment">     */</em>
<a name="372" href="#372">372</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testRolloverNoPattern() <strong class="jxr_keyword">throws</strong> IOException {
<a name="373" href="#373">373</a>         Layout layout = <strong class="jxr_keyword">new</strong> SimpleLayout();
<a name="374" href="#374">374</a>         DailyRollingFileAppender appender =
<a name="375" href="#375">375</a>                 <strong class="jxr_keyword">new</strong> DailyRollingFileAppender(layout, <span class="jxr_string">"output/drfa_nopattern.log"</span>, <strong class="jxr_keyword">null</strong>);
<a name="376" href="#376">376</a> 
<a name="377" href="#377">377</a>         <a href="../../../org/apache/log4j/VectorErrorHandler.html">VectorErrorHandler</a> errorHandler = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/VectorErrorHandler.html">VectorErrorHandler</a>();
<a name="378" href="#378">378</a>         appender.setErrorHandler(errorHandler);
<a name="379" href="#379">379</a>         appender.rollOver();
<a name="380" href="#380">380</a>         assertEquals(1, errorHandler.size());
<a name="381" href="#381">381</a>         assertEquals(<span class="jxr_string">"Missing DatePattern option in rollOver()."</span>,
<a name="382" href="#382">382</a>                 errorHandler.getMessage(0));
<a name="383" href="#383">383</a>     }
<a name="384" href="#384">384</a> 
<a name="385" href="#385">385</a>     <em class="jxr_javadoccomment">/**</em>
<a name="386" href="#386">386</a> <em class="jxr_javadoccomment">     * Tests rollOver with a minute periodicity.</em>
<a name="387" href="#387">387</a> <em class="jxr_javadoccomment">     *</em>
<a name="388" href="#388">388</a> <em class="jxr_javadoccomment">     * @throws IOException</em>
<a name="389" href="#389">389</a> <em class="jxr_javadoccomment">     * @throws InterruptedException</em>
<a name="390" href="#390">390</a> <em class="jxr_javadoccomment">     */</em>
<a name="391" href="#391">391</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMinuteRollover() <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
<a name="392" href="#392">392</a>         Layout layout = <strong class="jxr_keyword">new</strong> SimpleLayout();
<a name="393" href="#393">393</a>         String filename = <span class="jxr_string">"output/drfa_minuteRollover.log"</span>;
<a name="394" href="#394">394</a>         String pattern = <span class="jxr_string">"'.'yyyy-MM-dd-HH-mm"</span>;
<a name="395" href="#395">395</a> 
<a name="396" href="#396">396</a>         DailyRollingFileAppender appender =
<a name="397" href="#397">397</a>                 <strong class="jxr_keyword">new</strong> DailyRollingFileAppender(layout,
<a name="398" href="#398">398</a>                         filename,
<a name="399" href="#399">399</a>                         pattern);
<a name="400" href="#400">400</a>         Logger root = Logger.getRootLogger();
<a name="401" href="#401">401</a>         root.addAppender(appender);
<a name="402" href="#402">402</a>         File firstFile =
<a name="403" href="#403">403</a>                 <strong class="jxr_keyword">new</strong> File(filename + <strong class="jxr_keyword">new</strong> SimpleDateFormat(pattern).format(<strong class="jxr_keyword">new</strong> Date()));
<a name="404" href="#404">404</a>         root.info(<span class="jxr_string">"Hello, World"</span>);
<a name="405" href="#405">405</a>         <em class="jxr_comment">//</em>
<a name="406" href="#406">406</a>         <em class="jxr_comment">//   create a file by that name so it has to be deleted</em>
<a name="407" href="#407">407</a>         <em class="jxr_comment">//       on rollover</em>
<a name="408" href="#408">408</a>         firstFile.createNewFile();
<a name="409" href="#409">409</a>         assertTrue(firstFile.exists());
<a name="410" href="#410">410</a>         assertEquals(0, firstFile.length());
<a name="411" href="#411">411</a> 
<a name="412" href="#412">412</a>         Calendar cal = Calendar.getInstance();
<a name="413" href="#413">413</a>         <strong class="jxr_keyword">long</strong> now = cal.getTime().getTime();
<a name="414" href="#414">414</a>         cal.set(Calendar.SECOND, 3);
<a name="415" href="#415">415</a>         cal.set(Calendar.MILLISECOND, 0);
<a name="416" href="#416">416</a>         cal.add(Calendar.MINUTE, 1);
<a name="417" href="#417">417</a>         <strong class="jxr_keyword">long</strong> until = cal.getTime().getTime();
<a name="418" href="#418">418</a>         Thread.sleep(until - now);
<a name="419" href="#419">419</a>         root.info(<span class="jxr_string">"Hello, World"</span>);
<a name="420" href="#420">420</a>         assertTrue(firstFile.exists());
<a name="421" href="#421">421</a>         assertTrue(firstFile.length() &gt; 0);
<a name="422" href="#422">422</a> 
<a name="423" href="#423">423</a>     }
<a name="424" href="#424">424</a> 
<a name="425" href="#425">425</a>     <em class="jxr_javadoccomment">/**</em>
<a name="426" href="#426">426</a> <em class="jxr_javadoccomment">     * Naive append method to combine rollover fragments.</em>
<a name="427" href="#427">427</a> <em class="jxr_javadoccomment">     * @param combined stream to which source is appended.</em>
<a name="428" href="#428">428</a> <em class="jxr_javadoccomment">     * @param source stream containing bytes to append.</em>
<a name="429" href="#429">429</a> <em class="jxr_javadoccomment">     * @param buf byte array to use in transfer.</em>
<a name="430" href="#430">430</a> <em class="jxr_javadoccomment">     * @throws IOException if io error during operation.</em>
<a name="431" href="#431">431</a> <em class="jxr_javadoccomment">     */</em>
<a name="432" href="#432">432</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> append(<strong class="jxr_keyword">final</strong> FileOutputStream combined,
<a name="433" href="#433">433</a>                                <strong class="jxr_keyword">final</strong> FileInputStream source,
<a name="434" href="#434">434</a>                                <strong class="jxr_keyword">final</strong> byte[] buf) <strong class="jxr_keyword">throws</strong> IOException {
<a name="435" href="#435">435</a>         <strong class="jxr_keyword">int</strong> count1 = source.read(buf);
<a name="436" href="#436">436</a>         <strong class="jxr_keyword">if</strong> (count1 &gt; 0) {
<a name="437" href="#437">437</a>             combined.write(buf, 0, count1);
<a name="438" href="#438">438</a>         }
<a name="439" href="#439">439</a>         source.close();
<a name="440" href="#440">440</a>     }
<a name="441" href="#441">441</a> 
<a name="442" href="#442">442</a>     <em class="jxr_javadoccomment">/**</em>
<a name="443" href="#443">443</a> <em class="jxr_javadoccomment">     * Tests rollOver when log file is unabled to be renamed.</em>
<a name="444" href="#444">444</a> <em class="jxr_javadoccomment">     * See bug 43374.</em>
<a name="445" href="#445">445</a> <em class="jxr_javadoccomment">     *</em>
<a name="446" href="#446">446</a> <em class="jxr_javadoccomment">     * @throws IOException if io error.</em>
<a name="447" href="#447">447</a> <em class="jxr_javadoccomment">     * @throws InterruptedException if test interrupted while waiting for the start of the next minute.</em>
<a name="448" href="#448">448</a> <em class="jxr_javadoccomment">     */</em>
<a name="449" href="#449">449</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testBlockedRollover() <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
<a name="450" href="#450">450</a>         Layout layout = <strong class="jxr_keyword">new</strong> SimpleLayout();
<a name="451" href="#451">451</a>         String filename = <span class="jxr_string">"output/drfa_blockedRollover.log"</span>;
<a name="452" href="#452">452</a>         String pattern = <span class="jxr_string">"'.'yyyy-MM-dd-HH-mm"</span>;
<a name="453" href="#453">453</a> 
<a name="454" href="#454">454</a> 
<a name="455" href="#455">455</a>         Date start = <strong class="jxr_keyword">new</strong> Date();
<a name="456" href="#456">456</a>         DailyRollingFileAppender appender =
<a name="457" href="#457">457</a>                 <strong class="jxr_keyword">new</strong> DailyRollingFileAppender(layout,
<a name="458" href="#458">458</a>                         filename,
<a name="459" href="#459">459</a>                         pattern);
<a name="460" href="#460">460</a>         appender.setAppend(false);
<a name="461" href="#461">461</a>         Logger root = Logger.getRootLogger();
<a name="462" href="#462">462</a>         root.addAppender(appender);
<a name="463" href="#463">463</a>         <em class="jxr_comment">//</em>
<a name="464" href="#464">464</a>         <em class="jxr_comment">//   open next two anticipated rollover file names</em>
<a name="465" href="#465">465</a>         <em class="jxr_comment">//</em>
<a name="466" href="#466">466</a>         File block1 = <strong class="jxr_keyword">new</strong> File(filename + <strong class="jxr_keyword">new</strong> SimpleDateFormat(pattern).format(start));
<a name="467" href="#467">467</a>         File block2 = <strong class="jxr_keyword">new</strong> File(filename + <strong class="jxr_keyword">new</strong> SimpleDateFormat(pattern).format(
<a name="468" href="#468">468</a>                 <strong class="jxr_keyword">new</strong> Date(start.getTime() + 60000)));
<a name="469" href="#469">469</a>         FileOutputStream os1 = <strong class="jxr_keyword">new</strong> FileOutputStream(block1);
<a name="470" href="#470">470</a>         FileOutputStream os2 = <strong class="jxr_keyword">new</strong> FileOutputStream(block2);
<a name="471" href="#471">471</a>         root.info(<span class="jxr_string">"Prior to rollover"</span>);
<a name="472" href="#472">472</a>         <em class="jxr_comment">//</em>
<a name="473" href="#473">473</a>         <em class="jxr_comment">//   sleep until three seconds into next minute</em>
<a name="474" href="#474">474</a>         <em class="jxr_comment">//</em>
<a name="475" href="#475">475</a>         Thread.sleep(63000 - (start.getTime() % 60000));
<a name="476" href="#476">476</a>         <em class="jxr_comment">//</em>
<a name="477" href="#477">477</a>         <em class="jxr_comment">//  should trigger failed rollover</em>
<a name="478" href="#478">478</a>         <em class="jxr_comment">//</em>
<a name="479" href="#479">479</a>         root.info(<span class="jxr_string">"Rollover attempt while blocked"</span>);
<a name="480" href="#480">480</a>         os1.close();
<a name="481" href="#481">481</a>         os2.close();
<a name="482" href="#482">482</a>         root.info(<span class="jxr_string">"Message after block removed"</span>);
<a name="483" href="#483">483</a>         appender.close();
<a name="484" href="#484">484</a>         <em class="jxr_comment">//</em>
<a name="485" href="#485">485</a>         <em class="jxr_comment">//   combine base file and potential rollovers</em>
<a name="486" href="#486">486</a>         <em class="jxr_comment">//      since rollover may or may not have been blocked</em>
<a name="487" href="#487">487</a>         <em class="jxr_comment">//      depending on platform.</em>
<a name="488" href="#488">488</a>         <em class="jxr_comment">//</em>
<a name="489" href="#489">489</a>         String combinedFilename = <span class="jxr_string">"output/drfa_blockedRollover.combined"</span>;
<a name="490" href="#490">490</a>         FileOutputStream combined = <strong class="jxr_keyword">new</strong> FileOutputStream(combinedFilename);
<a name="491" href="#491">491</a>         byte[] buf = <strong class="jxr_keyword">new</strong> byte[500];
<a name="492" href="#492">492</a>         append(combined, <strong class="jxr_keyword">new</strong> FileInputStream(block1), buf);
<a name="493" href="#493">493</a>         append(combined, <strong class="jxr_keyword">new</strong> FileInputStream(block2), buf);
<a name="494" href="#494">494</a>         append(combined, <strong class="jxr_keyword">new</strong> FileInputStream(filename), buf);
<a name="495" href="#495">495</a>         combined.close();
<a name="496" href="#496">496</a>         assertTrue(Compare.compare(combinedFilename,
<a name="497" href="#497">497</a>                 <span class="jxr_string">"witness/drfa_blockedRollover.log"</span>));
<a name="498" href="#498">498</a>     }
<a name="499" href="#499">499</a> 
<a name="500" href="#500">500</a>     <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> Check that the computed rollover period for a pattern containing a week as the finest unit is set to be</em>
<a name="501" href="#501">501</a> <em class="jxr_javadoccomment">     * a week.  Due to a locale mismatch this was incorrect in non-English locales.  See bug 40888.</em>
<a name="502" href="#502">502</a> <em class="jxr_javadoccomment">     *</em>
<a name="503" href="#503">503</a> <em class="jxr_javadoccomment">     */</em>
<a name="504" href="#504">504</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testWeeklyRollover() {
<a name="505" href="#505">505</a>         DailyRollingFileAppender drfa = <strong class="jxr_keyword">new</strong> DailyRollingFileAppender();
<a name="506" href="#506">506</a>     	drfa.setDatePattern(<span class="jxr_string">"'.'yyyy-ww"</span>);
<a name="507" href="#507">507</a> 		<strong class="jxr_keyword">int</strong> checkPeriod = drfa.computeCheckPeriod();
<a name="508" href="#508">508</a> 		assertEquals(DailyRollingFileAppender.TOP_OF_WEEK, checkPeriod);
<a name="509" href="#509">509</a>     }
<a name="510" href="#510">510</a> 
<a name="511" href="#511">511</a> 
<a name="512" href="#512">512</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

