1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/*
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Licensed to the Apache Software Foundation (ASF) under one or more
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  contributor license agreements.  See the NOTICE file distributed with
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  this work for additional information regarding copyright ownership.
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  The ASF licenses this file to You under the Apache License, Version 2.0
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  (the "License"); you may not use this file except in compliance with
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  the License.  You may obtain a copy of the License at
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Unless required by applicable law or agreed to in writing, software
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  distributed under the License is distributed on an "AS IS" BASIS,
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  See the License for the specific language governing permissions and
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  limitations under the License.
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.xnet.tests.javax.net.ssl;
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.net.ssl.SSLEngineResult;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/**
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests for SSLEngineResult class
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class SSLEngineResultTest extends TestCase {
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>SSLEngineResult(SSLEngineResult.Status status,
318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     * SSLEngineResult.HandshakeStatus handshakeStatus,
328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     * int bytesConsumed,
338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     * int bytesProduced) </code> constructor and
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * <code>getHandshakeStatus()</code>
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * <code>getStatus()</code>
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * <code>bytesConsumed()</code>
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * <code>bytesProduced()</code>
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * <code>toString()</code>
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * methods
408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     * Assertions:
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * constructor throws IllegalArgumentException when bytesConsumed
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * or bytesProduced is negative or when status or handshakeStatus
438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     * is null
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testSSLEngineResultConstructor() {
468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int[] neg = { -1, -10, -1000, Integer.MIN_VALUE,
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                (Integer.MIN_VALUE + 1) };
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int[] pos = { 0, 1, 1000, Integer.MAX_VALUE, (Integer.MAX_VALUE - 1) };
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new SSLEngineResult(null, SSLEngineResult.HandshakeStatus.FINISHED,
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    1, 1);
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("IllegalArgumentException must be thrown");
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new SSLEngineResult(SSLEngineResult.Status.BUFFER_OVERFLOW, null,
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    1, 1);
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("IllegalArgumentException must be thrown");
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < neg.length; i++) {
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new SSLEngineResult(SSLEngineResult.Status.BUFFER_OVERFLOW,
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        SSLEngineResult.HandshakeStatus.FINISHED, neg[i], 1);
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("IllegalArgumentException must be thrown");
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IllegalArgumentException e) {
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < neg.length; i++) {
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new SSLEngineResult(SSLEngineResult.Status.BUFFER_OVERFLOW,
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        SSLEngineResult.HandshakeStatus.FINISHED, 1, neg[i]);
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("IllegalArgumentException must be thrown");
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IllegalArgumentException e) {
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        SSLEngineResult.Status[] enS = SSLEngineResult.Status.values();
798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        SSLEngineResult.HandshakeStatus[] enHS = SSLEngineResult.HandshakeStatus
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .values();
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SSLEngineResult res;
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String toS;
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < enS.length; i++) {
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int j = 0; j < enHS.length; j++) {
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (int n = 0; n < pos.length; n++) {
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    for (int l = 0; l < pos.length; l++) {
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        res = new SSLEngineResult(enS[i], enHS[j], pos[n],
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                pos[l]);
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals("Incorrect bytesProduced", res
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                .bytesProduced(), pos[l]);
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals("Incorrect bytesConsumed", res
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                .bytesConsumed(), pos[n]);
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals("Incorrect HandshakeStatus", res
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                .getHandshakeStatus(), enHS[j]);
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertEquals("Incorrect Status", res.getStatus(),
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                enS[i]);
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        toS = res.toString();
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertNotNull("Result of toSring() method is null", toS);
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>SSLEngineResult.Status.values()</code> method
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testStatus01() {
1128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        SSLEngineResult.Status[] enS = SSLEngineResult.Status.values();
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Incorrect array of Status objects", enS.length > 0);
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("OK object does not define", findEl(enS,
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                SSLEngineResult.Status.OK));
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("CLOSED object does not define", findEl(enS,
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                SSLEngineResult.Status.CLOSED));
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("BUFFER_OVERFLOW object does not define", findEl(enS,
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                SSLEngineResult.Status.BUFFER_OVERFLOW));
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("BUFFER_UNDERFLOW object does not define", findEl(enS,
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                SSLEngineResult.Status.BUFFER_UNDERFLOW));
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>SSLEngineResult.Status.valueOf(String name)</code> method
1268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     * Assertion:
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * throws IllegalArgumentException when there is no constan with specified
1288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     * name
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testStatus02() {
1328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        String[] invalid = { "", "OK1", "BUFFER_overflow", "BUFFER_UND",
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "CLOSED_CLOSED", "Bad string for verification valueOf method"
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(SSLEngineResult.Status.valueOf("BUFFER_OVERFLOW"),
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                SSLEngineResult.Status.BUFFER_OVERFLOW);
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(SSLEngineResult.Status.valueOf("BUFFER_UNDERFLOW"),
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                SSLEngineResult.Status.BUFFER_UNDERFLOW);
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(SSLEngineResult.Status.valueOf("CLOSED"),
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                SSLEngineResult.Status.CLOSED);
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(SSLEngineResult.Status.valueOf("OK"),
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                SSLEngineResult.Status.OK);
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < invalid.length; i++) {
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                SSLEngineResult.Status.valueOf(invalid[i]);
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("IllegalArgumentException must be thrown for name: " + invalid[i]);
1478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            } catch (IllegalArgumentException e) {
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        }
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>SSLEngineResult.HandshakeStatus.values()</code> method
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testHandshakeStatus01() {
1578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        SSLEngineResult.HandshakeStatus[] enHS = SSLEngineResult.HandshakeStatus
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .values();
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Incorrect array of HandshakeStatus objects",
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                enHS.length > 0);
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("FINISHED object does not define", findEl(enHS,
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                SSLEngineResult.HandshakeStatus.FINISHED));
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("NEED_UNWRAP object does not define", findEl(enHS,
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                SSLEngineResult.HandshakeStatus.NEED_UNWRAP));
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("NEED_WRAP object does not define", findEl(enHS,
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                SSLEngineResult.HandshakeStatus.NEED_WRAP));
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("NEED_TASK object does not define", findEl(enHS,
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                SSLEngineResult.HandshakeStatus.NEED_TASK));
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("NOT_HANDSHAKING object does not define", findEl(enHS,
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                SSLEngineResult.HandshakeStatus.NOT_HANDSHAKING));
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Test for <code>SSLEngineResult.HandshakeStatus.valueOf(String name)</code> method
1758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     * Assertion:
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * throws IllegalArgumentException when there is no constan with specified
1778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     * name
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testHandshakeStatus02() {
1818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        String[] invalid = { "", "FINISHED1", "NEED_task", "NEED_UN",
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "NEED_WRAP_WRAP", "not_HANDSHAKING", "Bad string for verification valueOf method"
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(SSLEngineResult.HandshakeStatus.valueOf("NOT_HANDSHAKING"),
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                SSLEngineResult.HandshakeStatus.NOT_HANDSHAKING);
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(SSLEngineResult.HandshakeStatus.valueOf("NEED_WRAP"),
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                SSLEngineResult.HandshakeStatus.NEED_WRAP);
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(SSLEngineResult.HandshakeStatus.valueOf("NEED_UNWRAP"),
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                SSLEngineResult.HandshakeStatus.NEED_UNWRAP);
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(SSLEngineResult.HandshakeStatus.valueOf("FINISHED"),
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                SSLEngineResult.HandshakeStatus.FINISHED);
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(SSLEngineResult.HandshakeStatus.valueOf("NEED_TASK"),
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                SSLEngineResult.HandshakeStatus.NEED_TASK);
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < invalid.length; i++) {
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                SSLEngineResult.HandshakeStatus.valueOf(invalid[i]);
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("IllegalArgumentException must be thrown for name: " + invalid[i]);
1988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            } catch (IllegalArgumentException e) {
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath    }
2028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private boolean findEl(Object[] arr, Object el) {
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean ok = false;
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < arr.length; i++) {
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (arr[i].equals(el)) {
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                ok = true;
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                break;
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        return ok;
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
215