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
18package org.apache.harmony.luni.tests.java.net;
19
20import java.io.FileDescriptor;
21import java.io.IOException;
22import java.net.DatagramPacket;
23import java.net.DatagramSocketImpl;
24import java.net.InetAddress;
25import java.net.NetworkInterface;
26import java.net.SocketAddress;
27import java.net.SocketException;
28
29public class DatagramSocketImplTest extends junit.framework.TestCase {
30    /**
31     * @tests java.net.DatagramSocketImpl#DatagramSocketImpl()
32     */
33    public void test_Constructor() throws Exception {
34        // regression test for Harmony-1117
35        MockDatagramSocketImpl impl = new MockDatagramSocketImpl();
36        assertNull(impl.getFileDescriptor());
37    }
38
39
40    public void test_connect() throws Exception {
41        MockDatagramSocketImpl impl = new MockDatagramSocketImpl();
42        InetAddress localhost = InetAddress.getByName("localhost"); //$NON-NLS-1$
43        // connect do nothing, so will not throw exception
44        impl.test_connect(localhost, 0);
45        impl.test_connect(localhost, -1);
46        impl.test_connect(null, -1);
47        // disconnect
48        impl.test_disconnect();
49    }
50}
51
52class MockDatagramSocketImpl extends DatagramSocketImpl {
53
54    @Override
55    public FileDescriptor getFileDescriptor() {
56        return super.getFileDescriptor();
57    }
58
59    @Override
60    protected void bind(int port, InetAddress addr) throws SocketException {
61        // empty
62    }
63
64    @Override
65    protected void close() {
66        // empty
67    }
68
69    @Override
70    protected void create() throws SocketException {
71        // empty
72    }
73
74    public Object getOption(int optID) throws SocketException {
75        return null;
76    }
77
78    @Override
79    protected byte getTTL() throws IOException {
80        return 0;
81    }
82
83    @Override
84    protected int getTimeToLive() throws IOException {
85        return 0;
86    }
87
88    @Override
89    protected void join(InetAddress addr) throws IOException {
90        // empty
91    }
92
93    @Override
94    protected void joinGroup(SocketAddress addr, NetworkInterface netInterface)
95            throws IOException {
96        // empty
97    }
98
99    @Override
100    protected void leave(InetAddress addr) throws IOException {
101        // empty
102    }
103
104    @Override
105    protected void leaveGroup(SocketAddress addr, NetworkInterface netInterface)
106            throws IOException {
107        // empty
108    }
109
110    @Override
111    protected int peek(InetAddress sender) throws IOException {
112        return 0;
113    }
114
115    @Override
116    protected int peekData(DatagramPacket pack) throws IOException {
117        return 0;
118    }
119
120    @Override
121    protected void receive(DatagramPacket pack) throws IOException {
122        // empty
123    }
124
125    @Override
126    protected void send(DatagramPacket pack) throws IOException {
127        // empty
128
129    }
130
131    public void setOption(int optID, Object val) throws SocketException {
132        // empty
133    }
134
135    @Override
136    protected void setTTL(byte ttl) throws IOException {
137        // empty
138    }
139
140    @Override
141    protected void setTimeToLive(int ttl) throws IOException {
142        // empty
143    }
144
145    public void test_connect(InetAddress inetAddr, int port ) throws SocketException{
146        super.connect(inetAddr, port);
147    }
148
149    public void test_disconnect(){
150        super.disconnect();
151    }
152}
153