Skip to content

Commit f2d200e

Browse files
Sandeep PinnintiSandeep Pinninti
authored andcommitted
trigger operation does not take parameter (#58)
* Trigger operation does not take parameter test case * Update in test case * Update in test case * rename file * PR Comments * added nullptr case --------- Co-authored-by: Sandeep Pinninti <sandeep.pinninti@prod.hclpnp.com>
1 parent 134b8a3 commit f2d200e

5 files changed

Lines changed: 176 additions & 0 deletions

File tree

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#include "CustomData.h"
2+
3+
4+
// Parameterized Constructor
5+
CustomData::CustomData(const std::string& name, int age) : name(name), age(age) {}
6+
7+
// Getters
8+
std::string CustomData::getName() const {
9+
return name;
10+
}
11+
12+
int CustomData::getAge() const {
13+
return age;
14+
}
15+
16+
// Setters
17+
void CustomData::setName(const std::string& name) {
18+
this->name = name;
19+
}
20+
21+
void CustomData::setAge(int age) {
22+
this->age = age;
23+
}
24+
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#ifndef CUSTOMDATA_H
2+
#define CUSTOMDATA_H
3+
4+
#include <iostream>
5+
6+
class CustomData {
7+
private:
8+
std::string name;
9+
int age;
10+
11+
public:
12+
// Constructor
13+
CustomData(const std::string& name, int age);
14+
15+
// Getters
16+
std::string getName() const;
17+
int getAge() const;
18+
19+
// Setters
20+
void setName(const std::string& name);
21+
void setAge(int age);
22+
static CustomData cdata;
23+
24+
};
25+
26+
#endif // CUSTOMDATA_H
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
2+
class DataObject {
3+
4+
[[rt::header_preface]]
5+
`
6+
#include "testlib.art.h"
7+
#include <CustomData.h>
8+
#include <iostream>
9+
`
10+
/* Trigger Operations */
11+
trigger initialize();
12+
trigger initialize(`int` data);
13+
trigger initialize(`float` data);
14+
trigger initialize(`char` data);
15+
trigger initialize(`int` data, `char` data2);
16+
trigger initialize(`CustomData` data);
17+
trigger initialize(`CustomData*` data);
18+
19+
/* State Machine */
20+
statemachine {
21+
state Initial, Initialized;
22+
initial -> Initial;
23+
onInt: Initial -> Initialized on initialize(`int`)
24+
`
25+
ASSERT(data == 12, "Unexpected value of data");
26+
`;
27+
onFloat: Initial -> Initialized on initialize(`float`)
28+
`
29+
ASSERT(data == 1.3f, "Unexpected value of data");
30+
`;
31+
onChar: Initial -> Initialized on initialize(`char`)
32+
`
33+
ASSERT(data == 'a', "Unexpected value of data");
34+
`;
35+
onChar: Initial -> Initialized on initialize(`CustomData`)
36+
`
37+
ASSERT(data.getName() == "CRT", "Unexpected value of data");
38+
ASSERT(data.getAge() == 12, "Unexpected value of data");
39+
`;
40+
onInt_Char: Initial -> Initialized on initialize(`int`,`char`)
41+
`
42+
ASSERT(data == 1, "Unexpected value of data");
43+
ASSERT(data2 == 'a', "Unexpected value of data");
44+
`;
45+
onNullPointer: Initial -> Initialized on initialize(`CustomData*` )
46+
`
47+
ASSERT(data == nullptr, "Unexpected value of data");
48+
`;
49+
};
50+
};
51+
52+
capsule Top{
53+
54+
55+
[[rt::header_preface]]
56+
`
57+
#include "testlib.art.h"
58+
#include "DataObject.h"
59+
#include <CustomData.h>
60+
61+
`
62+
behavior port t : Timing;
63+
statemachine {
64+
state State1, State2, State3, State4, State5, State6;
65+
initial -> State1
66+
`
67+
int i = 12;
68+
DataObject _dataObject;
69+
_dataObject.initialize(i);
70+
t.informIn(RTTimespec(0,50000));
71+
72+
`;
73+
onState1: State1 -> State2 on t.timeout
74+
`
75+
float f = 1.3f;
76+
DataObject _dataObject;
77+
_dataObject.initialize(f);
78+
t.informIn(RTTimespec(0,50000));
79+
`;
80+
onState2: State2 -> State3 on t.timeout
81+
`
82+
char c = 'a';
83+
DataObject _dataObject;
84+
_dataObject.initialize(c);
85+
t.informIn(RTTimespec(0,50000));
86+
`;
87+
88+
onState3: State3 -> State4 on t.timeout
89+
`
90+
float f = 1.3f;
91+
DataObject _dataObject;
92+
_dataObject.initialize(f, 'a');
93+
t.informIn(RTTimespec(0,50000));
94+
95+
`;
96+
onState4: State4 -> State5 on t.timeout
97+
`
98+
DataObject _dataObject;
99+
CustomData data("CRT", 12);
100+
_dataObject.initialize(data);
101+
t.informIn(RTTimespec(0,50000));
102+
`;
103+
onState5: State5 -> State6 on t.timeout
104+
`
105+
DataObject _dataObject;
106+
_dataObject.initialize(nullptr);
107+
PASS();
108+
`;
109+
};
110+
111+
};
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
group: cpp_code_generation
3+
---
4+
Trigger with Multiple Parameters: Test cases should validate triggers with multiple parameters, including scenarios with primitive and user-defined data types.
5+
6+
Multiple Triggers with Different Parameters: Ensure that transitions can be triggered by operations with the same name but different parameter types, and by multiple triggers with parameters that match in names and types.
7+
8+
9+
10+
11+
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
let tc = TCF.define(TCF.CPP_TRANSFORM);
2+
tc.topCapsule = 'Top';
3+
tc.prerequisites = ["../../TestUtils/testlib.tcjs"];
4+
tc.targetFolder = 'trigger_operation_with_parameters_target';

0 commit comments

Comments
 (0)