1/*
2 *  Licensed to the Apache Software Foundation (ASF) under one or more
3 *  contributor license agreements.  See the NOTICE file distributed with
4 *  this work for additional information regarding copyright ownership.
5 *  The ASF licenses this file to You under the Apache License, Version 2.0
6 *  (the "License"); you may not use this file except in compliance with
7 *  the License.  You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 *  Unless required by applicable law or agreed to in writing, software
12 *  distributed under the License is distributed on an "AS IS" BASIS,
13 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *  See the License for the specific language governing permissions and
15 *  limitations under the License.
16 */
17
18/**
19* @author Boris V. Kuznetsov
20* @version $Revision$
21*/
22
23package tests.api.javax.net;
24
25import java.io.IOException;
26import java.net.InetAddress;
27import java.net.ServerSocket;
28import java.net.SocketException;
29import javax.net.ServerSocketFactory;
30
31import junit.framework.TestCase;
32
33public class ServerSocketFactoryTest extends TestCase {
34
35    public void test_Constructor() {
36        ServerSocketFactory sf = new MyServerSocketFactory();
37    }
38
39    public final void test_createServerSocket() throws Exception {
40        ServerSocketFactory sf = ServerSocketFactory.getDefault();
41        ServerSocket ss = sf.createServerSocket();
42        assertNotNull(ss);
43        ss.close();
44    }
45
46    public final void test_createServerSocket_I() throws Exception {
47        ServerSocketFactory sf = ServerSocketFactory.getDefault();
48        ServerSocket ss = sf.createServerSocket(0);
49        assertNotNull(ss);
50
51        try {
52            sf.createServerSocket(ss.getLocalPort());
53            fail("IOException wasn't thrown");
54        } catch (IOException expected) {
55        }
56
57        ss.close();
58
59        try {
60            sf.createServerSocket(-1);
61            fail("IllegalArgumentException wasn't thrown");
62        } catch (IllegalArgumentException expected) {
63        }
64    }
65
66    public final void test_createServerSocket_II() throws Exception {
67        ServerSocketFactory sf = ServerSocketFactory.getDefault();
68        ServerSocket ss = sf.createServerSocket(0, 0);
69        assertNotNull(ss);
70
71        try {
72            sf.createServerSocket(ss.getLocalPort(), 0);
73            fail("IOException wasn't thrown");
74        } catch (IOException expected) {
75        }
76
77        ss.close();
78
79        try {
80            sf.createServerSocket(65536, 0);
81            fail("IllegalArgumentException wasn't thrown");
82        } catch (IllegalArgumentException expected) {
83        }
84    }
85
86    public final void test_createServerSocket_IIInetAddress() throws Exception {
87        ServerSocketFactory sf = ServerSocketFactory.getDefault();
88
89        ServerSocket ss = sf.createServerSocket(0, 0, InetAddress.getLocalHost());
90        assertNotNull(ss);
91
92        try {
93            sf.createServerSocket(ss.getLocalPort(), 0, InetAddress.getLocalHost());
94            fail("IOException wasn't thrown");
95        } catch (IOException expected) {
96        }
97
98        ss.close();
99
100        try {
101            sf.createServerSocket(Integer.MAX_VALUE, 0, InetAddress.getLocalHost());
102            fail("IllegalArgumentException wasn't thrown");
103        } catch (IllegalArgumentException expected) {
104        }
105    }
106}
107class MyServerSocketFactory extends ServerSocketFactory {
108
109    public MyServerSocketFactory() {
110        super();
111    }
112
113    @Override
114    public ServerSocket createServerSocket(int port) throws IOException {
115        return null;
116    }
117
118    @Override
119    public ServerSocket createServerSocket(int port, int backlog)
120            throws IOException {
121        return null;
122    }
123
124    @Override
125    public ServerSocket createServerSocket(int port, int backlog,
126            InetAddress address) throws IOException {
127        return null;
128    }
129}
130