Skip to content

Commit 8dbb1e4

Browse files
committed
Add a few test cases for includes and ifdefs
1 parent de5532e commit 8dbb1e4

File tree

12 files changed

+119
-0
lines changed

12 files changed

+119
-0
lines changed

lib/Node/Stmt/ValueStmt/Expr/AbstractConditionalOperator/ConditionalOperator.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,8 @@ public function __construct(Expr $cond, Expr $ifTrue, Expr $ifFalse, array $attr
2323
public function getSubNodeNames(): array {
2424
return ['cond', 'ifTrue', 'ifFalse'];
2525
}
26+
27+
public function isConstant(): bool {
28+
return $this->cond->isConstant() ? $this->ifTrue->isConstant() && $this->ifFalse->isConstant : false;
29+
}
2630
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
--TEST--
2+
Test basic includes and typedefs
3+
--FILE--
4+
#include "includes_and_typedefs.h"
5+
6+
#ifdef TEST_FLAG
7+
typedef int A;
8+
#else
9+
typedef int B;
10+
#endif
11+
12+
#ifdef TEST_FLAG2
13+
typedef int C;
14+
#else
15+
typedef int D;
16+
#endif
17+
18+
--EXPECT--
19+
TranslationUnitDecl
20+
declarations: [
21+
Decl_NamedDecl_TypeDecl_TypedefNameDecl_TypedefDecl
22+
name: "TEST"
23+
type: Type_BuiltinType
24+
name: "int"
25+
Decl_NamedDecl_TypeDecl_TypedefNameDecl_TypedefDecl
26+
name: "A"
27+
type: Type_BuiltinType
28+
name: "int"
29+
Decl_NamedDecl_TypeDecl_TypedefNameDecl_TypedefDecl
30+
name: "D"
31+
type: Type_BuiltinType
32+
name: "int"
33+
]

test/generated/c/function_pointersTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class function_pointersTest extends TestCase {
2020
public function setUp(): void {
2121
$this->parser = new CParser;
2222
$this->parser->addSearchPath(__DIR__);
23+
$this->parser->addSearchPath(__DIR__ . '/../../include');
2324
$this->printer = new C;
2425
}
2526

test/generated/c/structTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class structTest extends TestCase {
2525
public function setUp(): void {
2626
$this->parser = new CParser;
2727
$this->parser->addSearchPath(__DIR__);
28+
$this->parser->addSearchPath(__DIR__ . '/../../include');
2829
$this->printer = new C;
2930
}
3031

test/generated/c/struct_pointersTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class struct_pointersTest extends TestCase {
2323
public function setUp(): void {
2424
$this->parser = new CParser;
2525
$this->parser->addSearchPath(__DIR__);
26+
$this->parser->addSearchPath(__DIR__ . '/../../include');
2627
$this->printer = new C;
2728
}
2829

test/generated/c/typedefTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class typedefTest extends TestCase {
1919
public function setUp(): void {
2020
$this->parser = new CParser;
2121
$this->parser->addSearchPath(__DIR__);
22+
$this->parser->addSearchPath(__DIR__ . '/../../include');
2223
$this->printer = new C;
2324
}
2425

test/generated/c/varsTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class varsTest extends TestCase {
2121
public function setUp(): void {
2222
$this->parser = new CParser;
2323
$this->parser->addSearchPath(__DIR__);
24+
$this->parser->addSearchPath(__DIR__ . '/../../include');
2425
$this->printer = new C;
2526
}
2627

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#include "includes_and_typedefs.h"
2+
3+
#ifdef TEST_FLAG
4+
typedef int A;
5+
#else
6+
typedef int B;
7+
#endif
8+
9+
#ifdef TEST_FLAG2
10+
typedef int C;
11+
#else
12+
typedef int D;
13+
#endif
14+
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php declare(strict_types=1);
2+
namespace PHPCParser\Test\dump;
3+
use PHPCParser\CParser;
4+
use PHPCParser\Printer;
5+
use PHPCParser\Printer\Dumper;
6+
use PHPCParser\Printer\C;
7+
use PHPUnit\Framework\TestCase;
8+
9+
/**
10+
* Note: this is a generated file, do not edit this!!!
11+
*/
12+
class includes_and_typedefsTest extends TestCase {
13+
14+
const EXPECTED = 'TranslationUnitDecl
15+
declarations: [
16+
Decl_NamedDecl_TypeDecl_TypedefNameDecl_TypedefDecl
17+
name: "TEST"
18+
type: Type_BuiltinType
19+
name: "int"
20+
Decl_NamedDecl_TypeDecl_TypedefNameDecl_TypedefDecl
21+
name: "A"
22+
type: Type_BuiltinType
23+
name: "int"
24+
Decl_NamedDecl_TypeDecl_TypedefNameDecl_TypedefDecl
25+
name: "D"
26+
type: Type_BuiltinType
27+
name: "int"
28+
]';
29+
30+
protected CParser $parser;
31+
protected Printer $printer;
32+
33+
public function setUp(): void {
34+
$this->parser = new CParser;
35+
$this->parser->addSearchPath(__DIR__);
36+
$this->parser->addSearchPath(__DIR__ . '/../../include');
37+
$this->printer = new Dumper;
38+
}
39+
40+
/**
41+
* @textdox Test basic includes and typedefs
42+
*/
43+
public function testCode() {
44+
$translationUnit = $this->parser->parse(__DIR__ . '/includes_and_typedefsTest.c');
45+
$actual = $this->printer->print($translationUnit);
46+
$this->assertEquals(self::EXPECTED, trim($actual));
47+
}
48+
}

test/generated/dump/structTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ class structTest extends TestCase {
5252
public function setUp(): void {
5353
$this->parser = new CParser;
5454
$this->parser->addSearchPath(__DIR__);
55+
$this->parser->addSearchPath(__DIR__ . '/../../include');
5556
$this->printer = new Dumper;
5657
}
5758

0 commit comments

Comments
 (0)