📄 iobuffertest.html
字号:
<a name="651" href="#651">651</a> duplicate.setAutoExpand(<strong class="jxr_keyword">true</strong>);<a name="652" href="#652">652</a> Assert.fail();<a name="653" href="#653">653</a> } <strong class="jxr_keyword">catch</strong> (IllegalStateException e) {<a name="654" href="#654">654</a> <em class="jxr_comment">// OK</em><a name="655" href="#655">655</a> }<a name="656" href="#656">656</a> }<a name="657" href="#657">657</a> <a name="658" href="#658">658</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSlice() <strong class="jxr_keyword">throws</strong> Exception {<a name="659" href="#659">659</a> IoBuffer original;<a name="660" href="#660">660</a> IoBuffer slice;<a name="661" href="#661">661</a> <a name="662" href="#662">662</a> <em class="jxr_comment">// Test if the buffer is sliced correctly.</em><a name="663" href="#663">663</a> original = IoBuffer.allocate(16).sweep();<a name="664" href="#664">664</a> original.position(4);<a name="665" href="#665">665</a> original.limit(10);<a name="666" href="#666">666</a> slice = original.slice();<a name="667" href="#667">667</a> original.put(4, (byte) 127);<a name="668" href="#668">668</a> Assert.assertEquals(0, slice.position());<a name="669" href="#669">669</a> Assert.assertEquals(6, slice.limit());<a name="670" href="#670">670</a> Assert.assertEquals(6, slice.capacity());<a name="671" href="#671">671</a> Assert.assertNotSame(original.buf(), slice.buf());<a name="672" href="#672">672</a> Assert.assertEquals(127, slice.get(0));<a name="673" href="#673">673</a> }<a name="674" href="#674">674</a> <a name="675" href="#675">675</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testReadOnlyBuffer() <strong class="jxr_keyword">throws</strong> Exception {<a name="676" href="#676">676</a> IoBuffer original;<a name="677" href="#677">677</a> IoBuffer duplicate;<a name="678" href="#678">678</a> <a name="679" href="#679">679</a> <em class="jxr_comment">// Test if the buffer is duplicated correctly.</em><a name="680" href="#680">680</a> original = IoBuffer.allocate(16).sweep();<a name="681" href="#681">681</a> original.position(4);<a name="682" href="#682">682</a> original.limit(10);<a name="683" href="#683">683</a> duplicate = original.asReadOnlyBuffer();<a name="684" href="#684">684</a> original.put(4, (byte) 127);<a name="685" href="#685">685</a> Assert.assertEquals(4, duplicate.position());<a name="686" href="#686">686</a> Assert.assertEquals(10, duplicate.limit());<a name="687" href="#687">687</a> Assert.assertEquals(16, duplicate.capacity());<a name="688" href="#688">688</a> Assert.assertNotSame(original.buf(), duplicate.buf());<a name="689" href="#689">689</a> Assert.assertEquals(127, duplicate.get(4));<a name="690" href="#690">690</a> <a name="691" href="#691">691</a> <em class="jxr_comment">// Try to expand.</em><a name="692" href="#692">692</a> <strong class="jxr_keyword">try</strong> {<a name="693" href="#693">693</a> original = IoBuffer.allocate(16);<a name="694" href="#694">694</a> duplicate = original.asReadOnlyBuffer();<a name="695" href="#695">695</a> duplicate.putString(<span class="jxr_string">"A very very very very looooooong string"</span>,<a name="696" href="#696">696</a> Charset.forName(<span class="jxr_string">"ISO-8859-1"</span>).newEncoder());<a name="697" href="#697">697</a> Assert.fail();<a name="698" href="#698">698</a> } <strong class="jxr_keyword">catch</strong> (ReadOnlyBufferException e) {<a name="699" href="#699">699</a> <em class="jxr_comment">// OK</em><a name="700" href="#700">700</a> }<a name="701" href="#701">701</a> }<a name="702" href="#702">702</a> <a name="703" href="#703">703</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetUnsigned() <strong class="jxr_keyword">throws</strong> Exception {<a name="704" href="#704">704</a> IoBuffer buf = IoBuffer.allocate(16);<a name="705" href="#705">705</a> buf.put((byte) 0xA4);<a name="706" href="#706">706</a> buf.put((byte) 0xD0);<a name="707" href="#707">707</a> buf.put((byte) 0xB3);<a name="708" href="#708">708</a> buf.put((byte) 0xCD);<a name="709" href="#709">709</a> buf.flip();<a name="710" href="#710">710</a> <a name="711" href="#711">711</a> buf.order(ByteOrder.LITTLE_ENDIAN);<a name="712" href="#712">712</a> <a name="713" href="#713">713</a> buf.mark();<a name="714" href="#714">714</a> Assert.assertEquals(0xA4, buf.getUnsigned());<a name="715" href="#715">715</a> buf.reset();<a name="716" href="#716">716</a> Assert.assertEquals(0xD0A4, buf.getUnsignedShort());<a name="717" href="#717">717</a> buf.reset();<a name="718" href="#718">718</a> Assert.assertEquals(0xCDB3D0A4L, buf.getUnsignedInt());<a name="719" href="#719">719</a> }<a name="720" href="#720">720</a> <a name="721" href="#721">721</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testIndexOf() <strong class="jxr_keyword">throws</strong> Exception {<a name="722" href="#722">722</a> <strong class="jxr_keyword">boolean</strong> direct = false;<a name="723" href="#723">723</a> <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i < 2; i++, direct = !direct) {<a name="724" href="#724">724</a> IoBuffer buf = IoBuffer.allocate(16, direct);<a name="725" href="#725">725</a> buf.put((byte) 0x1);<a name="726" href="#726">726</a> buf.put((byte) 0x2);<a name="727" href="#727">727</a> buf.put((byte) 0x3);<a name="728" href="#728">728</a> buf.put((byte) 0x4);<a name="729" href="#729">729</a> buf.put((byte) 0x1);<a name="730" href="#730">730</a> buf.put((byte) 0x2);<a name="731" href="#731">731</a> buf.put((byte) 0x3);<a name="732" href="#732">732</a> buf.put((byte) 0x4);<a name="733" href="#733">733</a> buf.position(2);<a name="734" href="#734">734</a> buf.limit(5);<a name="735" href="#735">735</a> <a name="736" href="#736">736</a> Assert.assertEquals(4, buf.indexOf((byte) 0x1));<a name="737" href="#737">737</a> Assert.assertEquals(-1, buf.indexOf((byte) 0x2));<a name="738" href="#738">738</a> Assert.assertEquals(2, buf.indexOf((byte) 0x3));<a name="739" href="#739">739</a> Assert.assertEquals(3, buf.indexOf((byte) 0x4));<a name="740" href="#740">740</a> }<a name="741" href="#741">741</a> }<a name="742" href="#742">742</a> <a name="743" href="#743">743</a> <em class="jxr_comment">// We need an enum with 64 values</em><a name="744" href="#744">744</a> <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> enum <a href="../../../../org/apache/mina/common/IoBufferTest.html">TestEnum</a> {<a name="745" href="#745">745</a> E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12, E13, E14, E15, E16, E17, E18, E19, E20, E21, E22, E23, E24, E25, E26, E27, E28, E29, E30, E31, E32, E33, E34, E35, E36, E37, E38, E39, E40, E41, E42, E43, E44, E45, E46, E77, E48, E49, E50, E51, E52, E53, E54, E55, E56, E57, E58, E59, E60, E61, E62, E63, E64<a name="746" href="#746">746</a> }<a name="747" href="#747">747</a> <a name="748" href="#748">748</a> <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> enum <a href="../../../../org/apache/mina/common/IoBufferTest.html">TooBigEnum</a> {<a name="749" href="#749">749</a> E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12, E13, E14, E15, E16, E17, E18, E19, E20, E21, E22, E23, E24, E25, E26, E27, E28, E29, E30, E31, E32, E33, E34, E35, E36, E37, E38, E39, E40, E41, E42, E43, E44, E45, E46, E77, E48, E49, E50, E51, E52, E53, E54, E55, E56, E57, E58, E59, E60, E61, E62, E63, E64, E65<a name="750" href="#750">750</a> }<a name="751" href="#751">751</a> <a name="752" href="#752">752</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testPutEnumSet() {<a name="753" href="#753">753</a> IoBuffer buf = IoBuffer.allocate(8);<a name="754" href="#754">754</a> <a name="755" href="#755">755</a> <em class="jxr_comment">// Test empty set</em><a name="756" href="#756">756</a> buf.putEnumSet(EnumSet.noneOf(TestEnum.<strong class="jxr_keyword">class</strong>));<a name="757" href="#757">757</a> buf.flip();<a name="758" href="#758">758</a> assertEquals(0, buf.get());<a name="759" href="#759">759</a> <a name="760" href="#760">760</a> buf.clear();<a name="761" href="#761">761</a> buf.putEnumSetShort(EnumSet.noneOf(TestEnum.<strong class="jxr_keyword">class</strong>));<a name="762" href="#762">762</a> buf.flip();<a name="763" href="#763">763</a> assertEquals(0, buf.getShort());<a name="764" href="#764">764</a> <a name="765" href="#765">765</a> buf.clear();<a name="766" href="#766">766</a> buf.putEnumSetInt(EnumSet.noneOf(TestEnum.<strong class="jxr_keyword">class</strong>));<a name="767" href="#767">767</a> buf.flip();<a name="768" href="#768">768</a> assertEquals(0, buf.getInt());<a name="769" href="#769">769</a> <a name="770" href="#770">770</a> buf.clear();<a name="771" href="#771">771</a> buf.putEnumSetLong(EnumSet.noneOf(TestEnum.<strong class="jxr_keyword">class</strong>));<a name="772" href="#772">772</a> buf.flip();<a name="773" href="#773">773</a> assertEquals(0, buf.getLong());<a name="774" href="#774">774</a> <a name="775" href="#775">775</a> <em class="jxr_comment">// Test complete set</em><a name="776" href="#776">776</a> buf.clear();<a name="777" href="#777">777</a> buf.putEnumSet(EnumSet.range(TestEnum.E1, TestEnum.E8));<a name="778" href="#778">778</a> buf.flip();<a name="779" href="#779">779</a> assertEquals((byte) -1, buf.get());<a name="780" href="#780">780</a> <a name="781" href="#781">781</a> buf.clear();<a name="782" href="#782">782</a> buf.putEnumSetShort(EnumSet.range(TestEnum.E1, TestEnum.E16));<a name="783" href="#783">783</a> buf.flip();<a name="784" href="#784">784</a> assertEquals((<strong class="jxr_keyword">short</strong>) -1, buf.getShort());<a name="785" href="#785">785</a> <a name="786" href="#786">786</a> buf.clear();<a name="787" href="#787">787</a> buf.putEnumSetInt(EnumSet.range(TestEnum.E1, TestEnum.E32));<a name="788" href="#788">788</a> buf.flip();<a name="789" href="#789">789</a> assertEquals(-1, buf.getInt());<a name="790" href="#790">790</a> <a name="791" href="#791">791</a> buf.clear();<a name="792" href="#792">792</a> buf.putEnumSetLong(EnumSet.allOf(TestEnum.<strong class="jxr_keyword">class</strong>));<a name="793" href="#793">793</a> buf.flip();<a name="794" href="#794">794</a> assertEquals(-1L, buf.getLong());<a name="795" href="#795">795</a> <a name="796" href="#796">796</a> <em class="jxr_comment">// Test high bit set</em><a name="797" href="#797">797</a> buf.clear();<a name="798" href="#798">798</a> buf.putEnumSet(EnumSet.of(TestEnum.E8));<a name="799" href="#799">799</a> buf.flip();<a name="800" href="#800">800</a> assertEquals(Byte.MIN_VALUE, buf.get());<a name="801" href="#801">801</a> <a name="802" href="#802">802</a> buf.clear();<a name="803" href="#803">803</a> buf.putEnumSetShort(EnumSet.of(TestEnum.E16));<a name="804" href="#804">804</a> buf.flip();<a name="805" href="#805">805</a> assertEquals(Short.MIN_VALUE, buf.getShort());<a name="806" href="#806">806</a> <a name="807" href="#807">807</a> buf.clear();<a name="808" href="#808">808</a> buf.putEnumSetInt(EnumSet.of(TestEnum.E32));<a name="809" href="#809">809</a> buf.flip();<a name="810" href="#810">810</a> assertEquals(Integer.MIN_VALUE, buf.getInt());<a name="811"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -