<!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>TTCCLayoutTest 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> org.apache.log4j.helpers.DateLayoutTest;
<a name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.spi.LoggingEvent;
<a name="22" href="#22">22</a>  
<a name="23" href="#23">23</a>  
<a name="24" href="#24">24</a>  <em class="jxr_javadoccomment">/**</em>
<a name="25" href="#25">25</a>  <em class="jxr_javadoccomment"> * Test for TTCCLayout.</em>
<a name="26" href="#26">26</a>  <em class="jxr_javadoccomment"> *</em>
<a name="27" href="#27">27</a>  <em class="jxr_javadoccomment"> * @author Curt Arnold</em>
<a name="28" href="#28">28</a>  <em class="jxr_javadoccomment"> */</em>
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../org/apache/log4j/TTCCLayoutTest.html">TTCCLayoutTest</a> <strong class="jxr_keyword">extends</strong> <a href="../../../org/apache/log4j/helpers/DateLayoutTest.html">DateLayoutTest</a> {
<a name="30" href="#30">30</a>    <em class="jxr_javadoccomment">/**</em>
<a name="31" href="#31">31</a>  <em class="jxr_javadoccomment">   * Construct new instance of TTCCLayoutTest.</em>
<a name="32" href="#32">32</a>  <em class="jxr_javadoccomment">   *</em>
<a name="33" href="#33">33</a>  <em class="jxr_javadoccomment">   * @param testName test name.</em>
<a name="34" href="#34">34</a>  <em class="jxr_javadoccomment">   */</em>
<a name="35" href="#35">35</a>    <strong class="jxr_keyword">public</strong> <a href="../../../org/apache/log4j/TTCCLayoutTest.html">TTCCLayoutTest</a>(<strong class="jxr_keyword">final</strong> String testName) {
<a name="36" href="#36">36</a>      <strong class="jxr_keyword">super</strong>(testName, <span class="jxr_string">"text/plain"</span>, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a name="37" href="#37">37</a>    }
<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">   * @{inheritDoc}</em>
<a name="41" href="#41">41</a>  <em class="jxr_javadoccomment">   */</em>
<a name="42" href="#42">42</a>    <strong class="jxr_keyword">protected</strong> Layout createLayout() {
<a name="43" href="#43">43</a>      <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> TTCCLayout();
<a name="44" href="#44">44</a>    }
<a name="45" href="#45">45</a>  
<a name="46" href="#46">46</a>    <em class="jxr_javadoccomment">/**</em>
<a name="47" href="#47">47</a>  <em class="jxr_javadoccomment">   * Tests format.</em>
<a name="48" href="#48">48</a>  <em class="jxr_javadoccomment">   */</em>
<a name="49" href="#49">49</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testFormat() {
<a name="50" href="#50">50</a>      NDC.clear();
<a name="51" href="#51">51</a>      NDC.push(<span class="jxr_string">"NDC goes here"</span>);
<a name="52" href="#52">52</a>  
<a name="53" href="#53">53</a>      Logger logger = Logger.getLogger(<span class="jxr_string">"org.apache.log4j.LayoutTest"</span>);
<a name="54" href="#54">54</a>      LoggingEvent event =
<a name="55" href="#55">55</a>        <strong class="jxr_keyword">new</strong> LoggingEvent(
<a name="56" href="#56">56</a>          <span class="jxr_string">"org.apache.log4j.Logger"</span>, logger, Level.INFO, <span class="jxr_string">"Hello, World"</span>, <strong class="jxr_keyword">null</strong>);
<a name="57" href="#57">57</a>      TTCCLayout layout = (TTCCLayout) createLayout();
<a name="58" href="#58">58</a>      String result = layout.format(event);
<a name="59" href="#59">59</a>      NDC.pop();
<a name="60" href="#60">60</a>  
<a name="61" href="#61">61</a>      StringBuffer buf = <strong class="jxr_keyword">new</strong> StringBuffer(100);
<a name="62" href="#62">62</a>      layout.dateFormat(buf, event);
<a name="63" href="#63">63</a>      buf.append('[');
<a name="64" href="#64">64</a>      buf.append(event.getThreadName());
<a name="65" href="#65">65</a>      buf.append(<span class="jxr_string">"] "</span>);
<a name="66" href="#66">66</a>      buf.append(event.getLevel().toString());
<a name="67" href="#67">67</a>      buf.append(' ');
<a name="68" href="#68">68</a>      buf.append(event.getLoggerName());
<a name="69" href="#69">69</a>      buf.append(' ');
<a name="70" href="#70">70</a>      buf.append(<span class="jxr_string">"NDC goes here"</span>);
<a name="71" href="#71">71</a>      buf.append(<span class="jxr_string">" - "</span>);
<a name="72" href="#72">72</a>      buf.append(event.getMessage());
<a name="73" href="#73">73</a>      buf.append(System.getProperty(<span class="jxr_string">"line.separator"</span>));
<a name="74" href="#74">74</a>      assertEquals(buf.toString(), result);
<a name="75" href="#75">75</a>    }
<a name="76" href="#76">76</a>  
<a name="77" href="#77">77</a>    <em class="jxr_javadoccomment">/**</em>
<a name="78" href="#78">78</a>  <em class="jxr_javadoccomment">   * Tests getThreadPrinting and setThreadPrinting.</em>
<a name="79" href="#79">79</a>  <em class="jxr_javadoccomment">   */</em>
<a name="80" href="#80">80</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetSetThreadPrinting() {
<a name="81" href="#81">81</a>      TTCCLayout layout = <strong class="jxr_keyword">new</strong> TTCCLayout();
<a name="82" href="#82">82</a>      assertEquals(<strong class="jxr_keyword">true</strong>, layout.getThreadPrinting());
<a name="83" href="#83">83</a>      layout.setThreadPrinting(false);
<a name="84" href="#84">84</a>      assertEquals(false, layout.getThreadPrinting());
<a name="85" href="#85">85</a>      layout.setThreadPrinting(<strong class="jxr_keyword">true</strong>);
<a name="86" href="#86">86</a>      assertEquals(<strong class="jxr_keyword">true</strong>, layout.getThreadPrinting());
<a name="87" href="#87">87</a>    }
<a name="88" href="#88">88</a>  
<a name="89" href="#89">89</a>    <em class="jxr_javadoccomment">/**</em>
<a name="90" href="#90">90</a>  <em class="jxr_javadoccomment">   * Tests getCategoryPrefixing and setCategoryPrefixing.</em>
<a name="91" href="#91">91</a>  <em class="jxr_javadoccomment">   */</em>
<a name="92" href="#92">92</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetSetCategoryPrefixing() {
<a name="93" href="#93">93</a>      TTCCLayout layout = <strong class="jxr_keyword">new</strong> TTCCLayout();
<a name="94" href="#94">94</a>      assertEquals(<strong class="jxr_keyword">true</strong>, layout.getCategoryPrefixing());
<a name="95" href="#95">95</a>      layout.setCategoryPrefixing(false);
<a name="96" href="#96">96</a>      assertEquals(false, layout.getCategoryPrefixing());
<a name="97" href="#97">97</a>      layout.setCategoryPrefixing(<strong class="jxr_keyword">true</strong>);
<a name="98" href="#98">98</a>      assertEquals(<strong class="jxr_keyword">true</strong>, layout.getCategoryPrefixing());
<a name="99" href="#99">99</a>    }
<a name="100" href="#100">100</a> 
<a name="101" href="#101">101</a>   <em class="jxr_javadoccomment">/**</em>
<a name="102" href="#102">102</a> <em class="jxr_javadoccomment">   * Tests getContextPrinting and setContextPrinting.</em>
<a name="103" href="#103">103</a> <em class="jxr_javadoccomment">   */</em>
<a name="104" href="#104">104</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetSetContextPrinting() {
<a name="105" href="#105">105</a>     TTCCLayout layout = <strong class="jxr_keyword">new</strong> TTCCLayout();
<a name="106" href="#106">106</a>     assertEquals(<strong class="jxr_keyword">true</strong>, layout.getContextPrinting());
<a name="107" href="#107">107</a>     layout.setContextPrinting(false);
<a name="108" href="#108">108</a>     assertEquals(false, layout.getContextPrinting());
<a name="109" href="#109">109</a>     layout.setContextPrinting(<strong class="jxr_keyword">true</strong>);
<a name="110" href="#110">110</a>     assertEquals(<strong class="jxr_keyword">true</strong>, layout.getContextPrinting());
<a name="111" href="#111">111</a>   }
<a name="112" href="#112">112</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

