001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.commons.net.telnet;
018
019 import junit.framework.TestCase;
020
021 /***
022 * The TelnetOptionHandlerTest is the abstract class for
023 * testing TelnetOptionHandler. It can be used to derive
024 * the actual test classes for TelnetOptionHadler derived
025 * classes, by adding creation of three new option handlers
026 * and testing of the specific subnegotiation behaviour.
027 * <p>
028 * @author Bruno D'Avanzo
029 ***/
030 public abstract class TelnetOptionHandlerTestAbstract extends TestCase
031 {
032 TelnetOptionHandler opthand1;
033 TelnetOptionHandler opthand2;
034 TelnetOptionHandler opthand3;
035
036 /***
037 * setUp for the test. The derived test class must implement
038 * this method by creating opthand1, opthand2, opthand3
039 * like in the following:
040 * opthand1 = new EchoOptionHandler();
041 * opthand2 = new EchoOptionHandler(true, true, true, true);
042 * opthand3 = new EchoOptionHandler(false, false, false, false);
043 ***/
044 @Override
045 protected abstract void setUp();
046
047 /***
048 * test of the constructors. The derived class may add
049 * test of the option code.
050 ***/
051 public void testConstructors()
052 {
053 // add test of the option code
054 assertTrue(!opthand1.getInitLocal());
055 assertTrue(!opthand1.getInitRemote());
056 assertTrue(!opthand1.getAcceptLocal());
057 assertTrue(!opthand1.getAcceptRemote());
058
059 assertTrue(opthand2.getInitLocal());
060 assertTrue(opthand2.getInitRemote());
061 assertTrue(opthand2.getAcceptLocal());
062 assertTrue(opthand2.getAcceptRemote());
063
064 assertTrue(!opthand3.getInitLocal());
065 assertTrue(!opthand3.getInitRemote());
066 assertTrue(!opthand3.getAcceptLocal());
067 assertTrue(!opthand3.getAcceptRemote());
068 }
069
070 /***
071 * test of setWill/getWill
072 ***/
073 public void testWill()
074 {
075 opthand2.setWill(true);
076 opthand3.setWill(false);
077
078 assertTrue(!opthand1.getWill());
079 assertTrue(opthand2.getWill());
080 assertTrue(!opthand3.getWill());
081 }
082
083 /***
084 * test of setDo/getDo
085 ***/
086 public void testDo()
087 {
088 opthand2.setDo(true);
089 opthand3.setDo(false);
090
091 assertTrue(!opthand1.getDo());
092 assertTrue(opthand2.getDo());
093 assertTrue(!opthand3.getDo());
094 }
095
096 /***
097 * test of client-driven subnegotiation. Abstract test:
098 * the derived class should implement it.
099 ***/
100 public abstract void testStartSubnegotiation();
101
102 /***
103 * test of server-driven subnegotiation. Abstract test:
104 * the derived class should implement it.
105 ***/
106 public abstract void testAnswerSubnegotiation();
107 // test subnegotiation
108 }