Skip to content

Commit 47116ce

Browse files
committed
Address comments
1 parent fc82c84 commit 47116ce

2 files changed

Lines changed: 37 additions & 19 deletions

File tree

lib/node.js

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,30 @@ class Node extends rclnodejs.ShadowNode {
9797
);
9898
}
9999

100+
static _normalizeOptions(options) {
101+
if (options instanceof NodeOptions) {
102+
return options;
103+
}
104+
const defaults = NodeOptions.defaultOptions;
105+
return {
106+
startParameterServices:
107+
options.startParameterServices ?? defaults.startParameterServices,
108+
parameterOverrides:
109+
options.parameterOverrides ?? defaults.parameterOverrides,
110+
automaticallyDeclareParametersFromOverrides:
111+
options.automaticallyDeclareParametersFromOverrides ??
112+
defaults.automaticallyDeclareParametersFromOverrides,
113+
startTypeDescriptionService:
114+
options.startTypeDescriptionService ??
115+
defaults.startTypeDescriptionService,
116+
enableRosout: options.enableRosout ?? defaults.enableRosout,
117+
rosoutQos: options.rosoutQos ?? defaults.rosoutQos,
118+
};
119+
}
120+
100121
_init(name, namespace, options, context, args, useGlobalArguments) {
122+
options = Node._normalizeOptions(options);
123+
101124
this.handle = rclnodejs.createNode(
102125
name,
103126
namespace,
@@ -149,9 +172,8 @@ class Node extends rclnodejs.ShadowNode {
149172
this._parameterOverrides = this._getNativeParameterOverrides();
150173

151174
// override cli parameterOverrides with those specified in options
152-
const parameterOverrides = options.parameterOverrides || [];
153-
if (parameterOverrides.length > 0) {
154-
for (const parameter of parameterOverrides) {
175+
if (options.parameterOverrides.length > 0) {
176+
for (const parameter of options.parameterOverrides) {
155177
if (!(parameter instanceof Parameter)) {
156178
throw new TypeValidationError(
157179
'parameterOverride',

test/test-node.js

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -145,26 +145,22 @@ describe('rclnodejs node test suite', function () {
145145
});
146146

147147
it('Create a node with a plain object as options', function () {
148-
assert.doesNotThrow(() => {
149-
const node = new rclnodejs.Node('plain_opts_node', '/ns', undefined, {
150-
enableRosout: false,
151-
});
152-
assert.strictEqual(node.name(), 'plain_opts_node');
153-
node.destroy();
148+
const node = new rclnodejs.Node('plain_opts_node', '/ns', undefined, {
149+
enableRosout: false,
154150
});
151+
assert.strictEqual(node.name(), 'plain_opts_node');
152+
node.destroy();
155153
});
156154

157155
it('Create a node with options missing parameterOverrides', function () {
158-
assert.doesNotThrow(() => {
159-
const node = new rclnodejs.Node(
160-
'partial_opts_node',
161-
'/ns',
162-
undefined,
163-
{}
164-
);
165-
assert.strictEqual(node.name(), 'partial_opts_node');
166-
node.destroy();
167-
});
156+
const node = new rclnodejs.Node(
157+
'partial_opts_node',
158+
'/ns',
159+
undefined,
160+
{}
161+
);
162+
assert.strictEqual(node.name(), 'partial_opts_node');
163+
node.destroy();
168164
});
169165
});
170166
});

0 commit comments

Comments
 (0)