<!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=UTF-8" />
<title>CompressionFilterTest 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</em>
<a name="3" href="#3">3</a>   <em class="jxr_comment"> *  or more contributor license agreements.  See the NOTICE file</em>
<a name="4" href="#4">4</a>   <em class="jxr_comment"> *  distributed with this work for additional information</em>
<a name="5" href="#5">5</a>   <em class="jxr_comment"> *  regarding copyright ownership.  The ASF licenses this file</em>
<a name="6" href="#6">6</a>   <em class="jxr_comment"> *  to you under the Apache License, Version 2.0 (the</em>
<a name="7" href="#7">7</a>   <em class="jxr_comment"> *  "License"); you may not use this file except in compliance</em>
<a name="8" href="#8">8</a>   <em class="jxr_comment"> *  with the License.  You may obtain a copy of the License at</em>
<a name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
<a name="10" href="#10">10</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="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
<a name="12" href="#12">12</a>  <em class="jxr_comment"> *  Unless required by applicable law or agreed to in writing,</em>
<a name="13" href="#13">13</a>  <em class="jxr_comment"> *  software distributed under the License is distributed on an</em>
<a name="14" href="#14">14</a>  <em class="jxr_comment"> *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a name="15" href="#15">15</a>  <em class="jxr_comment"> *  KIND, either express or implied.  See the License for the</em>
<a name="16" href="#16">16</a>  <em class="jxr_comment"> *  specific language governing permissions and limitations</em>
<a name="17" href="#17">17</a>  <em class="jxr_comment"> *  under the License.</em>
<a name="18" href="#18">18</a>  <em class="jxr_comment"> *</em>
<a name="19" href="#19">19</a>  <em class="jxr_comment"> */</em>
<a name="20" href="#20">20</a>  <strong class="jxr_keyword">package</strong> org.apache.mina.filter.compression;
<a name="21" href="#21">21</a>  
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> junit.framework.TestCase;
<a name="23" href="#23">23</a>  
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.buffer.IoBuffer;
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.filterchain.IoFilterChain;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.filterchain.IoFilter.NextFilter;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.session.IoSession;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.write.DefaultWriteRequest;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.write.WriteRequest;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.easymock.AbstractMatcher;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.easymock.MockControl;
<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"> * @author The Apache MINA Project (dev@mina.apache.org)</em>
<a name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> * @version $Rev: 671827 $, $Date: 2008-06-26 10:49:48 +0200 (jeu, 26 jun 2008) $</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/mina/filter/compression/CompressionFilterTest.html">CompressionFilterTest</a> <strong class="jxr_keyword">extends</strong> TestCase {
<a name="38" href="#38">38</a>      <strong class="jxr_keyword">private</strong> MockControl mockSession;
<a name="39" href="#39">39</a>  
<a name="40" href="#40">40</a>      <strong class="jxr_keyword">private</strong> MockControl mockNextFilter;
<a name="41" href="#41">41</a>  
<a name="42" href="#42">42</a>      <strong class="jxr_keyword">private</strong> MockControl mockIoFilterChain;
<a name="43" href="#43">43</a>  
<a name="44" href="#44">44</a>      <strong class="jxr_keyword">private</strong> IoSession session;
<a name="45" href="#45">45</a>  
<a name="46" href="#46">46</a>      <strong class="jxr_keyword">private</strong> NextFilter nextFilter;
<a name="47" href="#47">47</a>  
<a name="48" href="#48">48</a>      <strong class="jxr_keyword">private</strong> IoFilterChain ioFilterChain;
<a name="49" href="#49">49</a>  
<a name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> CompressionFilter filter;
<a name="51" href="#51">51</a>  
<a name="52" href="#52">52</a>      <strong class="jxr_keyword">private</strong> Zlib deflater;
<a name="53" href="#53">53</a>  
<a name="54" href="#54">54</a>      <strong class="jxr_keyword">private</strong> Zlib inflater;
<a name="55" href="#55">55</a>  
<a name="56" href="#56">56</a>      <strong class="jxr_keyword">private</strong> Zlib actualDeflater;
<a name="57" href="#57">57</a>  
<a name="58" href="#58">58</a>      <strong class="jxr_keyword">private</strong> Zlib actualInflater;
<a name="59" href="#59">59</a>  
<a name="60" href="#60">60</a>      <em class="jxr_comment">// the sample data to be used for testing</em>
<a name="61" href="#61">61</a>      String strCompress = <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="62" href="#62">62</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="63" href="#63">63</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="64" href="#64">64</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="65" href="#65">65</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="66" href="#66">66</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="67" href="#67">67</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="68" href="#68">68</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="69" href="#69">69</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="70" href="#70">70</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="71" href="#71">71</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="72" href="#72">72</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="73" href="#73">73</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="74" href="#74">74</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="75" href="#75">75</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="76" href="#76">76</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="77" href="#77">77</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="78" href="#78">78</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="79" href="#79">79</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="80" href="#80">80</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="81" href="#81">81</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="82" href="#82">82</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="83" href="#83">83</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="84" href="#84">84</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>
<a name="85" href="#85">85</a>              + <span class="jxr_string">"The quick brown fox jumps over the lazy dog.  "</span>;
<a name="86" href="#86">86</a>  
<a name="87" href="#87">87</a>      @Override
<a name="88" href="#88">88</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> setUp() {
<a name="89" href="#89">89</a>          <em class="jxr_comment">// create the necessary mock controls.</em>
<a name="90" href="#90">90</a>          mockSession = MockControl.createControl(IoSession.<strong class="jxr_keyword">class</strong>);
<a name="91" href="#91">91</a>          mockNextFilter = MockControl.createControl(NextFilter.<strong class="jxr_keyword">class</strong>);
<a name="92" href="#92">92</a>          mockIoFilterChain = MockControl.createControl(IoFilterChain.<strong class="jxr_keyword">class</strong>);
<a name="93" href="#93">93</a>  
<a name="94" href="#94">94</a>          <em class="jxr_comment">// set the default matcher</em>
<a name="95" href="#95">95</a>          mockNextFilter.setDefaultMatcher(<strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/mina/filter/compression/CompressionFilterTest.html">DataMatcher</a>());
<a name="96" href="#96">96</a>  
<a name="97" href="#97">97</a>          session = (IoSession) mockSession.getMock();
<a name="98" href="#98">98</a>          nextFilter = (NextFilter) mockNextFilter.getMock();
<a name="99" href="#99">99</a>          ioFilterChain = (IoFilterChain) mockIoFilterChain.getMock();
<a name="100" href="#100">100</a> 
<a name="101" href="#101">101</a>         <em class="jxr_comment">// create an instance of the filter</em>
<a name="102" href="#102">102</a>         filter = <strong class="jxr_keyword">new</strong> CompressionFilter(CompressionFilter.COMPRESSION_MAX);
<a name="103" href="#103">103</a> 
<a name="104" href="#104">104</a>         <em class="jxr_comment">// deflater and inflater that will be used by the filter</em>
<a name="105" href="#105">105</a>         deflater = <strong class="jxr_keyword">new</strong> Zlib(Zlib.COMPRESSION_MAX, Zlib.MODE_DEFLATER);
<a name="106" href="#106">106</a>         inflater = <strong class="jxr_keyword">new</strong> Zlib(Zlib.COMPRESSION_MAX, Zlib.MODE_INFLATER);
<a name="107" href="#107">107</a> 
<a name="108" href="#108">108</a>         <em class="jxr_comment">// create instances of the deflater and inflater to help test the output</em>
<a name="109" href="#109">109</a>         actualDeflater = <strong class="jxr_keyword">new</strong> Zlib(Zlib.COMPRESSION_MAX, Zlib.MODE_DEFLATER);
<a name="110" href="#110">110</a>         actualInflater = <strong class="jxr_keyword">new</strong> Zlib(Zlib.COMPRESSION_MAX, Zlib.MODE_INFLATER);
<a name="111" href="#111">111</a>     }
<a name="112" href="#112">112</a> 
<a name="113" href="#113">113</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCompression() <strong class="jxr_keyword">throws</strong> Exception {
<a name="114" href="#114">114</a>         <em class="jxr_comment">// prepare the input data</em>
<a name="115" href="#115">115</a>         IoBuffer buf = IoBuffer.wrap(strCompress.getBytes(<span class="jxr_string">"UTF8"</span>));
<a name="116" href="#116">116</a>         IoBuffer actualOutput = actualDeflater.deflate(buf);
<a name="117" href="#117">117</a>         WriteRequest writeRequest = <strong class="jxr_keyword">new</strong> DefaultWriteRequest(buf);
<a name="118" href="#118">118</a> 
<a name="119" href="#119">119</a>         <em class="jxr_comment">// record all the mock calls</em>
<a name="120" href="#120">120</a>         ioFilterChain.contains(CompressionFilter.<strong class="jxr_keyword">class</strong>);
<a name="121" href="#121">121</a>         mockIoFilterChain.setReturnValue(false);
<a name="122" href="#122">122</a> 
<a name="123" href="#123">123</a>         ioFilterChain.getSession();
<a name="124" href="#124">124</a>         mockIoFilterChain.setReturnValue(session);
<a name="125" href="#125">125</a> 
<a name="126" href="#126">126</a>         session.setAttribute(CompressionFilter.<strong class="jxr_keyword">class</strong>.getName() + <span class="jxr_string">".Deflater"</span>,
<a name="127" href="#127">127</a>                 deflater);
<a name="128" href="#128">128</a>         mockSession.setDefaultMatcher(<strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/mina/filter/compression/CompressionFilterTest.html">DataMatcher</a>());
<a name="129" href="#129">129</a>         mockSession.setReturnValue(<strong class="jxr_keyword">null</strong>, MockControl.ONE);
<a name="130" href="#130">130</a> 
<a name="131" href="#131">131</a>         session.setAttribute(CompressionFilter.<strong class="jxr_keyword">class</strong>.getName() + <span class="jxr_string">".Inflater"</span>,
<a name="132" href="#132">132</a>                 inflater);
<a name="133" href="#133">133</a>         mockSession.setReturnValue(<strong class="jxr_keyword">null</strong>, MockControl.ONE);
<a name="134" href="#134">134</a> 
<a name="135" href="#135">135</a>         session.containsAttribute(CompressionFilter.DISABLE_COMPRESSION_ONCE);
<a name="136" href="#136">136</a>         mockSession.setReturnValue(false);
<a name="137" href="#137">137</a> 
<a name="138" href="#138">138</a>         session.getAttribute(CompressionFilter.<strong class="jxr_keyword">class</strong>.getName() + <span class="jxr_string">".Deflater"</span>);
<a name="139" href="#139">139</a>         mockSession.setReturnValue(deflater);
<a name="140" href="#140">140</a> 
<a name="141" href="#141">141</a>         nextFilter.filterWrite(session, <strong class="jxr_keyword">new</strong> DefaultWriteRequest(actualOutput));
<a name="142" href="#142">142</a> 
<a name="143" href="#143">143</a>         <em class="jxr_comment">// switch to playback mode</em>
<a name="144" href="#144">144</a>         mockSession.replay();
<a name="145" href="#145">145</a>         mockIoFilterChain.replay();
<a name="146" href="#146">146</a>         mockNextFilter.replay();
<a name="147" href="#147">147</a> 
<a name="148" href="#148">148</a>         <em class="jxr_comment">// make the actual calls on the filter</em>
<a name="149" href="#149">149</a>         filter.onPreAdd(ioFilterChain, <span class="jxr_string">"CompressionFilter"</span>, nextFilter);
<a name="150" href="#150">150</a>         filter.filterWrite(nextFilter, session, writeRequest);
<a name="151" href="#151">151</a> 
<a name="152" href="#152">152</a>         <em class="jxr_comment">// verify that all the calls happened as recorded</em>
<a name="153" href="#153">153</a>         mockNextFilter.verify();
<a name="154" href="#154">154</a> 
<a name="155" href="#155">155</a>         assertTrue(<strong class="jxr_keyword">true</strong>);
<a name="156" href="#156">156</a>     }
<a name="157" href="#157">157</a> 
<a name="158" href="#158">158</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDecompression() <strong class="jxr_keyword">throws</strong> Exception {
<a name="159" href="#159">159</a>         <em class="jxr_comment">// prepare the input data</em>
<a name="160" href="#160">160</a>         IoBuffer buf = IoBuffer.wrap(strCompress.getBytes(<span class="jxr_string">"UTF8"</span>));
<a name="161" href="#161">161</a>         IoBuffer byteInput = actualDeflater.deflate(buf);
<a name="162" href="#162">162</a>         IoBuffer actualOutput = actualInflater.inflate(byteInput);
<a name="163" href="#163">163</a> 
<a name="164" href="#164">164</a>         <em class="jxr_comment">// record all the mock calls</em>
<a name="165" href="#165">165</a>         ioFilterChain.contains(CompressionFilter.<strong class="jxr_keyword">class</strong>);
<a name="166" href="#166">166</a>         mockIoFilterChain.setReturnValue(false);
<a name="167" href="#167">167</a> 
<a name="168" href="#168">168</a>         ioFilterChain.getSession();
<a name="169" href="#169">169</a>         mockIoFilterChain.setReturnValue(session);
<a name="170" href="#170">170</a> 
<a name="171" href="#171">171</a>         session.setAttribute(CompressionFilter.<strong class="jxr_keyword">class</strong>.getName() + <span class="jxr_string">".Deflater"</span>,
<a name="172" href="#172">172</a>                 deflater);
<a name="173" href="#173">173</a>         mockSession.setDefaultMatcher(<strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/mina/filter/compression/CompressionFilterTest.html">DataMatcher</a>());
<a name="174" href="#174">174</a>         mockSession.setReturnValue(<strong class="jxr_keyword">null</strong>, MockControl.ONE);
<a name="175" href="#175">175</a> 
<a name="176" href="#176">176</a>         session.setAttribute(CompressionFilter.<strong class="jxr_keyword">class</strong>.getName() + <span class="jxr_string">".Inflater"</span>,
<a name="177" href="#177">177</a>                 inflater);
<a name="178" href="#178">178</a>         mockSession.setReturnValue(<strong class="jxr_keyword">null</strong>, MockControl.ONE);
<a name="179" href="#179">179</a> 
<a name="180" href="#180">180</a>         session.getAttribute(CompressionFilter.<strong class="jxr_keyword">class</strong>.getName() + <span class="jxr_string">".Inflater"</span>);
<a name="181" href="#181">181</a>         mockSession.setReturnValue(inflater);
<a name="182" href="#182">182</a> 
<a name="183" href="#183">183</a>         nextFilter.messageReceived(session, actualOutput);
<a name="184" href="#184">184</a> 
<a name="185" href="#185">185</a>         <em class="jxr_comment">// switch to playback mode</em>
<a name="186" href="#186">186</a>         mockSession.replay();
<a name="187" href="#187">187</a>         mockIoFilterChain.replay();
<a name="188" href="#188">188</a>         mockNextFilter.replay();
<a name="189" href="#189">189</a> 
<a name="190" href="#190">190</a>         <em class="jxr_comment">// make the actual calls on the filter</em>
<a name="191" href="#191">191</a>         filter.onPreAdd(ioFilterChain, <span class="jxr_string">"CompressionFilter"</span>, nextFilter);
<a name="192" href="#192">192</a>         filter.messageReceived(nextFilter, session, byteInput);
<a name="193" href="#193">193</a> 
<a name="194" href="#194">194</a>         <em class="jxr_comment">// verify that all the calls happened as recorded</em>
<a name="195" href="#195">195</a>         mockNextFilter.verify();
<a name="196" href="#196">196</a> 
<a name="197" href="#197">197</a>         assertTrue(<strong class="jxr_keyword">true</strong>);
<a name="198" href="#198">198</a>     }
<a name="199" href="#199">199</a> 
<a name="200" href="#200">200</a>     <em class="jxr_javadoccomment">/**</em>
<a name="201" href="#201">201</a> <em class="jxr_javadoccomment">     * A matcher used to check if the actual and expected outputs matched</em>
<a name="202" href="#202">202</a> <em class="jxr_javadoccomment">     */</em>
<a name="203" href="#203">203</a>     <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/mina/filter/compression/CompressionFilterTest.html">DataMatcher</a> <strong class="jxr_keyword">extends</strong> AbstractMatcher {
<a name="204" href="#204">204</a>         @Override
<a name="205" href="#205">205</a>         <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> argumentMatches(Object arg0, Object arg1) {
<a name="206" href="#206">206</a>             <em class="jxr_comment">// we need to only verify the ByteBuffer output</em>
<a name="207" href="#207">207</a>             <strong class="jxr_keyword">if</strong> (arg0 instanceof WriteRequest) {
<a name="208" href="#208">208</a>                 WriteRequest expected = (WriteRequest) arg0;
<a name="209" href="#209">209</a>                 WriteRequest actual = (WriteRequest) arg1;
<a name="210" href="#210">210</a>                 IoBuffer bExpected = (IoBuffer) expected.getMessage();
<a name="211" href="#211">211</a>                 IoBuffer bActual = (IoBuffer) actual.getMessage();
<a name="212" href="#212">212</a>                 <strong class="jxr_keyword">return</strong> bExpected.equals(bActual);
<a name="213" href="#213">213</a>             }
<a name="214" href="#214">214</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
<a name="215" href="#215">215</a>         }
<a name="216" href="#216">216</a>     }
<a name="217" href="#217">217</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

