Skip to content

Commit d67b1d0

Browse files
committed
test: add smart-enum tests
1 parent 9f1f7e3 commit d67b1d0

File tree

2 files changed

+143
-17
lines changed

2 files changed

+143
-17
lines changed

src/lib/generateFromRosMsg.spec.ts

Lines changed: 139 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -92,27 +92,27 @@ export enum ExampleMessageConst {
9292
t.is(result, expected);
9393
});
9494

95-
test.skip('generateFromRosMsg with enum which are prefixed', (t) => {
95+
test('generateFromRosMsg with enum which are prefixed', (t) => {
9696
const result = generateFromRosMsg(
9797
`MSG: example/Message
9898
99-
uint8 blinker_state
100-
uint8 headlight_state
101-
uint8 wiper_state
102-
uint8 current_gear
99+
uint8 blinker
100+
uint8 headlight
101+
uint8 wipers
102+
uint8 gear
103103
uint8 vehicle_mode
104104
bool hand_brake_active
105105
bool horn_active
106106
bool autonomous_mode_active
107107
108-
uint8 BLINKERS_OFF = 0
109-
uint8 BLINKERS_LEFT = 1
110-
uint8 BLINKERS_RIGHT = 2
111-
uint8 BLINKERS_HAZARD = 3
108+
uint8 BLINKER_STATE_OFF = 0
109+
uint8 BLINKER_STATE_LEFT = 1
110+
uint8 BLINKER_STATE_RIGHT = 2
111+
uint8 BLINKER_STATE_HAZARD = 3
112112
113-
uint8 HEADLIGHTS_OFF = 0
114-
uint8 HEADLIGHTS_LOW = 1
115-
uint8 HEADLIGHTS_HIGH = 2
113+
uint8 HEADLIGHT_OFF = 0
114+
uint8 HEADLIGHT_LOW = 1
115+
uint8 HEADLIGHT_HIGH = 2
116116
117117
uint8 WIPERS_OFF = 0
118118
uint8 WIPERS_LOW = 1
@@ -132,7 +132,133 @@ test.skip('generateFromRosMsg with enum which are prefixed', (t) => {
132132
uint8 VEHICLE_MODE_EMERGENCY_MODE = 4`
133133
);
134134

135-
const expected = ` `;
135+
const expected = `export interface ExampleMessage {
136+
blinker: number;
137+
headlight: number;
138+
wipers: number;
139+
gear: number;
140+
vehicle_mode: number;
141+
hand_brake_active: boolean;
142+
horn_active: boolean;
143+
autonomous_mode_active: boolean;
144+
}
145+
146+
export enum ExampleMessageConst {
147+
BLINKER_STATE_OFF = 0,
148+
BLINKER_STATE_LEFT = 1,
149+
BLINKER_STATE_RIGHT = 2,
150+
BLINKER_STATE_HAZARD = 3,
151+
HEADLIGHT_OFF = 0,
152+
HEADLIGHT_LOW = 1,
153+
HEADLIGHT_HIGH = 2,
154+
WIPERS_OFF = 0,
155+
WIPERS_LOW = 1,
156+
WIPERS_MED = 2,
157+
WIPERS_HIGH = 3,
158+
GEAR_NEUTRAL = 0,
159+
GEAR_DRIVE = 1,
160+
GEAR_REVERSE = 2,
161+
GEAR_PARKING = 3,
162+
GEAR_LOW = 4,
163+
VEHICLE_MODE_COMPLETE_MANUAL = 0,
164+
VEHICLE_MODE_COMPLETE_AUTO_DRIVE = 1,
165+
VEHICLE_MODE_AUTO_STEER_ONLY = 2,
166+
VEHICLE_MODE_AUTO_SPEED_ONLY = 3,
167+
VEHICLE_MODE_EMERGENCY_MODE = 4,
168+
}`;
169+
t.is(result, expected);
170+
});
171+
172+
test('generateFromRosMsg with enum which are prefixed with smartEnums mode', (t) => {
173+
const result = generateFromRosMsg(
174+
`MSG: example/Message
175+
176+
uint8 blinker
177+
uint8 headlight
178+
uint8 wipers
179+
uint8 gear
180+
uint8 vehicle_mode
181+
bool hand_brake_active
182+
bool horn_active
183+
bool autonomous_mode_active
184+
185+
uint8 BLINKER_STATE_OFF = 0
186+
uint8 BLINKER_STATE_LEFT = 1
187+
uint8 BLINKER_STATE_RIGHT = 2
188+
uint8 BLINKER_STATE_HAZARD = 3
189+
190+
uint8 HEADLIGHT_OFF = 0
191+
uint8 HEADLIGHT_LOW = 1
192+
uint8 HEADLIGHT_HIGH = 2
193+
194+
uint8 WIPERS_OFF = 0
195+
uint8 WIPERS_LOW = 1
196+
uint8 WIPERS_MED = 2
197+
uint8 WIPERS_HIGH = 3
198+
199+
uint8 GEAR_NEUTRAL = 0
200+
uint8 GEAR_DRIVE = 1
201+
uint8 GEAR_REVERSE = 2
202+
uint8 GEAR_PARKING = 3
203+
uint8 GEAR_LOW = 4
204+
205+
uint8 VEHICLE_MODE_COMPLETE_MANUAL = 0
206+
uint8 VEHICLE_MODE_COMPLETE_AUTO_DRIVE = 1
207+
uint8 VEHICLE_MODE_AUTO_STEER_ONLY = 2
208+
uint8 VEHICLE_MODE_AUTO_SPEED_ONLY = 3
209+
uint8 VEHICLE_MODE_EMERGENCY_MODE = 4`,
210+
'',
211+
2,
212+
false,
213+
true
214+
);
215+
216+
const expected = `export interface ExampleMessage {
217+
blinker: ExampleMessageBlinker;
218+
headlight: ExampleMessageHeadlight;
219+
wipers: ExampleMessageWipers;
220+
gear: ExampleMessageGear;
221+
vehicle_mode: ExampleMessageVehicleMode;
222+
hand_brake_active: boolean;
223+
horn_active: boolean;
224+
autonomous_mode_active: boolean;
225+
}
226+
227+
export enum ExampleMessageBlinker {
228+
STATE_OFF = 0,
229+
STATE_LEFT = 1,
230+
STATE_RIGHT = 2,
231+
STATE_HAZARD = 3,
232+
}
233+
234+
export enum ExampleMessageHeadlight {
235+
OFF = 0,
236+
LOW = 1,
237+
HIGH = 2,
238+
}
239+
240+
export enum ExampleMessageWipers {
241+
OFF = 0,
242+
LOW = 1,
243+
MED = 2,
244+
HIGH = 3,
245+
}
246+
247+
export enum ExampleMessageGear {
248+
NEUTRAL = 0,
249+
DRIVE = 1,
250+
REVERSE = 2,
251+
PARKING = 3,
252+
LOW = 4,
253+
}
254+
255+
export enum ExampleMessageVehicleMode {
256+
COMPLETE_MANUAL = 0,
257+
COMPLETE_AUTO_DRIVE = 1,
258+
AUTO_STEER_ONLY = 2,
259+
AUTO_SPEED_ONLY = 3,
260+
EMERGENCY_MODE = 4,
261+
}`;
136262
t.is(result, expected);
137263
});
138264

src/lib/generateFromRosMsg.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ export const generateFromRosMsg = (
136136
typePrefix,
137137
!useNamespaces
138138
);
139-
const pkgName = pascalCase(definition.name!.split('/')[0]);
139+
const pkgName = pascalCase(definition.name?.split('/')[0] || '');
140140

141141
// Find the constant and variable definitions
142142
// eslint-disable-next-line prefer-const
@@ -286,13 +286,13 @@ ${tsRemainingEnum}
286286
}, new Map<string, string[]>());
287287

288288
return Array.from(interfacesByPackage.entries())
289-
.map(([pkgName, ifaces]) => {
289+
.map(([pkgName, interfaces]) => {
290290
if (useNamespaces) {
291291
return `export namespace ${pascalCase(pkgName)} {
292-
${ifaces.map((iface) => indent(iface, 2)).join('\n\n')}
292+
${interfaces.map((iface) => indent(iface, 2)).join('\n\n')}
293293
}`;
294294
} else {
295-
return ifaces.join('\n\n');
295+
return interfaces.join('\n\n');
296296
}
297297
})
298298
.join('\n\n');

0 commit comments

Comments
 (0)