<!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>TransportTypeTest xref</title>
<link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" />
</head>
<body>
<pre>

<a name="1" href="#1">1</a>   <em class="comment">/*</em>
<a name="2" href="#2">2</a>   <em class="comment"> *   @(#) $Id: TransportTypeTest.java 332218 2005-11-10 03:52:42Z trustin $</em>
<a name="3" href="#3">3</a>   <em class="comment"> *</em>
<a name="4" href="#4">4</a>   <em class="comment"> *   Copyright 2004 The Apache Software Foundation</em>
<a name="5" href="#5">5</a>   <em class="comment"> *</em>
<a name="6" href="#6">6</a>   <em class="comment"> *   Licensed under the Apache License, Version 2.0 (the "License");</em>
<a name="7" href="#7">7</a>   <em class="comment"> *   you may not use this file except in compliance with the License.</em>
<a name="8" href="#8">8</a>   <em class="comment"> *   You may obtain a copy of the License at</em>
<a name="9" href="#9">9</a>   <em class="comment"> *</em>
<a name="10" href="#10">10</a>  <em class="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="comment"> *</em>
<a name="12" href="#12">12</a>  <em class="comment"> *   Unless required by applicable law or agreed to in writing, software</em>
<a name="13" href="#13">13</a>  <em class="comment"> *   distributed under the License is distributed on an "AS IS" BASIS,</em>
<a name="14" href="#14">14</a>  <em class="comment"> *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
<a name="15" href="#15">15</a>  <em class="comment"> *   See the License for the specific language governing permissions and</em>
<a name="16" href="#16">16</a>  <em class="comment"> *   limitations under the License.</em>
<a name="17" href="#17">17</a>  <em class="comment"> *</em>
<a name="18" href="#18">18</a>  <em class="comment"> */</em>
<a name="19" href="#19">19</a>  <strong>package</strong> <a href="../../../../org/apache/mina/common/package-summary.html">org.apache.mina.common</a>;
<a name="20" href="#20">20</a>  
<a name="21" href="#21">21</a>  <strong>import</strong> junit.framework.Assert;
<a name="22" href="#22">22</a>  <strong>import</strong> junit.framework.TestCase;
<a name="23" href="#23">23</a>  
<a name="24" href="#24">24</a>  <em>/**<em>*</em></em>
<a name="25" href="#25">25</a>  <em> * Tests {@link TransportType}.</em>
<a name="26" href="#26">26</a>  <em> * </em>
<a name="27" href="#27">27</a>  <em> * @author The Apache Directory Project (dev@directory.apache.org)</em>
<a name="28" href="#28">28</a>  <em> * @version $Rev: 332218 $, $Date: 2005-11-10 12:52:42 +0900 $</em>
<a name="29" href="#29">29</a>  <em> */</em>
<a name="30" href="#30">30</a>  <strong>public</strong> <strong>class</strong> <a href="../../../../org/apache/mina/common/TransportTypeTest.html">TransportTypeTest</a> <strong>extends</strong> TestCase {
<a name="31" href="#31">31</a>  
<a name="32" href="#32">32</a>      <strong>public</strong> <strong>static</strong> <strong>void</strong> main(String[] args) {
<a name="33" href="#33">33</a>          junit.textui.TestRunner.run(TransportTypeTest.<strong>class</strong>);
<a name="34" href="#34">34</a>      }
<a name="35" href="#35">35</a>      
<a name="36" href="#36">36</a>      <strong>public</strong> <strong>void</strong> testRegistration()
<a name="37" href="#37">37</a>      {
<a name="38" href="#38">38</a>          TransportType myType = <strong>new</strong> TransportType( <strong>new</strong> String[] { <span class="string">"a"</span>, <span class="string">"b"</span>, <span class="string">"c"</span> }, <strong>true</strong> );
<a name="39" href="#39">39</a>          
<a name="40" href="#40">40</a>          Assert.assertSame( myType, TransportType.getInstance( <span class="string">"a"</span> ) );
<a name="41" href="#41">41</a>          Assert.assertSame( myType, TransportType.getInstance( <span class="string">"A"</span> ) );
<a name="42" href="#42">42</a>          Assert.assertSame( myType, TransportType.getInstance( <span class="string">"b"</span> ) );
<a name="43" href="#43">43</a>          Assert.assertSame( myType, TransportType.getInstance( <span class="string">"B"</span> ) );
<a name="44" href="#44">44</a>          Assert.assertSame( myType, TransportType.getInstance( <span class="string">"c"</span> ) );
<a name="45" href="#45">45</a>          Assert.assertSame( myType, TransportType.getInstance( <span class="string">"C"</span> ) );
<a name="46" href="#46">46</a>          <strong>try</strong>
<a name="47" href="#47">47</a>          {
<a name="48" href="#48">48</a>              TransportType.getInstance( <span class="string">"unknown"</span> );
<a name="49" href="#49">49</a>              Assert.fail();
<a name="50" href="#50">50</a>          }
<a name="51" href="#51">51</a>          <strong>catch</strong>( IllegalArgumentException e )
<a name="52" href="#52">52</a>          {
<a name="53" href="#53">53</a>              <em class="comment">// ignore</em>
<a name="54" href="#54">54</a>          }
<a name="55" href="#55">55</a>          
<a name="56" href="#56">56</a>          <strong>try</strong>
<a name="57" href="#57">57</a>          {
<a name="58" href="#58">58</a>              <strong>new</strong> TransportType( <strong>new</strong> String[] { <span class="string">"A"</span> }, false );
<a name="59" href="#59">59</a>              Assert.fail();
<a name="60" href="#60">60</a>          }
<a name="61" href="#61">61</a>          <strong>catch</strong>( IllegalArgumentException e )
<a name="62" href="#62">62</a>          {
<a name="63" href="#63">63</a>              <em class="comment">// ignore</em>
<a name="64" href="#64">64</a>          }
<a name="65" href="#65">65</a>      }
<a name="66" href="#66">66</a>  
<a name="67" href="#67">67</a>  }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

