1 /* 2 * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 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 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /* 25 * @test 26 * @summary Unit tests for Raw String Literal language changes 27 * @compile --enable-preview -source 12 -encoding utf8 RawStringLiteralLang.java 28 * @run main/othervm --enable-preview RawStringLiteralLang 29 */ 30 31 public class RawStringLiteralLang { 32 public static void main(String... args) { 33 test1(); 34 test2(); 35 } 36 37 /* 38 * Test raw string functionality. 39 */ 40 static void test1() { 41 EQ(`abc`, "abc"); 42 EQ(`can't`, "can\'t"); 43 EQ(``can`t``, "can`t"); 44 EQ(`can\\'t`, "can\\\\'t"); 45 EQ(``can\\`t``, "can\\\\`t"); 46 EQ(`\t`, "\\t"); 47 EQ(`•`, "\u2022"); 48 49 LENGTH("abc``def", 8); 50 EQ("abc`\u0020`def", "abc` `def"); 51 } 52 53 /* 54 * Test multi-line string functionality. 55 */ 56 static void test2() { 57 EQ(`abc 58 def 59 ghi`, "abc\ndef\nghi"); 60 EQ(`abc 61 def 62 ghi 63 `, "abc\ndef\nghi\n"); 64 EQ(` 65 abc 66 def 67 ghi`, "\nabc\ndef\nghi"); 68 EQ(` 69 abc 70 def 71 ghi 72 `, "\nabc\ndef\nghi\n"); 73 } 74 75 /* 76 * Raise an exception if the string is not the expected length. 77 */ 78 static void LENGTH(String rawString, int length) { 79 if (rawString == null || rawString.length() != length) { 80 System.err.println("Failed LENGTH"); 81 System.err.println(rawString + " " + length); 82 throw new RuntimeException("Failed LENGTH"); 83 } 84 } 85 86 /* 87 * Raise an exception if the two input strings are not equal. 88 */ 89 static void EQ(String input, String expected) { 90 if (input == null || expected == null || !expected.equals(input)) { 91 System.err.println("Failed EQ"); 92 System.err.println(); 93 System.err.println("Input:"); 94 System.err.println(input.replaceAll(" ", ".")); 95 System.err.println(); 96 System.err.println("Expected:"); 97 System.err.println(expected.replaceAll(" ", ".")); 98 throw new RuntimeException(); 99 } 100 } 101 }