java-ebpf

Форк
0
58 строк · 2.3 Кб
1
package me.bechberger.cast;
2

3
import org.junit.jupiter.params.ParameterizedTest;
4
import org.junit.jupiter.params.provider.Arguments;
5
import org.junit.jupiter.params.provider.MethodSource;
6

7
import java.util.List;
8
import java.util.stream.Stream;
9

10
import static me.bechberger.cast.CAST.Declarator.*;
11
import static me.bechberger.cast.CAST.Expression.constant;
12
import static me.bechberger.cast.CAST.Expression.variable;
13
import static me.bechberger.cast.CAST.OperatorExpression.binary;
14
import static me.bechberger.cast.CAST.PrimaryExpression.CAnnotation.sec;
15
import static me.bechberger.cast.CAST.Statement.*;
16
import static org.junit.jupiter.api.Assertions.assertEquals;
17

18
/**
19
 * Basic AST tests
20
 */
21
public class ASTTest {
22

23
    static Stream<Arguments> exprAstAndExpectedCode() {
24
        return Stream.of(Arguments.of(expression(binary("+", constant(1), constant(2))), "1 + 2;"));
25
    }
26

27
    @ParameterizedTest
28
    @MethodSource("exprAstAndExpectedCode")
29
    void testExpr(CAST.Statement statement, String expectedCode) {
30
        assertEquals(expectedCode, statement.toPrettyString());
31
    }
32

33
    static Stream<Arguments> declAstAndExpectedCode() {
34
        return Stream.of(Arguments.of(variableDefinition(struct(variable("myStruct"),
35
                List.of(structMember(CAST.Declarator.identifier("int"), variable("b")))), variable("myVar", sec("a")))
36
                , "struct myStruct {\n  int b;\n} myVar SEC(\"a\");"),
37
                Arguments.of(variableDefinition(struct(variable("myStruct"),
38
                                List.of(structMember(CAST.Declarator.identifier("int"), variable("b"), constant(1)))),
39
                                variable(
40
                                        "myVar", sec("a")))
41
                        , "struct myStruct {\n  int (b, 1);\n} myVar SEC(\"a\");"),
42
                Arguments.of(
43
                        struct(variable("x"),
44
                            List.of(structMember(array(identifier("a"),
45
                                    constant(10)),
46
                                    variable("x")))).toStatement(),
47
                """
48
                struct x {
49
                  a x[10];
50
                };"""));
51
    }
52

53
    @ParameterizedTest
54
    @MethodSource("declAstAndExpectedCode")
55
    void testDecl(Statement ast, String expectedCode) {
56
        assertEquals(expectedCode, ast.toPrettyString());
57
    }
58
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.