test/jdk/java/net/httpclient/TestKitTest.java
author chegar
Thu, 29 Mar 2018 17:52:06 +0100
branchhttp-client-branch
changeset 56369 24a8fafec3ff
parent 48083 b1c1b4ef4be2
permissions -rw-r--r--
http-client-branch: review comment - update copyright year ranges in tests
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
37720
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
     1
/*
56369
24a8fafec3ff http-client-branch: review comment - update copyright year ranges in tests
chegar
parents: 48083
diff changeset
     2
 * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
37720
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
     4
 *
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
     7
 * published by the Free Software Foundation.
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
     8
 *
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    13
 * accompanied this code).
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    14
 *
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    18
 *
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    21
 * questions.
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    22
 */
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    23
42460
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
    24
import org.testng.annotations.Test;
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
    25
37720
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    26
import java.io.IOException;
42460
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
    27
import java.util.ArrayList;
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
    28
import java.util.Arrays;
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
    29
import java.util.Collections;
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
    30
import java.util.HashMap;
37720
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    31
import java.util.IllegalFormatException;
42460
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
    32
import java.util.LinkedList;
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
    33
import java.util.Map;
37720
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    34
import java.util.Set;
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    35
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    36
import static org.testng.Assert.assertEquals;
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    37
import static org.testng.Assert.assertNotNull;
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    38
import static org.testng.Assert.assertNull;
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    39
import static org.testng.Assert.assertTrue;
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    40
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    41
/*
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    42
 * @test
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    43
 * @compile TestKit.java
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    44
 * @run testng TestKitTest
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    45
 */
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    46
public final class TestKitTest {
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    47
42460
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
    48
    @Test
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
    49
    public void testAssertNotThrows() {
37720
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    50
        Integer integer = TestKit.assertNotThrows(
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    51
                () -> TestKit.assertNotThrows(() -> 1)
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    52
        );
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    53
        assertEquals(integer, Integer.valueOf(1));
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    54
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    55
        RuntimeException re = TestKit.assertThrows(
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    56
                RuntimeException.class,
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    57
                () -> TestKit.assertNotThrows(() -> { throw new IOException(); })
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    58
        );
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    59
        assertEquals(re.getMessage(),
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    60
                "Expected to run normally, but threw "
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    61
                        + "java.io.IOException");
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    62
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    63
        TestKit.assertNotThrows(
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    64
                () -> TestKit.assertNotThrows(() -> { })
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    65
        );
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    66
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    67
        re = TestKit.assertThrows(
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    68
                RuntimeException.class,
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    69
                () ->  TestKit.assertNotThrows((TestKit.ThrowingProcedure) () -> { throw new IOException(); })
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    70
        );
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    71
        assertEquals(re.getMessage(),
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    72
                "Expected to run normally, but threw "
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    73
                        + "java.io.IOException");
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    74
    }
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    75
42460
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
    76
    @Test
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
    77
    public void testAssertThrows() {
37720
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    78
        NullPointerException npe = TestKit.assertThrows(
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    79
                NullPointerException.class,
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    80
                () -> TestKit.assertThrows(null, null)
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    81
        );
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    82
        assertNotNull(npe);
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    83
        assertTrue(Set.of("clazz", "code").contains(npe.getMessage()), npe.getMessage());
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    84
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    85
        npe = TestKit.assertThrows(
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    86
                NullPointerException.class,
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    87
                () -> TestKit.assertThrows(IOException.class, null)
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    88
        );
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    89
        assertNotNull(npe);
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    90
        assertEquals(npe.getMessage(), "code");
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    91
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    92
        npe = TestKit.assertThrows(
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    93
                NullPointerException.class,
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    94
                () -> TestKit.assertThrows(null, () -> { })
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    95
        );
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    96
        assertEquals(npe.getMessage(), "clazz");
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    97
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    98
        npe = TestKit.assertThrows(
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
    99
                NullPointerException.class,
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   100
                () -> { throw new NullPointerException(); }
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   101
        );
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   102
        assertNotNull(npe);
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   103
        assertNull(npe.getMessage());
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   104
        assertEquals(npe.getClass(), NullPointerException.class);
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   105
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   106
        RuntimeException re = TestKit.assertThrows(
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   107
                RuntimeException.class,
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   108
                () -> TestKit.assertThrows(NullPointerException.class, () -> { })
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   109
        );
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   110
        assertEquals(re.getClass(), RuntimeException.class);
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   111
        assertEquals(re.getMessage(),
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   112
                "Expected to catch an exception of type "
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   113
                        + "java.lang.NullPointerException, but caught nothing");
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   114
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   115
        re = TestKit.assertThrows(
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   116
                RuntimeException.class,
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   117
                () -> { throw new NullPointerException(); }
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   118
        );
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   119
        assertNotNull(re);
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   120
        assertNull(re.getMessage());
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   121
        assertEquals(re.getClass(), NullPointerException.class);
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   122
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   123
        re = TestKit.assertThrows(
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   124
                RuntimeException.class,
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   125
                () -> TestKit.assertThrows(
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   126
                        IllegalFormatException.class,
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   127
                        () -> { throw new IndexOutOfBoundsException(); }
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   128
                ));
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   129
        assertNotNull(re);
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   130
        assertEquals(re.getClass(), RuntimeException.class);
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   131
        assertEquals(re.getMessage(),
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   132
                "Expected to catch an exception of type java.util.IllegalFormatException"
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   133
                        + ", but caught java.lang.IndexOutOfBoundsException");
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   134
    }
42460
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
   135
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
   136
    @Test
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
   137
    public void testAssertUnmodifiable() {
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
   138
        TestKit.assertUnmodifiableList(
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
   139
                Collections.unmodifiableList(
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
   140
                        new ArrayList<>(Arrays.asList(1, 2, 3))));
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
   141
        TestKit.assertThrows(RuntimeException.class,
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
   142
                () -> TestKit.assertUnmodifiableList(new ArrayList<>()));
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
   143
        TestKit.assertThrows(RuntimeException.class,
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
   144
                () -> TestKit.assertUnmodifiableList(new LinkedList<>()));
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
   145
        TestKit.assertThrows(RuntimeException.class,
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
   146
                () -> TestKit.assertUnmodifiableList(
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
   147
                        new ArrayList<>(Arrays.asList(1, 2, 3))));
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
   148
        TestKit.assertUnmodifiableMap(Collections.unmodifiableMap(Map.of()));
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
   149
        TestKit.assertThrows(RuntimeException.class,
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
   150
                () -> TestKit.assertUnmodifiableMap(new HashMap<>()));
7133f144981a 8170648: Move java.net.http package out of Java SE to incubator namespace
michaelm
parents: 37720
diff changeset
   151
    }
37720
45cd7cc65382 8087124: HTTP/2 implementation
michaelm
parents:
diff changeset
   152
}