<!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>TextLineDecoderTest 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.codec.textline;
<a name="21" href="#21">21</a>  
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.nio.charset.Charset;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.nio.charset.CharsetEncoder;
<a name="24" href="#24">24</a>  
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> junit.framework.Assert;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> junit.framework.TestCase;
<a name="27" href="#27">27</a>  
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.buffer.IoBuffer;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.filter.codec.ProtocolCodecSession;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.filter.codec.ProtocolDecoderOutput;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.filter.codec.RecoverableProtocolDecoderException;
<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"> * Tests {@link TextLineDecoder}.</em>
<a name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> *</em>
<a name="36" href="#36">36</a>  <em class="jxr_javadoccomment"> * @author The Apache MINA Project (dev@mina.apache.org)</em>
<a name="37" href="#37">37</a>  <em class="jxr_javadoccomment"> * @version $Rev: 671827 $, $Date: 2008-06-26 10:49:48 +0200 (jeu, 26 jun 2008) $</em>
<a name="38" href="#38">38</a>  <em class="jxr_javadoccomment"> */</em>
<a name="39" href="#39">39</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/mina/filter/codec/textline/TextLineDecoderTest.html">TextLineDecoderTest</a> <strong class="jxr_keyword">extends</strong> TestCase {
<a name="40" href="#40">40</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> main(String[] args) {
<a name="41" href="#41">41</a>          junit.textui.TestRunner.run(TextLineDecoderTest.<strong class="jxr_keyword">class</strong>);
<a name="42" href="#42">42</a>      }
<a name="43" href="#43">43</a>  
<a name="44" href="#44">44</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testNormalDecode() <strong class="jxr_keyword">throws</strong> Exception {
<a name="45" href="#45">45</a>          TextLineDecoder decoder = <strong class="jxr_keyword">new</strong> TextLineDecoder(Charset.forName(<span class="jxr_string">"UTF-8"</span>),
<a name="46" href="#46">46</a>                  LineDelimiter.WINDOWS);
<a name="47" href="#47">47</a>  
<a name="48" href="#48">48</a>          CharsetEncoder encoder = Charset.forName(<span class="jxr_string">"UTF-8"</span>).newEncoder();
<a name="49" href="#49">49</a>          ProtocolCodecSession session = <strong class="jxr_keyword">new</strong> ProtocolCodecSession();
<a name="50" href="#50">50</a>          ProtocolDecoderOutput out = session.getDecoderOutput();
<a name="51" href="#51">51</a>          IoBuffer in = IoBuffer.allocate(16);
<a name="52" href="#52">52</a>  
<a name="53" href="#53">53</a>          <em class="jxr_comment">// Test one decode and one output</em>
<a name="54" href="#54">54</a>          in.putString(<span class="jxr_string">"ABC\r\n"</span>, encoder);
<a name="55" href="#55">55</a>          in.flip();
<a name="56" href="#56">56</a>          decoder.decode(session, in, out);
<a name="57" href="#57">57</a>          Assert.assertEquals(1, session.getDecoderOutputQueue().size());
<a name="58" href="#58">58</a>          Assert.assertEquals(<span class="jxr_string">"ABC"</span>, session.getDecoderOutputQueue().poll());
<a name="59" href="#59">59</a>  
<a name="60" href="#60">60</a>          <em class="jxr_comment">// Test two decode and one output</em>
<a name="61" href="#61">61</a>          in.clear();
<a name="62" href="#62">62</a>          in.putString(<span class="jxr_string">"DEF"</span>, encoder);
<a name="63" href="#63">63</a>          in.flip();
<a name="64" href="#64">64</a>          decoder.decode(session, in, out);
<a name="65" href="#65">65</a>          Assert.assertEquals(0, session.getDecoderOutputQueue().size());
<a name="66" href="#66">66</a>          in.clear();
<a name="67" href="#67">67</a>          in.putString(<span class="jxr_string">"GHI\r\n"</span>, encoder);
<a name="68" href="#68">68</a>          in.flip();
<a name="69" href="#69">69</a>          decoder.decode(session, in, out);
<a name="70" href="#70">70</a>          Assert.assertEquals(1, session.getDecoderOutputQueue().size());
<a name="71" href="#71">71</a>          Assert.assertEquals(<span class="jxr_string">"DEFGHI"</span>, session.getDecoderOutputQueue().poll());
<a name="72" href="#72">72</a>  
<a name="73" href="#73">73</a>          <em class="jxr_comment">// Test one decode and two output</em>
<a name="74" href="#74">74</a>          in.clear();
<a name="75" href="#75">75</a>          in.putString(<span class="jxr_string">"JKL\r\nMNO\r\n"</span>, encoder);
<a name="76" href="#76">76</a>          in.flip();
<a name="77" href="#77">77</a>          decoder.decode(session, in, out);
<a name="78" href="#78">78</a>          Assert.assertEquals(2, session.getDecoderOutputQueue().size());
<a name="79" href="#79">79</a>          Assert.assertEquals(<span class="jxr_string">"JKL"</span>, session.getDecoderOutputQueue().poll());
<a name="80" href="#80">80</a>          Assert.assertEquals(<span class="jxr_string">"MNO"</span>, session.getDecoderOutputQueue().poll());
<a name="81" href="#81">81</a>  
<a name="82" href="#82">82</a>          <em class="jxr_comment">// Test aborted delimiter (DIRMINA-506)</em>
<a name="83" href="#83">83</a>          in.clear();
<a name="84" href="#84">84</a>          in.putString(<span class="jxr_string">"ABC\r\r\n"</span>, encoder);
<a name="85" href="#85">85</a>          in.flip();
<a name="86" href="#86">86</a>          decoder.decode(session, in, out);
<a name="87" href="#87">87</a>          Assert.assertEquals(1, session.getDecoderOutputQueue().size());
<a name="88" href="#88">88</a>          Assert.assertEquals(<span class="jxr_string">"ABC\r"</span>, session.getDecoderOutputQueue().poll());
<a name="89" href="#89">89</a>  
<a name="90" href="#90">90</a>          <em class="jxr_comment">// Test splitted long delimiter</em>
<a name="91" href="#91">91</a>          decoder = <strong class="jxr_keyword">new</strong> TextLineDecoder(Charset.forName(<span class="jxr_string">"UTF-8"</span>),
<a name="92" href="#92">92</a>                  <strong class="jxr_keyword">new</strong> LineDelimiter(<span class="jxr_string">"\n\n\n"</span>));
<a name="93" href="#93">93</a>          in.clear();
<a name="94" href="#94">94</a>          in.putString(<span class="jxr_string">"PQR\n"</span>, encoder);
<a name="95" href="#95">95</a>          in.flip();
<a name="96" href="#96">96</a>          decoder.decode(session, in, out);
<a name="97" href="#97">97</a>          Assert.assertEquals(0, session.getDecoderOutputQueue().size());
<a name="98" href="#98">98</a>          in.clear();
<a name="99" href="#99">99</a>          in.putString(<span class="jxr_string">"\n"</span>, encoder);
<a name="100" href="#100">100</a>         in.flip();
<a name="101" href="#101">101</a>         decoder.decode(session, in, out);
<a name="102" href="#102">102</a>         Assert.assertEquals(0, session.getDecoderOutputQueue().size());
<a name="103" href="#103">103</a>         in.clear();
<a name="104" href="#104">104</a>         in.putString(<span class="jxr_string">"\n"</span>, encoder);
<a name="105" href="#105">105</a>         in.flip();
<a name="106" href="#106">106</a>         decoder.decode(session, in, out);
<a name="107" href="#107">107</a>         Assert.assertEquals(1, session.getDecoderOutputQueue().size());
<a name="108" href="#108">108</a>         Assert.assertEquals(<span class="jxr_string">"PQR"</span>, session.getDecoderOutputQueue().poll());
<a name="109" href="#109">109</a> 
<a name="110" href="#110">110</a>         <em class="jxr_comment">// Test splitted long delimiter which produces two output</em>
<a name="111" href="#111">111</a>         decoder = <strong class="jxr_keyword">new</strong> TextLineDecoder(Charset.forName(<span class="jxr_string">"UTF-8"</span>),
<a name="112" href="#112">112</a>                 <strong class="jxr_keyword">new</strong> LineDelimiter(<span class="jxr_string">"\n\n\n"</span>));
<a name="113" href="#113">113</a>         in.clear();
<a name="114" href="#114">114</a>         in.putString(<span class="jxr_string">"PQR\n"</span>, encoder);
<a name="115" href="#115">115</a>         in.flip();
<a name="116" href="#116">116</a>         decoder.decode(session, in, out);
<a name="117" href="#117">117</a>         Assert.assertEquals(0, session.getDecoderOutputQueue().size());
<a name="118" href="#118">118</a>         in.clear();
<a name="119" href="#119">119</a>         in.putString(<span class="jxr_string">"\n"</span>, encoder);
<a name="120" href="#120">120</a>         in.flip();
<a name="121" href="#121">121</a>         decoder.decode(session, in, out);
<a name="122" href="#122">122</a>         Assert.assertEquals(0, session.getDecoderOutputQueue().size());
<a name="123" href="#123">123</a>         in.clear();
<a name="124" href="#124">124</a>         in.putString(<span class="jxr_string">"\nSTU\n\n\n"</span>, encoder);
<a name="125" href="#125">125</a>         in.flip();
<a name="126" href="#126">126</a>         decoder.decode(session, in, out);
<a name="127" href="#127">127</a>         Assert.assertEquals(2,session.getDecoderOutputQueue().size());
<a name="128" href="#128">128</a>         Assert.assertEquals(<span class="jxr_string">"PQR"</span>, session.getDecoderOutputQueue().poll());
<a name="129" href="#129">129</a>         Assert.assertEquals(<span class="jxr_string">"STU"</span>, session.getDecoderOutputQueue().poll());
<a name="130" href="#130">130</a> 
<a name="131" href="#131">131</a>         <em class="jxr_comment">// Test splitted long delimiter mixed with partial non-delimiter.</em>
<a name="132" href="#132">132</a>         decoder = <strong class="jxr_keyword">new</strong> TextLineDecoder(Charset.forName(<span class="jxr_string">"UTF-8"</span>),
<a name="133" href="#133">133</a>                 <strong class="jxr_keyword">new</strong> LineDelimiter(<span class="jxr_string">"\n\n\n"</span>));
<a name="134" href="#134">134</a>         in.clear();
<a name="135" href="#135">135</a>         in.putString(<span class="jxr_string">"PQR\n"</span>, encoder);
<a name="136" href="#136">136</a>         in.flip();
<a name="137" href="#137">137</a>         decoder.decode(session, in, out);
<a name="138" href="#138">138</a>         Assert.assertEquals(0, session.getDecoderOutputQueue().size());
<a name="139" href="#139">139</a>         in.clear();
<a name="140" href="#140">140</a>         in.putString(<span class="jxr_string">"X\n"</span>, encoder);
<a name="141" href="#141">141</a>         in.flip();
<a name="142" href="#142">142</a>         decoder.decode(session, in, out);
<a name="143" href="#143">143</a>         Assert.assertEquals(0, session.getDecoderOutputQueue().size());
<a name="144" href="#144">144</a>         in.clear();
<a name="145" href="#145">145</a>         in.putString(<span class="jxr_string">"\n\nSTU\n\n\n"</span>, encoder);
<a name="146" href="#146">146</a>         in.flip();
<a name="147" href="#147">147</a>         decoder.decode(session, in, out);
<a name="148" href="#148">148</a>         Assert.assertEquals(2, session.getDecoderOutputQueue().size());
<a name="149" href="#149">149</a>         Assert.assertEquals(<span class="jxr_string">"PQR\nX"</span>, session.getDecoderOutputQueue().poll());
<a name="150" href="#150">150</a>         Assert.assertEquals(<span class="jxr_string">"STU"</span>, session.getDecoderOutputQueue().poll());
<a name="151" href="#151">151</a>     }
<a name="152" href="#152">152</a> 
<a name="153" href="#153">153</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testAutoDecode() <strong class="jxr_keyword">throws</strong> Exception {
<a name="154" href="#154">154</a>         TextLineDecoder decoder = <strong class="jxr_keyword">new</strong> TextLineDecoder(Charset.forName(<span class="jxr_string">"UTF-8"</span>),
<a name="155" href="#155">155</a>                 LineDelimiter.AUTO);
<a name="156" href="#156">156</a> 
<a name="157" href="#157">157</a>         CharsetEncoder encoder = Charset.forName(<span class="jxr_string">"UTF-8"</span>).newEncoder();
<a name="158" href="#158">158</a>         ProtocolCodecSession session = <strong class="jxr_keyword">new</strong> ProtocolCodecSession();
<a name="159" href="#159">159</a>         ProtocolDecoderOutput out = session.getDecoderOutput();
<a name="160" href="#160">160</a>         IoBuffer in = IoBuffer.allocate(16);
<a name="161" href="#161">161</a> 
<a name="162" href="#162">162</a>         <em class="jxr_comment">// Test one decode and one output</em>
<a name="163" href="#163">163</a>         in.putString(<span class="jxr_string">"ABC\r\n"</span>, encoder);
<a name="164" href="#164">164</a>         in.flip();
<a name="165" href="#165">165</a>         decoder.decode(session, in, out);
<a name="166" href="#166">166</a>         Assert.assertEquals(1, session.getDecoderOutputQueue().size());
<a name="167" href="#167">167</a>         Assert.assertEquals(<span class="jxr_string">"ABC"</span>, session.getDecoderOutputQueue().poll());
<a name="168" href="#168">168</a> 
<a name="169" href="#169">169</a>         <em class="jxr_comment">// Test two decode and one output</em>
<a name="170" href="#170">170</a>         in.clear();
<a name="171" href="#171">171</a>         in.putString(<span class="jxr_string">"DEF"</span>, encoder);
<a name="172" href="#172">172</a>         in.flip();
<a name="173" href="#173">173</a>         decoder.decode(session, in, out);
<a name="174" href="#174">174</a>         Assert.assertEquals(0, session.getDecoderOutputQueue().size());
<a name="175" href="#175">175</a>         in.clear();
<a name="176" href="#176">176</a>         in.putString(<span class="jxr_string">"GHI\r\n"</span>, encoder);
<a name="177" href="#177">177</a>         in.flip();
<a name="178" href="#178">178</a>         decoder.decode(session, in, out);
<a name="179" href="#179">179</a>         Assert.assertEquals(1, session.getDecoderOutputQueue().size());
<a name="180" href="#180">180</a>         Assert.assertEquals(<span class="jxr_string">"DEFGHI"</span>, session.getDecoderOutputQueue().poll());
<a name="181" href="#181">181</a> 
<a name="182" href="#182">182</a>         <em class="jxr_comment">// Test one decode and two output</em>
<a name="183" href="#183">183</a>         in.clear();
<a name="184" href="#184">184</a>         in.putString(<span class="jxr_string">"JKL\r\nMNO\r\n"</span>, encoder);
<a name="185" href="#185">185</a>         in.flip();
<a name="186" href="#186">186</a>         decoder.decode(session, in, out);
<a name="187" href="#187">187</a>         Assert.assertEquals(2, session.getDecoderOutputQueue().size());
<a name="188" href="#188">188</a>         Assert.assertEquals(<span class="jxr_string">"JKL"</span>, session.getDecoderOutputQueue().poll());
<a name="189" href="#189">189</a>         Assert.assertEquals(<span class="jxr_string">"MNO"</span>, session.getDecoderOutputQueue().poll());
<a name="190" href="#190">190</a> 
<a name="191" href="#191">191</a>         <em class="jxr_comment">// Test multiple '\n's</em>
<a name="192" href="#192">192</a>         in.clear();
<a name="193" href="#193">193</a>         in.putString(<span class="jxr_string">"\n\n\n"</span>, encoder);
<a name="194" href="#194">194</a>         in.flip();
<a name="195" href="#195">195</a>         decoder.decode(session, in, out);
<a name="196" href="#196">196</a>         Assert.assertEquals(3, session.getDecoderOutputQueue().size());
<a name="197" href="#197">197</a>         Assert.assertEquals(<span class="jxr_string">""</span>, session.getDecoderOutputQueue().poll());
<a name="198" href="#198">198</a>         Assert.assertEquals(<span class="jxr_string">""</span>, session.getDecoderOutputQueue().poll());
<a name="199" href="#199">199</a>         Assert.assertEquals(<span class="jxr_string">""</span>, session.getDecoderOutputQueue().poll());
<a name="200" href="#200">200</a> 
<a name="201" href="#201">201</a>         <em class="jxr_comment">// Test splitted long delimiter (\r\r\n)</em>
<a name="202" href="#202">202</a>         in.clear();
<a name="203" href="#203">203</a>         in.putString(<span class="jxr_string">"PQR\r"</span>, encoder);
<a name="204" href="#204">204</a>         in.flip();
<a name="205" href="#205">205</a>         decoder.decode(session, in, out);
<a name="206" href="#206">206</a>         Assert.assertEquals(0, session.getDecoderOutputQueue().size());
<a name="207" href="#207">207</a>         in.clear();
<a name="208" href="#208">208</a>         in.putString(<span class="jxr_string">"\r"</span>, encoder);
<a name="209" href="#209">209</a>         in.flip();
<a name="210" href="#210">210</a>         decoder.decode(session, in, out);
<a name="211" href="#211">211</a>         Assert.assertEquals(0, session.getDecoderOutputQueue().size());
<a name="212" href="#212">212</a>         in.clear();
<a name="213" href="#213">213</a>         in.putString(<span class="jxr_string">"\n"</span>, encoder);
<a name="214" href="#214">214</a>         in.flip();
<a name="215" href="#215">215</a>         decoder.decode(session, in, out);
<a name="216" href="#216">216</a>         Assert.assertEquals(1, session.getDecoderOutputQueue().size());
<a name="217" href="#217">217</a>         Assert.assertEquals(<span class="jxr_string">"PQR"</span>, session.getDecoderOutputQueue().poll());
<a name="218" href="#218">218</a> 
<a name="219" href="#219">219</a>         <em class="jxr_comment">// Test splitted long delimiter (\r\r\n) which produces two output</em>
<a name="220" href="#220">220</a>         in.clear();
<a name="221" href="#221">221</a>         in.putString(<span class="jxr_string">"PQR\r"</span>, encoder);
<a name="222" href="#222">222</a>         in.flip();
<a name="223" href="#223">223</a>         decoder.decode(session, in, out);
<a name="224" href="#224">224</a>         Assert.assertEquals(0, session.getDecoderOutputQueue().size());
<a name="225" href="#225">225</a>         in.clear();
<a name="226" href="#226">226</a>         in.putString(<span class="jxr_string">"\r"</span>, encoder);
<a name="227" href="#227">227</a>         in.flip();
<a name="228" href="#228">228</a>         decoder.decode(session, in, out);
<a name="229" href="#229">229</a>         Assert.assertEquals(0, session.getDecoderOutputQueue().size());
<a name="230" href="#230">230</a>         in.clear();
<a name="231" href="#231">231</a>         in.putString(<span class="jxr_string">"\nSTU\r\r\n"</span>, encoder);
<a name="232" href="#232">232</a>         in.flip();
<a name="233" href="#233">233</a>         decoder.decode(session, in, out);
<a name="234" href="#234">234</a>         Assert.assertEquals(2, session.getDecoderOutputQueue().size());
<a name="235" href="#235">235</a>         Assert.assertEquals(<span class="jxr_string">"PQR"</span>, session.getDecoderOutputQueue().poll());
<a name="236" href="#236">236</a>         Assert.assertEquals(<span class="jxr_string">"STU"</span>, session.getDecoderOutputQueue().poll());
<a name="237" href="#237">237</a> 
<a name="238" href="#238">238</a>         <em class="jxr_comment">// Test splitted long delimiter mixed with partial non-delimiter.</em>
<a name="239" href="#239">239</a>         in.clear();
<a name="240" href="#240">240</a>         in.putString(<span class="jxr_string">"PQR\r"</span>, encoder);
<a name="241" href="#241">241</a>         in.flip();
<a name="242" href="#242">242</a>         decoder.decode(session, in, out);
<a name="243" href="#243">243</a>         Assert.assertEquals(0, session.getDecoderOutputQueue().size());
<a name="244" href="#244">244</a>         in.clear();
<a name="245" href="#245">245</a>         in.putString(<span class="jxr_string">"X\r"</span>, encoder);
<a name="246" href="#246">246</a>         in.flip();
<a name="247" href="#247">247</a>         decoder.decode(session, in, out);
<a name="248" href="#248">248</a>         Assert.assertEquals(0, session.getDecoderOutputQueue().size());
<a name="249" href="#249">249</a>         in.clear();
<a name="250" href="#250">250</a>         in.putString(<span class="jxr_string">"\r\nSTU\r\r\n"</span>, encoder);
<a name="251" href="#251">251</a>         in.flip();
<a name="252" href="#252">252</a>         decoder.decode(session, in, out);
<a name="253" href="#253">253</a>         Assert.assertEquals(2, session.getDecoderOutputQueue().size());
<a name="254" href="#254">254</a>         Assert.assertEquals(<span class="jxr_string">"PQR\rX"</span>, session.getDecoderOutputQueue().poll());
<a name="255" href="#255">255</a>         Assert.assertEquals(<span class="jxr_string">"STU"</span>, session.getDecoderOutputQueue().poll());
<a name="256" href="#256">256</a>     }
<a name="257" href="#257">257</a> 
<a name="258" href="#258">258</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testOverflow() <strong class="jxr_keyword">throws</strong> Exception {
<a name="259" href="#259">259</a>         TextLineDecoder decoder = <strong class="jxr_keyword">new</strong> TextLineDecoder(Charset.forName(<span class="jxr_string">"UTF-8"</span>),
<a name="260" href="#260">260</a>                 LineDelimiter.AUTO);
<a name="261" href="#261">261</a>         decoder.setMaxLineLength(3);
<a name="262" href="#262">262</a> 
<a name="263" href="#263">263</a>         CharsetEncoder encoder = Charset.forName(<span class="jxr_string">"UTF-8"</span>).newEncoder();
<a name="264" href="#264">264</a>         ProtocolCodecSession session = <strong class="jxr_keyword">new</strong> ProtocolCodecSession();
<a name="265" href="#265">265</a>         ProtocolDecoderOutput out = session.getDecoderOutput();
<a name="266" href="#266">266</a>         IoBuffer in = IoBuffer.allocate(16);
<a name="267" href="#267">267</a> 
<a name="268" href="#268">268</a>         <em class="jxr_comment">// Make sure the overflow exception is not thrown until</em>
<a name="269" href="#269">269</a>         <em class="jxr_comment">// the delimiter is encountered.</em>
<a name="270" href="#270">270</a>         in.putString(<span class="jxr_string">"A"</span>, encoder).flip().mark();
<a name="271" href="#271">271</a>         decoder.decode(session, in.reset().mark(), out);
<a name="272" href="#272">272</a>         Assert.assertEquals(0, session.getDecoderOutputQueue().size());
<a name="273" href="#273">273</a>         decoder.decode(session, in.reset().mark(), out);
<a name="274" href="#274">274</a>         Assert.assertEquals(0, session.getDecoderOutputQueue().size());
<a name="275" href="#275">275</a>         decoder.decode(session, in.reset().mark(), out);
<a name="276" href="#276">276</a>         Assert.assertEquals(0, session.getDecoderOutputQueue().size());
<a name="277" href="#277">277</a>         decoder.decode(session, in.reset().mark(), out);
<a name="278" href="#278">278</a>         Assert.assertEquals(0, session.getDecoderOutputQueue().size());
<a name="279" href="#279">279</a> 
<a name="280" href="#280">280</a>         in.clear().putString(<span class="jxr_string">"A\r\nB\r\n"</span>, encoder).flip();
<a name="281" href="#281">281</a>         <strong class="jxr_keyword">try</strong> {
<a name="282" href="#282">282</a>             decoder.decode(session, in, out);
<a name="283" href="#283">283</a>             Assert.fail();
<a name="284" href="#284">284</a>         } <strong class="jxr_keyword">catch</strong> (RecoverableProtocolDecoderException e) {
<a name="285" href="#285">285</a>             <em class="jxr_comment">// Success!</em>
<a name="286" href="#286">286</a>         }
<a name="287" href="#287">287</a> 
<a name="288" href="#288">288</a>         decoder.decode(session, in, out);
<a name="289" href="#289">289</a>         Assert.assertEquals(1, session.getDecoderOutputQueue().size());
<a name="290" href="#290">290</a>         Assert.assertEquals(<span class="jxr_string">"B"</span>, session.getDecoderOutputQueue().poll());
<a name="291" href="#291">291</a> 
<a name="292" href="#292">292</a>         <em class="jxr_comment">// Make sure OOM is not thrown.</em>
<a name="293" href="#293">293</a>         System.gc();
<a name="294" href="#294">294</a>         <strong class="jxr_keyword">long</strong> oldFreeMemory = Runtime.getRuntime().freeMemory();
<a name="295" href="#295">295</a>         in = IoBuffer.allocate(1048576 * 16).sweep((byte) ' ').mark();
<a name="296" href="#296">296</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 10; i ++) {
<a name="297" href="#297">297</a>             decoder.decode(session, in.reset().mark(), out);
<a name="298" href="#298">298</a>             Assert.assertEquals(0, session.getDecoderOutputQueue().size());
<a name="299" href="#299">299</a> 
<a name="300" href="#300">300</a>             <em class="jxr_comment">// Memory consumption should be minimal.</em>
<a name="301" href="#301">301</a>             Assert.assertTrue(Runtime.getRuntime().freeMemory() - oldFreeMemory &lt; 1048576);
<a name="302" href="#302">302</a>         }
<a name="303" href="#303">303</a> 
<a name="304" href="#304">304</a>         in.clear().putString(<span class="jxr_string">"C\r\nD\r\n"</span>, encoder).flip();
<a name="305" href="#305">305</a>         <strong class="jxr_keyword">try</strong> {
<a name="306" href="#306">306</a>             decoder.decode(session, in, out);
<a name="307" href="#307">307</a>             Assert.fail();
<a name="308" href="#308">308</a>         } <strong class="jxr_keyword">catch</strong> (RecoverableProtocolDecoderException e) {
<a name="309" href="#309">309</a>             <em class="jxr_comment">// Success!</em>
<a name="310" href="#310">310</a>         }
<a name="311" href="#311">311</a> 
<a name="312" href="#312">312</a>         decoder.decode(session, in, out);
<a name="313" href="#313">313</a>         Assert.assertEquals(1, session.getDecoderOutputQueue().size());
<a name="314" href="#314">314</a>         Assert.assertEquals(<span class="jxr_string">"D"</span>, session.getDecoderOutputQueue().poll());
<a name="315" href="#315">315</a> 
<a name="316" href="#316">316</a>         <em class="jxr_comment">// Memory consumption should be minimal.</em>
<a name="317" href="#317">317</a>         Assert.assertTrue(Runtime.getRuntime().freeMemory() - oldFreeMemory &lt; 1048576);
<a name="318" href="#318">318</a>     }
<a name="319" href="#319">319</a>     
<a name="320" href="#320">320</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSMTPDataBounds() <strong class="jxr_keyword">throws</strong> Exception {
<a name="321" href="#321">321</a>         TextLineDecoder decoder = <strong class="jxr_keyword">new</strong> TextLineDecoder(Charset.forName(<span class="jxr_string">"ISO-8859-1"</span>),
<a name="322" href="#322">322</a>                 <strong class="jxr_keyword">new</strong> LineDelimiter(<span class="jxr_string">"\r\n.\r\n"</span>));
<a name="323" href="#323">323</a> 
<a name="324" href="#324">324</a>         CharsetEncoder encoder = Charset.forName(<span class="jxr_string">"ISO-8859-1"</span>).newEncoder();
<a name="325" href="#325">325</a>         ProtocolCodecSession session = <strong class="jxr_keyword">new</strong> ProtocolCodecSession();
<a name="326" href="#326">326</a>         IoBuffer in = IoBuffer.allocate(16).setAutoExpand(<strong class="jxr_keyword">true</strong>);
<a name="327" href="#327">327</a> 
<a name="328" href="#328">328</a>         in.putString(<span class="jxr_string">"\r\n"</span>, encoder).flip().mark();
<a name="329" href="#329">329</a>         decoder.decode(session, in.reset().mark(), session.getDecoderOutput());
<a name="330" href="#330">330</a>         Assert.assertEquals(0, session.getDecoderOutputQueue().size());
<a name="331" href="#331">331</a>         in.putString(<span class="jxr_string">"Body\r\n.\r\n"</span>, encoder).flip().mark();
<a name="332" href="#332">332</a>         decoder.decode(session, in.reset().mark(), session.getDecoderOutput());
<a name="333" href="#333">333</a>         Assert.assertEquals(1, session.getDecoderOutputQueue().size());
<a name="334" href="#334">334</a>         Assert.assertEquals(<span class="jxr_string">"\r\n\r\nBody"</span>, session.getDecoderOutputQueue().poll());
<a name="335" href="#335">335</a>     }
<a name="336" href="#336">336</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

