1 /* 2 * Copyright (C) 2021 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package libcore.libcore.internal; 18 19 import static org.junit.Assert.assertEquals; 20 import static org.junit.Assert.assertNotEquals; 21 import static org.junit.Assert.assertFalse; 22 import static org.junit.Assert.assertTrue; 23 24 import java.util.Arrays; 25 import libcore.internal.Java17LanguageFeatures; 26 27 import org.junit.Test; 28 import org.junit.Ignore; 29 import org.junit.runner.RunWith; 30 import org.junit.runners.JUnit4; 31 32 @RunWith(JUnit4.class) 33 public class Java17LanguageFeaturesTest { 34 35 @Test testMultilineString()36 public void testMultilineString() { 37 assertEquals("This is a\nmultiline\nstring.", 38 Java17LanguageFeatures.getTextBlock()); 39 } 40 41 @Test testPatternMatchingInstanceof()42 public void testPatternMatchingInstanceof() { 43 Java17LanguageFeatures.Shape s = new Java17LanguageFeatures.Triangle(6, 10); 44 assertEquals(30, Java17LanguageFeatures.calculateApproximateArea(s)); 45 s = new Java17LanguageFeatures.Rectangle(4, 5); 46 assertEquals(20, Java17LanguageFeatures.calculateApproximateArea(s)); 47 s = new Java17LanguageFeatures.Circle(5); 48 assertEquals(75, Java17LanguageFeatures.calculateApproximateArea(s)); 49 } 50 51 @Test testRecord()52 public void testRecord() { 53 Java17LanguageFeatures.Point p1 = Java17LanguageFeatures.buildPoint(1, 2); 54 Java17LanguageFeatures.Point p2 = Java17LanguageFeatures.buildPoint(1, 2); 55 Java17LanguageFeatures.Point p3 = Java17LanguageFeatures.buildPoint(1, 3); 56 57 assertEquals(1, p1.x()); 58 assertEquals(2, p1.y()); 59 assertEquals(1, p2.x()); 60 assertEquals(2, p2.y()); 61 assertEquals(1, p3.x()); 62 assertEquals(3, p3.y()); 63 64 assertEquals("Point[x=1, y=2]", p1.toString()); 65 assertEquals("Point[x=1, y=2]", p2.toString()); 66 assertEquals("Point[x=1, y=3]", p3.toString()); 67 68 assertTrue(p1.equals(p2)); 69 assertEquals(p1.hashCode(), p2.hashCode()); 70 71 assertFalse(p1.equals(p3)); 72 assertNotEquals(p1.hashCode(), p3.hashCode()); 73 74 assertFalse(p2.equals(p3)); 75 assertNotEquals(p2.hashCode(), p3.hashCode()); 76 } 77 78 @Test testSealedClass()79 public void testSealedClass() { 80 Java17LanguageFeatures.BaseSealedClass obj = new Java17LanguageFeatures.BaseSealedClass(); 81 assertEquals(0, Java17LanguageFeatures.getSealedClassId(obj)); 82 obj = new Java17LanguageFeatures.FinalDerivedClass(); 83 assertEquals(1, Java17LanguageFeatures.getSealedClassId(obj)); 84 obj = new Java17LanguageFeatures.NonSealedDerivedClass(); 85 assertEquals(2, Java17LanguageFeatures.getSealedClassId(obj)); 86 obj = new DerivedClass(); 87 assertEquals(3, Java17LanguageFeatures.getSealedClassId(obj)); 88 } 89 90 private static class DerivedClass extends Java17LanguageFeatures.NonSealedDerivedClass { 91 @Override getId()92 public int getId() { 93 return 3; 94 } 95 } 96 } 97