test/jdk/java/net/httpclient/LineSubscribersAndSurrogatesTest.java
changeset 57880 ff08db52ad92
parent 49765 ee6f7a61f3a5
equal deleted inserted replaced
57879:095c2f21dd10 57880:ff08db52ad92
     1 /*
     1 /*
     2  * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
    79             return res;
    79             return res;
    80         }
    80         }
    81     }
    81     }
    82 
    82 
    83     @Test
    83     @Test
    84     void testIncomplete() throws Exception {
    84     public void testIncomplete() throws Exception {
    85         // Uses U+10400 which is encoded as the surrogate pair U+D801 U+DC00
    85         // Uses U+10400 which is encoded as the surrogate pair U+D801 U+DC00
    86         String text = "Bient\u00f4t\r\n nous plongerons\r\n dans\r" +
    86         String text = "Bient\u00f4t\r\n nous plongerons\r\n dans\r" +
    87                 " les\n\n fr\u00f4\ud801\udc00des\r\n t\u00e9n\u00e8bres\ud801\udc00";
    87                 " les\n\n fr\u00f4\ud801\udc00des\r\n t\u00e9n\u00e8bres\ud801\udc00";
    88         ObjectSubscriber subscriber = new ObjectSubscriber();
    88         ObjectSubscriber subscriber = new ObjectSubscriber();
    89         BodySubscriber<String> bodySubscriber = BodySubscribers.fromLineSubscriber(
    89         BodySubscriber<String> bodySubscriber = BodySubscribers.fromLineSubscriber(
   121         }
   121         }
   122     }
   122     }
   123 
   123 
   124 
   124 
   125     @Test
   125     @Test
   126     void testStringWithFinisherLF() throws Exception {
   126     public void testStringWithFinisherLF() throws Exception {
   127         // Uses U+10400 which is encoded as the surrogate pair U+D801 U+DC00
   127         // Uses U+10400 which is encoded as the surrogate pair U+D801 U+DC00
   128         String text = "Bient\u00f4t\r\n nous plongerons\r\n dans\r" +
   128         String text = "Bient\u00f4t\r\n nous plongerons\r\n dans\r" +
   129                 " les\n\n fr\u00f4\ud801\udc00des\r\n t\u00e9n\u00e8bres\r";
   129                 " les\n\n fr\u00f4\ud801\udc00des\r\n t\u00e9n\u00e8bres\r";
   130         ObjectSubscriber subscriber = new ObjectSubscriber();
   130         ObjectSubscriber subscriber = new ObjectSubscriber();
   131         BodySubscriber<String> bodySubscriber = BodySubscribers.fromLineSubscriber(
   131         BodySubscriber<String> bodySubscriber = BodySubscribers.fromLineSubscriber(
   153         assertEquals(subscriber.list, lines(text, "\n"));
   153         assertEquals(subscriber.list, lines(text, "\n"));
   154     }
   154     }
   155 
   155 
   156 
   156 
   157     @Test
   157     @Test
   158     void testStringWithFinisherCR() throws Exception {
   158     public void testStringWithFinisherCR() throws Exception {
   159         String text = "Bient\u00f4t\r\n nous plongerons\r\n dans\r" +
   159         String text = "Bient\u00f4t\r\n nous plongerons\r\n dans\r" +
   160                 " les fr\u00f4\ud801\udc00des\r\n t\u00e9n\u00e8bres\r\r";
   160                 " les fr\u00f4\ud801\udc00des\r\n t\u00e9n\u00e8bres\r\r";
   161         ObjectSubscriber subscriber = new ObjectSubscriber();
   161         ObjectSubscriber subscriber = new ObjectSubscriber();
   162         BodySubscriber<String> bodySubscriber = BodySubscribers.fromLineSubscriber(
   162         BodySubscriber<String> bodySubscriber = BodySubscribers.fromLineSubscriber(
   163                 subscriber, Supplier::get, UTF_8, "\r");
   163                 subscriber, Supplier::get, UTF_8, "\r");
   181                 ""));
   181                 ""));
   182         assertEquals(subscriber.list, lines(text, "\r"));
   182         assertEquals(subscriber.list, lines(text, "\r"));
   183     }
   183     }
   184 
   184 
   185     @Test
   185     @Test
   186     void testStringWithFinisherCRLF() throws Exception {
   186     public void testStringWithFinisherCRLF() throws Exception {
   187         String text = "Bient\u00f4t\r\n nous plongerons\r\n dans\r" +
   187         String text = "Bient\u00f4t\r\n nous plongerons\r\n dans\r" +
   188                 " les fr\u00f4\ud801\udc00des\r\n t\u00e9n\u00e8bres";
   188                 " les fr\u00f4\ud801\udc00des\r\n t\u00e9n\u00e8bres";
   189         ObjectSubscriber subscriber = new ObjectSubscriber();
   189         ObjectSubscriber subscriber = new ObjectSubscriber();
   190         BodySubscriber<String> bodySubscriber = BodySubscribers.fromLineSubscriber(
   190         BodySubscriber<String> bodySubscriber = BodySubscribers.fromLineSubscriber(
   191                 subscriber, Supplier::get, UTF_8, "\r\n");
   191                 subscriber, Supplier::get, UTF_8, "\r\n");
   208         assertEquals(subscriber.list, lines(text, "\r\n"));
   208         assertEquals(subscriber.list, lines(text, "\r\n"));
   209     }
   209     }
   210 
   210 
   211 
   211 
   212     @Test
   212     @Test
   213     void testStringWithFinisherBR() throws Exception {
   213     public void testStringWithFinisherBR() throws Exception {
   214         String text = "Bient\u00f4t\r\n nous plongerons\r\n dans\r" +
   214         String text = "Bient\u00f4t\r\n nous plongerons\r\n dans\r" +
   215                 " les\r\r fr\u00f4\ud801\udc00des\r\n t\u00e9n\u00e8bres";
   215                 " les\r\r fr\u00f4\ud801\udc00des\r\n t\u00e9n\u00e8bres";
   216         ObjectSubscriber subscriber = new ObjectSubscriber();
   216         ObjectSubscriber subscriber = new ObjectSubscriber();
   217         BodySubscriber<String> bodySubscriber = BodySubscribers.fromLineSubscriber(
   217         BodySubscriber<String> bodySubscriber = BodySubscribers.fromLineSubscriber(
   218                 subscriber, Supplier::get, UTF_8, null);
   218                 subscriber, Supplier::get, UTF_8, null);
   238         assertEquals(resp, expected.stream().collect(Collectors.joining("")));
   238         assertEquals(resp, expected.stream().collect(Collectors.joining("")));
   239         assertEquals(subscriber.list, lines(text, null));
   239         assertEquals(subscriber.list, lines(text, null));
   240     }
   240     }
   241 
   241 
   242     @Test
   242     @Test
   243     void testStringWithFinisherBR_UTF_16() throws Exception {
   243     public void testStringWithFinisherBR_UTF_16() throws Exception {
   244         String text = "Bient\u00f4t\r\n nous plongerons\r\n dans\r" +
   244         String text = "Bient\u00f4t\r\n nous plongerons\r\n dans\r" +
   245                 " les\r\r fr\u00f4\ud801\udc00des\r\n t\u00e9n\u00e8bres\r\r";
   245                 " les\r\r fr\u00f4\ud801\udc00des\r\n t\u00e9n\u00e8bres\r\r";
   246         ObjectSubscriber subscriber = new ObjectSubscriber();
   246         ObjectSubscriber subscriber = new ObjectSubscriber();
   247         BodySubscriber<String> bodySubscriber = BodySubscribers.fromLineSubscriber(
   247         BodySubscriber<String> bodySubscriber = BodySubscribers.fromLineSubscriber(
   248                 subscriber, Supplier::get, UTF_16, null);
   248                 subscriber, Supplier::get, UTF_16, null);