• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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