-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathExceptionHandlingTreeTest.java
More file actions
64 lines (57 loc) · 2.65 KB
/
ExceptionHandlingTreeTest.java
File metadata and controls
64 lines (57 loc) · 2.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
* SonarSource Scala
* Copyright (C) 2018-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the Sonar Source-Available License Version 1, as published by SonarSource SA.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the Sonar Source-Available License for more details.
*
* You should have received a copy of the Sonar Source-Available License
* along with this program; if not, see https://sonarsource.com/license/ssal/
*/
package org.sonarsource.scala.converter;
import org.junit.jupiter.api.Test;
import org.sonarsource.slang.api.ExceptionHandlingTree;
import org.sonarsource.slang.api.IdentifierTree;
import static org.assertj.core.api.Assertions.assertThat;
import static org.sonarsource.slang.testing.TreeAssert.assertTree;
class ExceptionHandlingTreeTest extends AbstractScalaConverterTest {
@Test
void trivial_try() {
ExceptionHandlingTree tryCatch = (ExceptionHandlingTree) scalaStatement("try { a }");
assertThat(tryCatch.tryKeyword().text()).isEqualTo("try");
assertTree(tryCatch.tryBlock()).isBlock(IdentifierTree.class);
assertThat(tryCatch.catchBlocks()).isEmpty();
assertThat(tryCatch.finallyBlock()).isNull();
}
@Test
void try_catch() {
ExceptionHandlingTree tryCatch = (ExceptionHandlingTree) scalaStatement("try { a } catch { b }");
assertThat(tryCatch.tryKeyword().text()).isEqualTo("try");
assertTree(tryCatch.tryBlock()).isBlock(IdentifierTree.class);
assertThat(tryCatch.catchBlocks()).hasSize(1);
assertThat(tryCatch.finallyBlock()).isNull();
assertThat(identifierDescendants(tryCatch.catchBlocks().get(0))).containsExactly("b");
}
@Test
void try_catch_case() {
ExceptionHandlingTree tryCatch = (ExceptionHandlingTree) scalaStatement("try { a } catch { case e => b }");
assertTree(tryCatch).isEquivalentTo(scalaStatement("try { a } catch { case e => b }"));
assertThat(tryCatch.catchBlocks()).hasSize(1);
assertThat(tryCatch.finallyBlock()).isNull();
assertThat(identifierDescendants(tryCatch.catchBlocks().get(0))).containsExactly("e", "b");
}
@Test
void try_finally() {
ExceptionHandlingTree tryCatch = (ExceptionHandlingTree) scalaStatement("try { a } finally { b }");
assertThat(tryCatch.tryKeyword().text()).isEqualTo("try");
assertTree(tryCatch.tryBlock()).isBlock(IdentifierTree.class);
assertThat(tryCatch.catchBlocks()).isEmpty();
assertTree(tryCatch.finallyBlock()).isBlock(IdentifierTree.class);
}
}