<!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>CachedDateFormatTest 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.pattern;
<a name="19" href="#19">19</a>  
<a name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> junit.framework.Test;
<a name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> junit.framework.TestCase;
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> junit.framework.TestSuite;
<a name="23" href="#23">23</a>  
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.pattern.CachedDateFormat;
<a name="25" href="#25">25</a>  
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.text.DateFormat;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.TimeZone;
<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> java.text.SimpleDateFormat;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> java.util.Locale;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> java.util.Calendar;
<a name="32" href="#32">32</a>  
<a name="33" href="#33">33</a>  <em class="jxr_javadoccomment">/**</em>
<a name="34" href="#34">34</a>  <em class="jxr_javadoccomment">   Unit test {@link AbsoluteTimeDateFormat}.</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">final</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/log4j/pattern/CachedDateFormatTest.html">CachedDateFormatTest</a>
<a name="38" href="#38">38</a>      <strong class="jxr_keyword">extends</strong> TestCase {
<a name="39" href="#39">39</a>  
<a name="40" href="#40">40</a>    <em class="jxr_javadoccomment">/**</em>
<a name="41" href="#41">41</a>  <em class="jxr_javadoccomment">   * Test constructor</em>
<a name="42" href="#42">42</a>  <em class="jxr_javadoccomment">   * @param name String test name</em>
<a name="43" href="#43">43</a>  <em class="jxr_javadoccomment">   */</em>
<a name="44" href="#44">44</a>    <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/log4j/pattern/CachedDateFormatTest.html">CachedDateFormatTest</a>(String name) {
<a name="45" href="#45">45</a>      <strong class="jxr_keyword">super</strong>(name);
<a name="46" href="#46">46</a>    }
<a name="47" href="#47">47</a>    
<a name="48" href="#48">48</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> DateFormat createAbsoluteTimeDateFormat(TimeZone timeZone) {
<a name="49" href="#49">49</a>        DateFormat df = <strong class="jxr_keyword">new</strong> SimpleDateFormat(<span class="jxr_string">"HH:mm:ss,SSS"</span>);
<a name="50" href="#50">50</a>        df.setTimeZone(timeZone);
<a name="51" href="#51">51</a>        <strong class="jxr_keyword">return</strong> df;
<a name="52" href="#52">52</a>    }
<a name="53" href="#53">53</a>  
<a name="54" href="#54">54</a>  
<a name="55" href="#55">55</a>    <em class="jxr_javadoccomment">/**</em>
<a name="56" href="#56">56</a>  <em class="jxr_javadoccomment">   * Timezone representing GMT.</em>
<a name="57" href="#57">57</a>  <em class="jxr_javadoccomment">   */</em>
<a name="58" href="#58">58</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> TimeZone GMT = TimeZone.getTimeZone(<span class="jxr_string">"GMT"</span>);
<a name="59" href="#59">59</a>  
<a name="60" href="#60">60</a>    <em class="jxr_javadoccomment">/**</em>
<a name="61" href="#61">61</a>  <em class="jxr_javadoccomment">   * Timezone for Chicago, Ill. USA.</em>
<a name="62" href="#62">62</a>  <em class="jxr_javadoccomment">   */</em>
<a name="63" href="#63">63</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> TimeZone CHICAGO = TimeZone.getTimeZone(
<a name="64" href="#64">64</a>        <span class="jxr_string">"America/Chicago"</span>);
<a name="65" href="#65">65</a>  
<a name="66" href="#66">66</a>    <em class="jxr_javadoccomment">/**</em>
<a name="67" href="#67">67</a>  <em class="jxr_javadoccomment">   * Test multiple calls in close intervals.</em>
<a name="68" href="#68">68</a>  <em class="jxr_javadoccomment">   */</em>
<a name="69" href="#69">69</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> test1() {
<a name="70" href="#70">70</a>      <em class="jxr_comment">//   subsequent calls within one minute</em>
<a name="71" href="#71">71</a>      <em class="jxr_comment">//     are optimized to reuse previous formatted value</em>
<a name="72" href="#72">72</a>      <em class="jxr_comment">//     make a couple of nearly spaced calls</em>
<a name="73" href="#73">73</a>      DateFormat gmtFormat = <strong class="jxr_keyword">new</strong> CachedDateFormat(createAbsoluteTimeDateFormat(GMT), 1000);
<a name="74" href="#74">74</a>      <strong class="jxr_keyword">long</strong> ticks = 12601L * 86400000L;
<a name="75" href="#75">75</a>      Date jul1 = <strong class="jxr_keyword">new</strong> Date(ticks);
<a name="76" href="#76">76</a>      assertEquals(<span class="jxr_string">"00:00:00,000"</span>, gmtFormat.format(jul1));
<a name="77" href="#77">77</a>      Date plus8ms = <strong class="jxr_keyword">new</strong> Date(ticks + 8);
<a name="78" href="#78">78</a>      assertEquals(<span class="jxr_string">"00:00:00,008"</span>, gmtFormat.format(plus8ms));
<a name="79" href="#79">79</a>      Date plus17ms = <strong class="jxr_keyword">new</strong> Date(ticks + 17);
<a name="80" href="#80">80</a>      assertEquals(<span class="jxr_string">"00:00:00,017"</span>, gmtFormat.format(plus17ms));
<a name="81" href="#81">81</a>      Date plus237ms = <strong class="jxr_keyword">new</strong> Date(ticks + 237);
<a name="82" href="#82">82</a>      assertEquals(<span class="jxr_string">"00:00:00,237"</span>, gmtFormat.format(plus237ms));
<a name="83" href="#83">83</a>      Date plus1415ms = <strong class="jxr_keyword">new</strong> Date(ticks + 1415);
<a name="84" href="#84">84</a>      assertEquals(<span class="jxr_string">"00:00:01,415"</span>, gmtFormat.format(plus1415ms));
<a name="85" href="#85">85</a>    }
<a name="86" href="#86">86</a>  
<a name="87" href="#87">87</a>    <em class="jxr_javadoccomment">/**</em>
<a name="88" href="#88">88</a>  <em class="jxr_javadoccomment">   *  Check for interaction between caches.</em>
<a name="89" href="#89">89</a>  <em class="jxr_javadoccomment">   */</em>
<a name="90" href="#90">90</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> test2() {
<a name="91" href="#91">91</a>        Date jul2 = <strong class="jxr_keyword">new</strong> Date(12602L * 86400000L);
<a name="92" href="#92">92</a>        DateFormat gmtFormat = <strong class="jxr_keyword">new</strong> CachedDateFormat(createAbsoluteTimeDateFormat(GMT), 1000);
<a name="93" href="#93">93</a>        DateFormat chicagoFormat = <strong class="jxr_keyword">new</strong> CachedDateFormat(createAbsoluteTimeDateFormat(CHICAGO), 1000);
<a name="94" href="#94">94</a>        assertEquals(<span class="jxr_string">"00:00:00,000"</span>, gmtFormat.format(jul2));
<a name="95" href="#95">95</a>        assertEquals(<span class="jxr_string">"19:00:00,000"</span>, chicagoFormat.format(jul2));
<a name="96" href="#96">96</a>        assertEquals(<span class="jxr_string">"00:00:00,000"</span>, gmtFormat.format(jul2));
<a name="97" href="#97">97</a>    }
<a name="98" href="#98">98</a>  
<a name="99" href="#99">99</a>    <em class="jxr_javadoccomment">/**</em>
<a name="100" href="#100">100</a> <em class="jxr_javadoccomment">   * Test multiple calls in close intervals prior to 1 Jan 1970.</em>
<a name="101" href="#101">101</a> <em class="jxr_javadoccomment">   */</em>
<a name="102" href="#102">102</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> test3() {
<a name="103" href="#103">103</a>     <em class="jxr_comment">//   subsequent calls within one minute</em>
<a name="104" href="#104">104</a>     <em class="jxr_comment">//     are optimized to reuse previous formatted value</em>
<a name="105" href="#105">105</a>     <em class="jxr_comment">//     make a couple of nearly spaced calls</em>
<a name="106" href="#106">106</a>     DateFormat gmtFormat = <strong class="jxr_keyword">new</strong> CachedDateFormat(
<a name="107" href="#107">107</a>        createAbsoluteTimeDateFormat(GMT), 1000);
<a name="108" href="#108">108</a>     <em class="jxr_comment">//</em>
<a name="109" href="#109">109</a>     <em class="jxr_comment">//  if the first call was exactly on an integral</em>
<a name="110" href="#110">110</a>     <em class="jxr_comment">//     second, it would not test the round toward zero compensation</em>
<a name="111" href="#111">111</a>     <strong class="jxr_keyword">long</strong> ticks = -7L * 86400000L;
<a name="112" href="#112">112</a>     Date jul1 = <strong class="jxr_keyword">new</strong> Date(ticks + 8);
<a name="113" href="#113">113</a>     assertEquals(<span class="jxr_string">"00:00:00,008"</span>, gmtFormat.format(jul1));
<a name="114" href="#114">114</a>     Date plus8ms = <strong class="jxr_keyword">new</strong> Date(ticks + 16);
<a name="115" href="#115">115</a>     assertEquals(<span class="jxr_string">"00:00:00,016"</span>, gmtFormat.format(plus8ms));
<a name="116" href="#116">116</a>     Date plus17ms = <strong class="jxr_keyword">new</strong> Date(ticks + 23);
<a name="117" href="#117">117</a>     assertEquals(<span class="jxr_string">"00:00:00,023"</span>, gmtFormat.format(plus17ms));
<a name="118" href="#118">118</a>     Date plus237ms = <strong class="jxr_keyword">new</strong> Date(ticks + 245);
<a name="119" href="#119">119</a>     assertEquals(<span class="jxr_string">"00:00:00,245"</span>, gmtFormat.format(plus237ms));
<a name="120" href="#120">120</a>     Date plus1415ms = <strong class="jxr_keyword">new</strong> Date(ticks + 1423);
<a name="121" href="#121">121</a>     assertEquals(<span class="jxr_string">"00:00:01,423"</span>, gmtFormat.format(plus1415ms));
<a name="122" href="#122">122</a>   }
<a name="123" href="#123">123</a> 
<a name="124" href="#124">124</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> test4() {
<a name="125" href="#125">125</a>     <em class="jxr_comment">//  subsequent calls within one minute are optimized to reuse previous </em>
<a name="126" href="#126">126</a>     <em class="jxr_comment">//  formatted value. make a couple of nearly spaced calls</em>
<a name="127" href="#127">127</a>     <em class="jxr_comment">// (Note: 'Z' is JDK 1.4, using 'z' instead.)</em>
<a name="128" href="#128">128</a>     SimpleDateFormat baseFormat =
<a name="129" href="#129">129</a>          <strong class="jxr_keyword">new</strong> SimpleDateFormat(<span class="jxr_string">"EEE, MMM dd, HH:mm:ss.SSS z"</span>, Locale.ENGLISH);
<a name="130" href="#130">130</a>     DateFormat cachedFormat = <strong class="jxr_keyword">new</strong> CachedDateFormat(baseFormat, 1000);
<a name="131" href="#131">131</a>     <em class="jxr_comment">//</em>
<a name="132" href="#132">132</a>     <em class="jxr_comment">//   use a date in 2000 to attempt to confuse the millisecond locator</em>
<a name="133" href="#133">133</a>     <strong class="jxr_keyword">long</strong> ticks = 11141L * 86400000L;
<a name="134" href="#134">134</a>     Date jul1 = <strong class="jxr_keyword">new</strong> Date(ticks);
<a name="135" href="#135">135</a>     assertEquals(baseFormat.format(jul1), cachedFormat.format(jul1));
<a name="136" href="#136">136</a>     Date plus8ms = <strong class="jxr_keyword">new</strong> Date(ticks + 8);
<a name="137" href="#137">137</a>     baseFormat.format(plus8ms);
<a name="138" href="#138">138</a>     cachedFormat.format(plus8ms);
<a name="139" href="#139">139</a>     assertEquals(baseFormat.format(plus8ms), cachedFormat.format(plus8ms));
<a name="140" href="#140">140</a>     Date plus17ms = <strong class="jxr_keyword">new</strong> Date(ticks + 17);
<a name="141" href="#141">141</a>     assertEquals(baseFormat.format(plus17ms), cachedFormat.format(plus17ms));
<a name="142" href="#142">142</a>     Date plus237ms = <strong class="jxr_keyword">new</strong> Date(ticks + 237);
<a name="143" href="#143">143</a>     assertEquals(baseFormat.format(plus237ms), cachedFormat.format(plus237ms));
<a name="144" href="#144">144</a>     Date plus1415ms = <strong class="jxr_keyword">new</strong> Date(ticks + 1415);
<a name="145" href="#145">145</a>     assertEquals(baseFormat.format(plus1415ms), cachedFormat.format(plus1415ms));
<a name="146" href="#146">146</a>   }
<a name="147" href="#147">147</a> 
<a name="148" href="#148">148</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> test5() {
<a name="149" href="#149">149</a>     <em class="jxr_comment">//   subsequent calls within one minute</em>
<a name="150" href="#150">150</a>     <em class="jxr_comment">//     are optimized to reuse previous formatted value</em>
<a name="151" href="#151">151</a>     <em class="jxr_comment">//     make a couple of nearly spaced calls</em>
<a name="152" href="#152">152</a>     <em class="jxr_comment">// (Note: 'Z' is JDK 1.4, using 'z' instead.)</em>
<a name="153" href="#153">153</a>     Locale thai = <strong class="jxr_keyword">new</strong> Locale(<span class="jxr_string">"th"</span>, <span class="jxr_string">"TH"</span>);
<a name="154" href="#154">154</a>     SimpleDateFormat baseFormat =
<a name="155" href="#155">155</a>          <strong class="jxr_keyword">new</strong> SimpleDateFormat(<span class="jxr_string">"EEE, MMM dd, HH:mm:ss.SSS z"</span>, thai);
<a name="156" href="#156">156</a>     DateFormat cachedFormat = <strong class="jxr_keyword">new</strong> CachedDateFormat(baseFormat, 1000);
<a name="157" href="#157">157</a>     <em class="jxr_comment">//</em>
<a name="158" href="#158">158</a>     <em class="jxr_comment">// use a date in the year 2000 CE to attempt to confuse the millisecond locator</em>
<a name="159" href="#159">159</a>     <strong class="jxr_keyword">long</strong> ticks = 11141L * 86400000L;
<a name="160" href="#160">160</a>    
<a name="161" href="#161">161</a>     String sx;
<a name="162" href="#162">162</a>     Date jul1 = <strong class="jxr_keyword">new</strong> Date(ticks);
<a name="163" href="#163">163</a>     sx = cachedFormat.format(jul1);
<a name="164" href="#164">164</a>     System.out.println(baseFormat.format(jul1));
<a name="165" href="#165">165</a>     System.out.println(sx);
<a name="166" href="#166">166</a>     assertEquals(baseFormat.format(jul1), sx);
<a name="167" href="#167">167</a>     
<a name="168" href="#168">168</a>     sx = cachedFormat.format(jul1);
<a name="169" href="#169">169</a>     System.out.println(baseFormat.format(jul1));
<a name="170" href="#170">170</a>     System.out.println(sx);
<a name="171" href="#171">171</a>     assertEquals(baseFormat.format(jul1), sx);
<a name="172" href="#172">172</a>     
<a name="173" href="#173">173</a>     
<a name="174" href="#174">174</a>     Date plus8ms = <strong class="jxr_keyword">new</strong> Date(ticks + 8);
<a name="175" href="#175">175</a>     sx = cachedFormat.format(plus8ms);
<a name="176" href="#176">176</a>     System.out.println(baseFormat.format(plus8ms));
<a name="177" href="#177">177</a>     System.out.println(sx);
<a name="178" href="#178">178</a>     
<a name="179" href="#179">179</a>     assertEquals(baseFormat.format(plus8ms), sx);
<a name="180" href="#180">180</a>     
<a name="181" href="#181">181</a>     Date plus17ms = <strong class="jxr_keyword">new</strong> Date(ticks + 17);
<a name="182" href="#182">182</a>     assertEquals(baseFormat.format(plus17ms), cachedFormat.format(plus17ms));
<a name="183" href="#183">183</a>     
<a name="184" href="#184">184</a>     Date plus237ms = <strong class="jxr_keyword">new</strong> Date(ticks + 237);
<a name="185" href="#185">185</a>     assertEquals(baseFormat.format(plus237ms), cachedFormat.format(plus237ms));
<a name="186" href="#186">186</a>     
<a name="187" href="#187">187</a>     Date plus1415ms = <strong class="jxr_keyword">new</strong> Date(ticks + 1415);
<a name="188" href="#188">188</a>     assertEquals(baseFormat.format(plus1415ms), cachedFormat.format(plus1415ms));
<a name="189" href="#189">189</a>   }
<a name="190" href="#190">190</a> 
<a name="191" href="#191">191</a>   <em class="jxr_javadoccomment">/**</em>
<a name="192" href="#192">192</a> <em class="jxr_javadoccomment">   * Checks that getNumberFormat does not return null.</em>
<a name="193" href="#193">193</a> <em class="jxr_javadoccomment">   */</em>
<a name="194" href="#194">194</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> test6() {
<a name="195" href="#195">195</a>     assertNotNull(<strong class="jxr_keyword">new</strong> CachedDateFormat(<strong class="jxr_keyword">new</strong> SimpleDateFormat(), 1000).getNumberFormat());
<a name="196" href="#196">196</a>   }
<a name="197" href="#197">197</a> 
<a name="198" href="#198">198</a>   <em class="jxr_javadoccomment">/**</em>
<a name="199" href="#199">199</a> <em class="jxr_javadoccomment">   * Set time zone on cached and check that it is effective.</em>
<a name="200" href="#200">200</a> <em class="jxr_javadoccomment">   */</em>
<a name="201" href="#201">201</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> test8() {
<a name="202" href="#202">202</a>     DateFormat baseFormat = <strong class="jxr_keyword">new</strong> SimpleDateFormat(<span class="jxr_string">"yyyy-MM-dd HH:mm:ss,SSS"</span>);
<a name="203" href="#203">203</a>     baseFormat.setTimeZone(GMT);
<a name="204" href="#204">204</a>     DateFormat cachedFormat = <strong class="jxr_keyword">new</strong> CachedDateFormat(baseFormat, 1000);
<a name="205" href="#205">205</a>     Date jul4 = <strong class="jxr_keyword">new</strong> Date(12603L * 86400000L);
<a name="206" href="#206">206</a>     assertEquals(<span class="jxr_string">"2004-07-04 00:00:00,000"</span>, cachedFormat.format(jul4));
<a name="207" href="#207">207</a>     cachedFormat.setTimeZone(TimeZone.getTimeZone(<span class="jxr_string">"GMT-6"</span>));
<a name="208" href="#208">208</a>     assertEquals(<span class="jxr_string">"2004-07-03 18:00:00,000"</span>, cachedFormat.format(jul4));
<a name="209" href="#209">209</a>   }
<a name="210" href="#210">210</a> 
<a name="211" href="#211">211</a> 
<a name="212" href="#212">212</a>   <em class="jxr_javadoccomment">/**</em>
<a name="213" href="#213">213</a> <em class="jxr_javadoccomment">   * Test of caching when less than three millisecond digits are specified.</em>
<a name="214" href="#214">214</a> <em class="jxr_javadoccomment">   */</em>
<a name="215" href="#215">215</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> test9() {
<a name="216" href="#216">216</a>     <em class="jxr_comment">// (Note: 'Z' is JDK 1.4, using 'z' instead.)</em>
<a name="217" href="#217">217</a>     DateFormat baseFormat = <strong class="jxr_keyword">new</strong> SimpleDateFormat(<span class="jxr_string">"yyyy-MMMM-dd HH:mm:ss,SS z"</span>, Locale.US);
<a name="218" href="#218">218</a>     DateFormat cachedFormat = <strong class="jxr_keyword">new</strong> CachedDateFormat(baseFormat, 1000);
<a name="219" href="#219">219</a>     TimeZone cet = TimeZone.getTimeZone(<span class="jxr_string">"GMT+1"</span>);
<a name="220" href="#220">220</a>     cachedFormat.setTimeZone(cet);
<a name="221" href="#221">221</a>     
<a name="222" href="#222">222</a>     Calendar c = Calendar.getInstance();
<a name="223" href="#223">223</a>     c.set(2004, Calendar.DECEMBER, 12, 20, 0);
<a name="224" href="#224">224</a>     c.set(Calendar.SECOND, 37);
<a name="225" href="#225">225</a>     c.set(Calendar.MILLISECOND, 23);
<a name="226" href="#226">226</a>     c.setTimeZone(cet);
<a name="227" href="#227">227</a> 
<a name="228" href="#228">228</a>     String expected = baseFormat.format(c.getTime());
<a name="229" href="#229">229</a>     String s = cachedFormat.format(c.getTime());
<a name="230" href="#230">230</a>     assertEquals(expected, s);
<a name="231" href="#231">231</a> 
<a name="232" href="#232">232</a>     c.set(2005, Calendar.JANUARY, 1, 0, 0);
<a name="233" href="#233">233</a>     c.set(Calendar.SECOND, 13);
<a name="234" href="#234">234</a>     c.set(Calendar.MILLISECOND, 905);
<a name="235" href="#235">235</a> 
<a name="236" href="#236">236</a>     expected = baseFormat.format(c.getTime());
<a name="237" href="#237">237</a>     s = cachedFormat.format(c.getTime());
<a name="238" href="#238">238</a>     assertEquals(expected, s);
<a name="239" href="#239">239</a>   }
<a name="240" href="#240">240</a>   
<a name="241" href="#241">241</a> 
<a name="242" href="#242">242</a>   <em class="jxr_javadoccomment">/**</em>
<a name="243" href="#243">243</a> <em class="jxr_javadoccomment">   * Test when millisecond position moves but length remains constant.</em>
<a name="244" href="#244">244</a> <em class="jxr_javadoccomment">   */</em>
<a name="245" href="#245">245</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> test10() {
<a name="246" href="#246">246</a>     DateFormat baseFormat = <strong class="jxr_keyword">new</strong> SimpleDateFormat(<span class="jxr_string">"MMMM SSS EEEEEE"</span>, Locale.US);
<a name="247" href="#247">247</a>     DateFormat cachedFormat = <strong class="jxr_keyword">new</strong> CachedDateFormat(baseFormat, 1000);
<a name="248" href="#248">248</a>     TimeZone cet = TimeZone.getTimeZone(<span class="jxr_string">"GMT+1"</span>);
<a name="249" href="#249">249</a>     cachedFormat.setTimeZone(cet);
<a name="250" href="#250">250</a>     
<a name="251" href="#251">251</a>     Calendar c = Calendar.getInstance();
<a name="252" href="#252">252</a>     c.set(2004, Calendar.OCTOBER, 5, 20, 0);
<a name="253" href="#253">253</a>     c.set(Calendar.SECOND, 37);
<a name="254" href="#254">254</a>     c.set(Calendar.MILLISECOND, 23);
<a name="255" href="#255">255</a>     c.setTimeZone(cet);
<a name="256" href="#256">256</a> 
<a name="257" href="#257">257</a>     String expected = baseFormat.format(c.getTime());
<a name="258" href="#258">258</a>     String s = cachedFormat.format(c.getTime());
<a name="259" href="#259">259</a>     assertEquals(expected, s);
<a name="260" href="#260">260</a> 
<a name="261" href="#261">261</a>     c.set(2004, Calendar.NOVEMBER, 1, 0, 0);
<a name="262" href="#262">262</a>     c.set(Calendar.MILLISECOND, 23);
<a name="263" href="#263">263</a>     expected = baseFormat.format(c.getTime());
<a name="264" href="#264">264</a>     s = cachedFormat.format(c.getTime());
<a name="265" href="#265">265</a>     assertEquals(expected, s);
<a name="266" href="#266">266</a> 
<a name="267" href="#267">267</a> 
<a name="268" href="#268">268</a>     c.set(Calendar.MILLISECOND, 984);
<a name="269" href="#269">269</a>     expected = baseFormat.format(c.getTime());
<a name="270" href="#270">270</a>     s = cachedFormat.format(c.getTime());
<a name="271" href="#271">271</a>     assertEquals(expected, s);
<a name="272" href="#272">272</a>   }
<a name="273" href="#273">273</a> 
<a name="274" href="#274">274</a>   <em class="jxr_javadoccomment">/**</em>
<a name="275" href="#275">275</a> <em class="jxr_javadoccomment">   * Test that tests if caching is skipped if only "SS"</em>
<a name="276" href="#276">276</a> <em class="jxr_javadoccomment">   *     is specified.</em>
<a name="277" href="#277">277</a> <em class="jxr_javadoccomment">   */</em>
<a name="278" href="#278">278</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> test11() {
<a name="279" href="#279">279</a>      <em class="jxr_comment">//</em>
<a name="280" href="#280">280</a>      <em class="jxr_comment">//   Earlier versions could be tricked by "SS0" patterns.</em>
<a name="281" href="#281">281</a>      <em class="jxr_comment">//</em>
<a name="282" href="#282">282</a>      String badPattern = <span class="jxr_string">"ss,SS0"</span>;
<a name="283" href="#283">283</a>      SimpleDateFormat simpleFormat = <strong class="jxr_keyword">new</strong> SimpleDateFormat(badPattern);
<a name="284" href="#284">284</a>      SimpleDateFormat baseFormat = <strong class="jxr_keyword">new</strong> SimpleDateFormat(badPattern);
<a name="285" href="#285">285</a>      DateFormat gmtFormat = <strong class="jxr_keyword">new</strong> CachedDateFormat(simpleFormat, 1000);
<a name="286" href="#286">286</a>      gmtFormat.setTimeZone(GMT);
<a name="287" href="#287">287</a>      baseFormat.setTimeZone(GMT);
<a name="288" href="#288">288</a> 
<a name="289" href="#289">289</a>      <em class="jxr_comment">//</em>
<a name="290" href="#290">290</a>      <em class="jxr_comment">// The first request has to 100 ms after an ordinal second</em>
<a name="291" href="#291">291</a>      <em class="jxr_comment">//    to push the literal zero out of the pattern check</em>
<a name="292" href="#292">292</a>      <strong class="jxr_keyword">long</strong> ticks = 11142L * 86400000L;
<a name="293" href="#293">293</a>      Date jul2 = <strong class="jxr_keyword">new</strong> Date(ticks + 120);
<a name="294" href="#294">294</a>      String expected = baseFormat.format(jul2);
<a name="295" href="#295">295</a>      assertEquals(expected, gmtFormat.format(jul2));
<a name="296" href="#296">296</a>      jul2.setTime(ticks + 87);
<a name="297" href="#297">297</a>      
<a name="298" href="#298">298</a> 
<a name="299" href="#299">299</a>      <em class="jxr_comment">//</em>
<a name="300" href="#300">300</a>      <em class="jxr_comment">//   Cache gives 00,087</em>
<a name="301" href="#301">301</a>      expected = baseFormat.format(jul2);
<a name="302" href="#302">302</a>      assertEquals(expected, gmtFormat.format(jul2));
<a name="303" href="#303">303</a> 
<a name="304" href="#304">304</a>   }
<a name="305" href="#305">305</a> 
<a name="306" href="#306">306</a>   <em class="jxr_javadoccomment">/**</em>
<a name="307" href="#307">307</a> <em class="jxr_javadoccomment">   * Check pattern location for ISO8601</em>
<a name="308" href="#308">308</a> <em class="jxr_javadoccomment">   */</em>
<a name="309" href="#309">309</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> test12() {
<a name="310" href="#310">310</a>      SimpleDateFormat df = <strong class="jxr_keyword">new</strong> SimpleDateFormat(<span class="jxr_string">"yyyy-MM-dd HH:mm:ss,SSS"</span>);
<a name="311" href="#311">311</a>      <strong class="jxr_keyword">long</strong> ticks = 11142L * 86400000L;
<a name="312" href="#312">312</a>      String formatted = df.format(<strong class="jxr_keyword">new</strong> Date(ticks));
<a name="313" href="#313">313</a>      <strong class="jxr_keyword">int</strong> millisecondStart = CachedDateFormat.findMillisecondStart(ticks, formatted, df);
<a name="314" href="#314">314</a>      assertEquals(20, millisecondStart);     
<a name="315" href="#315">315</a>   }
<a name="316" href="#316">316</a> 
<a name="317" href="#317">317</a>   <em class="jxr_javadoccomment">/**</em>
<a name="318" href="#318">318</a> <em class="jxr_javadoccomment">   * Check pattern location for DATE</em>
<a name="319" href="#319">319</a> <em class="jxr_javadoccomment">   */</em>
<a name="320" href="#320">320</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> test13() {
<a name="321" href="#321">321</a>      SimpleDateFormat df = <strong class="jxr_keyword">new</strong> SimpleDateFormat(<span class="jxr_string">"yyyy-MM-dd"</span>);
<a name="322" href="#322">322</a>      <strong class="jxr_keyword">long</strong> ticks = 11142L * 86400000L;
<a name="323" href="#323">323</a>      String formatted = df.format(<strong class="jxr_keyword">new</strong> Date(ticks));
<a name="324" href="#324">324</a>      <strong class="jxr_keyword">int</strong> millisecondStart = CachedDateFormat.findMillisecondStart(ticks, formatted, df);
<a name="325" href="#325">325</a>      assertEquals(CachedDateFormat.NO_MILLISECONDS, millisecondStart);     
<a name="326" href="#326">326</a>   }
<a name="327" href="#327">327</a> 
<a name="328" href="#328">328</a>   <em class="jxr_javadoccomment">/**</em>
<a name="329" href="#329">329</a> <em class="jxr_javadoccomment">   * Check pattern location for ABSOLUTE</em>
<a name="330" href="#330">330</a> <em class="jxr_javadoccomment">   */</em>
<a name="331" href="#331">331</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> test14() {
<a name="332" href="#332">332</a>      SimpleDateFormat df = <strong class="jxr_keyword">new</strong> SimpleDateFormat(<span class="jxr_string">"HH:mm:ss,SSS"</span>);
<a name="333" href="#333">333</a>      <strong class="jxr_keyword">long</strong> ticks = 11142L * 86400000L;
<a name="334" href="#334">334</a>      String formatted = df.format(<strong class="jxr_keyword">new</strong> Date(ticks));
<a name="335" href="#335">335</a>      <strong class="jxr_keyword">int</strong> millisecondStart = CachedDateFormat.findMillisecondStart(ticks, formatted, df);
<a name="336" href="#336">336</a>      assertEquals(9, millisecondStart);     
<a name="337" href="#337">337</a>   }
<a name="338" href="#338">338</a> 
<a name="339" href="#339">339</a>   <em class="jxr_javadoccomment">/**</em>
<a name="340" href="#340">340</a> <em class="jxr_javadoccomment">   * Check pattern location for single S</em>
<a name="341" href="#341">341</a> <em class="jxr_javadoccomment">   */</em>
<a name="342" href="#342">342</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> test15() {
<a name="343" href="#343">343</a>      SimpleDateFormat df = <strong class="jxr_keyword">new</strong> SimpleDateFormat(<span class="jxr_string">"HH:mm:ss,S"</span>);
<a name="344" href="#344">344</a>      <strong class="jxr_keyword">long</strong> ticks = 11142L * 86400000L;
<a name="345" href="#345">345</a>      String formatted = df.format(<strong class="jxr_keyword">new</strong> Date(ticks));
<a name="346" href="#346">346</a>      <strong class="jxr_keyword">int</strong> millisecondStart = CachedDateFormat.findMillisecondStart(ticks, formatted, df);
<a name="347" href="#347">347</a>      assertEquals(CachedDateFormat.UNRECOGNIZED_MILLISECONDS, millisecondStart);     
<a name="348" href="#348">348</a>   }
<a name="349" href="#349">349</a> 
<a name="350" href="#350">350</a>   <em class="jxr_javadoccomment">/**</em>
<a name="351" href="#351">351</a> <em class="jxr_javadoccomment">   * Check pattern location for single SS</em>
<a name="352" href="#352">352</a> <em class="jxr_javadoccomment">   */</em>
<a name="353" href="#353">353</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> test16() {
<a name="354" href="#354">354</a>      SimpleDateFormat df = <strong class="jxr_keyword">new</strong> SimpleDateFormat(<span class="jxr_string">"HH:mm:ss,SS"</span>);
<a name="355" href="#355">355</a>      <strong class="jxr_keyword">long</strong> ticks = 11142L * 86400000L;
<a name="356" href="#356">356</a>      String formatted = df.format(<strong class="jxr_keyword">new</strong> Date(ticks));
<a name="357" href="#357">357</a>      <strong class="jxr_keyword">int</strong> millisecondStart = CachedDateFormat.findMillisecondStart(ticks, formatted, df);
<a name="358" href="#358">358</a>      assertEquals(CachedDateFormat.UNRECOGNIZED_MILLISECONDS, millisecondStart);     
<a name="359" href="#359">359</a>   }
<a name="360" href="#360">360</a> 
<a name="361" href="#361">361</a> 
<a name="362" href="#362">362</a>   <em class="jxr_javadoccomment">/**</em>
<a name="363" href="#363">363</a> <em class="jxr_javadoccomment">   * Check caching when multiple SSS appear in pattern</em>
<a name="364" href="#364">364</a> <em class="jxr_javadoccomment">   */</em>
<a name="365" href="#365">365</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> test17() {
<a name="366" href="#366">366</a>       Date jul2 = <strong class="jxr_keyword">new</strong> Date(12602L * 86400000L);
<a name="367" href="#367">367</a>       String badPattern = <span class="jxr_string">"HH:mm:ss,SSS HH:mm:ss,SSS"</span>;
<a name="368" href="#368">368</a>       SimpleDateFormat simpleFormat = <strong class="jxr_keyword">new</strong> SimpleDateFormat(badPattern);
<a name="369" href="#369">369</a>       simpleFormat.setTimeZone(GMT);
<a name="370" href="#370">370</a>       DateFormat cachedFormat = <strong class="jxr_keyword">new</strong> CachedDateFormat(simpleFormat, 1000);
<a name="371" href="#371">371</a>       String s = cachedFormat.format(jul2);
<a name="372" href="#372">372</a>       assertEquals(<span class="jxr_string">"00:00:00,000 00:00:00,000"</span>, s);
<a name="373" href="#373">373</a>       jul2.setTime(jul2.getTime() + 120);
<a name="374" href="#374">374</a>       assertEquals(<span class="jxr_string">"00:00:00,120 00:00:00,120"</span>, simpleFormat.format(jul2));
<a name="375" href="#375">375</a>       s = cachedFormat.format(jul2);
<a name="376" href="#376">376</a>       <em class="jxr_comment">//</em>
<a name="377" href="#377">377</a>       <em class="jxr_comment">//  TODO: why is this returning ,120 ... , 120</em>
<a name="378" href="#378">378</a>       <em class="jxr_comment">//</em>
<a name="379" href="#379">379</a>       <em class="jxr_comment">//assertEquals("00:00:00,120 00:00:00,000", s) ;</em>
<a name="380" href="#380">380</a>       
<a name="381" href="#381">381</a>       <strong class="jxr_keyword">int</strong> maxValid = CachedDateFormat.getMaximumCacheValidity(badPattern);
<a name="382" href="#382">382</a>       assertEquals(1, maxValid);
<a name="383" href="#383">383</a>   }
<a name="384" href="#384">384</a> 
<a name="385" href="#385">385</a>   
<a name="386" href="#386">386</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> Test xsuite() {
<a name="387" href="#387">387</a>     TestSuite suite = <strong class="jxr_keyword">new</strong> TestSuite();
<a name="388" href="#388">388</a>     suite.addTest(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/log4j/pattern/CachedDateFormatTest.html">CachedDateFormatTest</a>(<span class="jxr_string">"test5"</span>));
<a name="389" href="#389">389</a>     <em class="jxr_comment">//suite.addTest(new CachedDateFormatTest("testS2"));</em>
<a name="390" href="#390">390</a>     <strong class="jxr_keyword">return</strong> suite;
<a name="391" href="#391">391</a>   }
<a name="392" href="#392">392</a> 
<a name="393" href="#393">393</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

