diff --git a/lib/js/src/rpc/enums/DoorStatusType.js b/lib/js/src/rpc/enums/DoorStatusType.js new file mode 100644 index 00000000..e2e8ecc2 --- /dev/null +++ b/lib/js/src/rpc/enums/DoorStatusType.js @@ -0,0 +1,116 @@ +/* eslint-disable camelcase */ +/* +* Copyright (c) 2020, SmartDeviceLink Consortium, Inc. +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* +* Redistributions of source code must retain the above copyright notice, this +* list of conditions and the following disclaimer. +* +* Redistributions in binary form must reproduce the above copyright notice, +* this list of conditions and the following +* disclaimer in the documentation and/or other materials provided with the +* distribution. +* +* Neither the name of the SmartDeviceLink Consortium Inc. nor the names of +* its contributors may be used to endorse or promote products derived +* from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +*/ + +import { Enum } from '../../util/Enum.js'; + +/** + * @typedef {Enum} DoorStatusType + * @property {Object} _MAP + */ +class DoorStatusType extends Enum { + /** + * Constructor for DoorStatusType. + * @class + * @since SmartDeviceLink 7.1.0 + */ + constructor () { + super(); + } + + /** + * Get the enum value for CLOSED. + * @returns {String} - The enum value. + */ + static get CLOSED () { + return DoorStatusType._MAP.CLOSED; + } + + /** + * Get the enum value for LOCKED. + * @returns {String} - The enum value. + */ + static get LOCKED () { + return DoorStatusType._MAP.LOCKED; + } + + /** + * Get the enum value for AJAR. + * @returns {String} - The enum value. + */ + static get AJAR () { + return DoorStatusType._MAP.AJAR; + } + + /** + * Get the enum value for REMOVED. + * @returns {String} - The enum value. + */ + static get REMOVED () { + return DoorStatusType._MAP.REMOVED; + } + + /** + * Get the value for the given enum key + * @param {*} key - A key to find in the map of the subclass + * @returns {*} - Returns a value if found, or null if not found + */ + static valueForKey (key) { + return DoorStatusType._valueForKey(key, DoorStatusType._MAP); + } + + /** + * Get the key for the given enum value + * @param {*} value - A primitive value to find the matching key for in the map of the subclass + * @returns {*} - Returns a key if found, or null if not found + */ + static keyForValue (value) { + return DoorStatusType._keyForValue(value, DoorStatusType._MAP); + } + + /** + * Retrieve all enumerated values for this class + * @returns {*} - Returns an array of values + */ + static values () { + return Object.values(DoorStatusType._MAP); + } +} + +DoorStatusType._MAP = Object.freeze({ + 'CLOSED': 'CLOSED', + 'LOCKED': 'LOCKED', + 'AJAR': 'AJAR', + 'REMOVED': 'REMOVED', +}); + +export { DoorStatusType }; \ No newline at end of file diff --git a/lib/js/src/rpc/structs/BodyInformation.js b/lib/js/src/rpc/structs/BodyInformation.js index 8ee49c6f..bb4f98e2 100644 --- a/lib/js/src/rpc/structs/BodyInformation.js +++ b/lib/js/src/rpc/structs/BodyInformation.js @@ -31,8 +31,11 @@ * POSSIBILITY OF SUCH DAMAGE. */ +import { DoorStatus } from './DoorStatus.js'; +import { GateStatus } from './GateStatus.js'; import { IgnitionStableStatus } from '../enums/IgnitionStableStatus.js'; import { IgnitionStatus } from '../enums/IgnitionStatus.js'; +import { RoofStatus } from './RoofStatus.js'; import { RpcStruct } from '../RpcStruct.js'; class BodyInformation extends RpcStruct { @@ -104,7 +107,9 @@ class BodyInformation extends RpcStruct { /** * Set the DriverDoorAjar - * @param {Boolean} ajar - References signal "DrStatDrv_B_Actl". - The desired DriverDoorAjar. + * @since SmartDeviceLink 2.0.0 + * @deprecated in SmartDeviceLink 7.1.0 + * @param {Boolean} ajar - References signal "DrStatDrv_B_Actl". Deprecated starting with RPC Spec 7.1.0. - The desired DriverDoorAjar. * @returns {BodyInformation} - The class instance for method chaining. */ setDriverDoorAjar (ajar) { @@ -122,7 +127,9 @@ class BodyInformation extends RpcStruct { /** * Set the PassengerDoorAjar - * @param {Boolean} ajar - References signal "DrStatPsngr_B_Actl". - The desired PassengerDoorAjar. + * @since SmartDeviceLink 2.0.0 + * @deprecated in SmartDeviceLink 7.1.0 + * @param {Boolean} ajar - References signal "DrStatPsngr_B_Actl". Deprecated starting with RPC Spec 7.1.0. - The desired PassengerDoorAjar. * @returns {BodyInformation} - The class instance for method chaining. */ setPassengerDoorAjar (ajar) { @@ -140,7 +147,9 @@ class BodyInformation extends RpcStruct { /** * Set the RearLeftDoorAjar - * @param {Boolean} ajar - References signal "DrStatRl_B_Actl". - The desired RearLeftDoorAjar. + * @since SmartDeviceLink 2.0.0 + * @deprecated in SmartDeviceLink 7.1.0 + * @param {Boolean} ajar - References signal "DrStatRl_B_Actl". Deprecated starting with RPC Spec 7.1.0. - The desired RearLeftDoorAjar. * @returns {BodyInformation} - The class instance for method chaining. */ setRearLeftDoorAjar (ajar) { @@ -158,7 +167,9 @@ class BodyInformation extends RpcStruct { /** * Set the RearRightDoorAjar - * @param {Boolean} ajar - References signal "DrStatRr_B_Actl". - The desired RearRightDoorAjar. + * @since SmartDeviceLink 2.0.0 + * @deprecated in SmartDeviceLink 7.1.0 + * @param {Boolean} ajar - References signal "DrStatRr_B_Actl". Deprecated starting with RPC Spec 7.1.0. - The desired RearRightDoorAjar. * @returns {BodyInformation} - The class instance for method chaining. */ setRearRightDoorAjar (ajar) { @@ -173,6 +184,69 @@ class BodyInformation extends RpcStruct { getRearRightDoorAjar () { return this.getParameter(BodyInformation.KEY_REAR_RIGHT_DOOR_AJAR); } + + /** + * Set the DoorStatuses + * @since SmartDeviceLink 7.1.0 + * @param {DoorStatus[]} statuses - Provides status for doors if Ajar/Closed/Locked - The desired DoorStatuses. + * {'array_min_size': 0, 'array_max_size': 100} + * @returns {BodyInformation} - The class instance for method chaining. + */ + setDoorStatuses (statuses) { + this._validateType(DoorStatus, statuses, true); + this.setParameter(BodyInformation.KEY_DOOR_STATUSES, statuses); + return this; + } + + /** + * Get the DoorStatuses + * @returns {DoorStatus[]} - the KEY_DOOR_STATUSES value + */ + getDoorStatuses () { + return this.getObject(DoorStatus, BodyInformation.KEY_DOOR_STATUSES); + } + + /** + * Set the GateStatuses + * @since SmartDeviceLink 7.1.0 + * @param {GateStatus[]} statuses - Provides status for trunk/hood/etc. if Ajar/Closed/Locked - The desired GateStatuses. + * {'array_min_size': 0, 'array_max_size': 100} + * @returns {BodyInformation} - The class instance for method chaining. + */ + setGateStatuses (statuses) { + this._validateType(GateStatus, statuses, true); + this.setParameter(BodyInformation.KEY_GATE_STATUSES, statuses); + return this; + } + + /** + * Get the GateStatuses + * @returns {GateStatus[]} - the KEY_GATE_STATUSES value + */ + getGateStatuses () { + return this.getObject(GateStatus, BodyInformation.KEY_GATE_STATUSES); + } + + /** + * Set the RoofStatuses + * @since SmartDeviceLink 7.1.0 + * @param {RoofStatus[]} statuses - Provides status for roof/convertible roof/sunroof/moonroof etc., if Closed/Ajar/Removed etc. - The desired RoofStatuses. + * {'array_min_size': 0, 'array_max_size': 100} + * @returns {BodyInformation} - The class instance for method chaining. + */ + setRoofStatuses (statuses) { + this._validateType(RoofStatus, statuses, true); + this.setParameter(BodyInformation.KEY_ROOF_STATUSES, statuses); + return this; + } + + /** + * Get the RoofStatuses + * @returns {RoofStatus[]} - the KEY_ROOF_STATUSES value + */ + getRoofStatuses () { + return this.getObject(RoofStatus, BodyInformation.KEY_ROOF_STATUSES); + } } BodyInformation.KEY_PARK_BRAKE_ACTIVE = 'parkBrakeActive'; @@ -182,5 +256,8 @@ BodyInformation.KEY_DRIVER_DOOR_AJAR = 'driverDoorAjar'; BodyInformation.KEY_PASSENGER_DOOR_AJAR = 'passengerDoorAjar'; BodyInformation.KEY_REAR_LEFT_DOOR_AJAR = 'rearLeftDoorAjar'; BodyInformation.KEY_REAR_RIGHT_DOOR_AJAR = 'rearRightDoorAjar'; +BodyInformation.KEY_DOOR_STATUSES = 'doorStatuses'; +BodyInformation.KEY_GATE_STATUSES = 'gateStatuses'; +BodyInformation.KEY_ROOF_STATUSES = 'roofStatuses'; export { BodyInformation }; \ No newline at end of file diff --git a/lib/js/src/rpc/structs/DoorStatus.js b/lib/js/src/rpc/structs/DoorStatus.js new file mode 100644 index 00000000..623843ae --- /dev/null +++ b/lib/js/src/rpc/structs/DoorStatus.js @@ -0,0 +1,94 @@ +/* eslint-disable camelcase */ +/* +* Copyright (c) 2020, SmartDeviceLink Consortium, Inc. +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* +* Redistributions of source code must retain the above copyright notice, this +* list of conditions and the following disclaimer. +* +* Redistributions in binary form must reproduce the above copyright notice, +* this list of conditions and the following +* disclaimer in the documentation and/or other materials provided with the +* distribution. +* +* Neither the name of the SmartDeviceLink Consortium Inc. nor the names of +* its contributors may be used to endorse or promote products derived +* from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +*/ + +import { DoorStatusType } from '../enums/DoorStatusType.js'; +import { Grid } from './Grid.js'; +import { RpcStruct } from '../RpcStruct.js'; + +/** + * Describes the status of a parameter of door. + */ +class DoorStatus extends RpcStruct { + /** + * Initalizes an instance of DoorStatus. + * @class + * @param {object} parameters - An object map of parameters. + * @since SmartDeviceLink 7.1.0 + */ + constructor (parameters) { + super(parameters); + } + + /** + * Set the Location + * @param {Grid} location - Describes a location (origin coordinates and span) of a vehicle component. - The desired Location. + * @returns {DoorStatus} - The class instance for method chaining. + */ + setLocation (location) { + this._validateType(Grid, location); + this.setParameter(DoorStatus.KEY_LOCATION, location); + return this; + } + + /** + * Get the Location + * @returns {Grid} - the KEY_LOCATION value + */ + getLocation () { + return this.getObject(Grid, DoorStatus.KEY_LOCATION); + } + + /** + * Set the Status + * @param {DoorStatusType} status - The desired Status. + * @returns {DoorStatus} - The class instance for method chaining. + */ + setStatus (status) { + this._validateType(DoorStatusType, status); + this.setParameter(DoorStatus.KEY_STATUS, status); + return this; + } + + /** + * Get the Status + * @returns {DoorStatusType} - the KEY_STATUS value + */ + getStatus () { + return this.getObject(DoorStatusType, DoorStatus.KEY_STATUS); + } +} + +DoorStatus.KEY_LOCATION = 'location'; +DoorStatus.KEY_STATUS = 'status'; + +export { DoorStatus }; \ No newline at end of file diff --git a/lib/js/src/rpc/structs/GateStatus.js b/lib/js/src/rpc/structs/GateStatus.js new file mode 100644 index 00000000..4fbe9fce --- /dev/null +++ b/lib/js/src/rpc/structs/GateStatus.js @@ -0,0 +1,94 @@ +/* eslint-disable camelcase */ +/* +* Copyright (c) 2020, SmartDeviceLink Consortium, Inc. +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* +* Redistributions of source code must retain the above copyright notice, this +* list of conditions and the following disclaimer. +* +* Redistributions in binary form must reproduce the above copyright notice, +* this list of conditions and the following +* disclaimer in the documentation and/or other materials provided with the +* distribution. +* +* Neither the name of the SmartDeviceLink Consortium Inc. nor the names of +* its contributors may be used to endorse or promote products derived +* from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +*/ + +import { DoorStatusType } from '../enums/DoorStatusType.js'; +import { Grid } from './Grid.js'; +import { RpcStruct } from '../RpcStruct.js'; + +/** + * Describes the status of a parameter of trunk/hood/etc. + */ +class GateStatus extends RpcStruct { + /** + * Initalizes an instance of GateStatus. + * @class + * @param {object} parameters - An object map of parameters. + * @since SmartDeviceLink 7.1.0 + */ + constructor (parameters) { + super(parameters); + } + + /** + * Set the Location + * @param {Grid} location - Describes a location (origin coordinates and span) of a vehicle component. - The desired Location. + * @returns {GateStatus} - The class instance for method chaining. + */ + setLocation (location) { + this._validateType(Grid, location); + this.setParameter(GateStatus.KEY_LOCATION, location); + return this; + } + + /** + * Get the Location + * @returns {Grid} - the KEY_LOCATION value + */ + getLocation () { + return this.getObject(Grid, GateStatus.KEY_LOCATION); + } + + /** + * Set the Status + * @param {DoorStatusType} status - The desired Status. + * @returns {GateStatus} - The class instance for method chaining. + */ + setStatus (status) { + this._validateType(DoorStatusType, status); + this.setParameter(GateStatus.KEY_STATUS, status); + return this; + } + + /** + * Get the Status + * @returns {DoorStatusType} - the KEY_STATUS value + */ + getStatus () { + return this.getObject(DoorStatusType, GateStatus.KEY_STATUS); + } +} + +GateStatus.KEY_LOCATION = 'location'; +GateStatus.KEY_STATUS = 'status'; + +export { GateStatus }; \ No newline at end of file diff --git a/lib/js/src/rpc/structs/RoofStatus.js b/lib/js/src/rpc/structs/RoofStatus.js new file mode 100644 index 00000000..3ce82d92 --- /dev/null +++ b/lib/js/src/rpc/structs/RoofStatus.js @@ -0,0 +1,115 @@ +/* eslint-disable camelcase */ +/* +* Copyright (c) 2020, SmartDeviceLink Consortium, Inc. +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* +* Redistributions of source code must retain the above copyright notice, this +* list of conditions and the following disclaimer. +* +* Redistributions in binary form must reproduce the above copyright notice, +* this list of conditions and the following +* disclaimer in the documentation and/or other materials provided with the +* distribution. +* +* Neither the name of the SmartDeviceLink Consortium Inc. nor the names of +* its contributors may be used to endorse or promote products derived +* from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +*/ + +import { DoorStatusType } from '../enums/DoorStatusType.js'; +import { Grid } from './Grid.js'; +import { RpcStruct } from '../RpcStruct.js'; +import { WindowState } from './WindowState.js'; + +/** + * Describes the status of a parameter of roof/convertible roof/sunroof/moonroof etc. If roof is open (AJAR), state will determine percentage of roof open. + */ +class RoofStatus extends RpcStruct { + /** + * Initalizes an instance of RoofStatus. + * @class + * @param {object} parameters - An object map of parameters. + * @since SmartDeviceLink 7.1.0 + */ + constructor (parameters) { + super(parameters); + } + + /** + * Set the Location + * @param {Grid} location - Describes a location (origin coordinates and span) of a vehicle component. - The desired Location. + * @returns {RoofStatus} - The class instance for method chaining. + */ + setLocation (location) { + this._validateType(Grid, location); + this.setParameter(RoofStatus.KEY_LOCATION, location); + return this; + } + + /** + * Get the Location + * @returns {Grid} - the KEY_LOCATION value + */ + getLocation () { + return this.getObject(Grid, RoofStatus.KEY_LOCATION); + } + + /** + * Set the Status + * @param {DoorStatusType} status - The desired Status. + * @returns {RoofStatus} - The class instance for method chaining. + */ + setStatus (status) { + this._validateType(DoorStatusType, status); + this.setParameter(RoofStatus.KEY_STATUS, status); + return this; + } + + /** + * Get the Status + * @returns {DoorStatusType} - the KEY_STATUS value + */ + getStatus () { + return this.getObject(DoorStatusType, RoofStatus.KEY_STATUS); + } + + /** + * Set the State + * @param {WindowState} state - The desired State. + * @returns {RoofStatus} - The class instance for method chaining. + */ + setState (state) { + this._validateType(WindowState, state); + this.setParameter(RoofStatus.KEY_STATE, state); + return this; + } + + /** + * Get the State + * @returns {WindowState} - the KEY_STATE value + */ + getState () { + return this.getObject(WindowState, RoofStatus.KEY_STATE); + } +} + +RoofStatus.KEY_LOCATION = 'location'; +RoofStatus.KEY_STATUS = 'status'; +RoofStatus.KEY_STATE = 'state'; + +export { RoofStatus }; \ No newline at end of file diff --git a/tests/Test.js b/tests/Test.js index 9865922c..58e15c8d 100644 --- a/tests/Test.js +++ b/tests/Test.js @@ -27,6 +27,9 @@ const WindowStatus = SDL.rpc.structs.WindowStatus; const SeatLocation = SDL.rpc.structs.SeatLocation; const SeatStatus = SDL.rpc.structs.SeatStatus; const SeatOccupancy = SDL.rpc.structs.SeatOccupancy; +const DoorStatus = SDL.rpc.structs.DoorStatus; +const GateStatus = SDL.rpc.structs.GateStatus; +const RoofStatus = SDL.rpc.structs.RoofStatus; // enums const SpeechCapabilities = SDL.rpc.enums.SpeechCapabilities; @@ -54,6 +57,9 @@ const CapacityUnit = SDL.rpc.enums.CapacityUnit; const ComponentVolumeStatus = SDL.rpc.enums.ComponentVolumeStatus; const FuelType = SDL.rpc.enums.FuelType; const RequestType = SDL.rpc.enums.RequestType; +const DoorStatusType = SDL.rpc.enums.DoorStatusType; +const IgnitionStableStatus = SDL.rpc.enums.IgnitionStableStatus; +const IgnitionStatus = SDL.rpc.enums.IgnitionStatus; class Test { constructor () { @@ -454,4 +460,63 @@ const JSON_SEATOCCUPANCY = Test.JSON_SEATOCCUPANCY = { [SeatOccupancy.KEY_SEATS_BELTED]: Test.JSON_SEATSTATUS_LIST, }; -module.exports = Test; \ No newline at end of file +const GENERAL_DOORSTATUSTYPE = Test.GENERAL_DOORSTATUSTYPE = DoorStatusType.CLOSED; + +const GENERAL_IGNITIONSTABLESTATUS = Test.GENERAL_IGNITIONSTABLESTATUS = IgnitionStableStatus.IGNITION_SWITCH_STABLE; + +const GENERAL_IGNITIONSTATUS = Test.GENERAL_IGNITIONSTATUS = IgnitionStatus.IS_UNKNOWN; + +const GENERAL_DOORSTATUS = Test.GENERAL_DOORSTATUS = new DoorStatus() + .setLocation(Test.GENERAL_GRID) + .setStatus(Test.GENERAL_DOORSTATUSTYPE); + +const GENERAL_DOORSTATUS_LIST = Test.GENERAL_DOORSTATUS_LIST = [ + GENERAL_DOORSTATUS, +]; + +const JSON_DOORSTATUS = Test.JSON_DOORSTATUS = { + [DoorStatus.KEY_LOCATION]: Test.JSON_GRID, + [DoorStatus.KEY_STATUS]: Test.GENERAL_DOORSTATUSTYPE, +}; + +const JSON_DOORSTATUS_LIST = Test.JSON_DOORSTATUS_LIST = [ + JSON_DOORSTATUS, +]; + +const GENERAL_GATESTATUS = Test.GENERAL_GATESTATUS = new GateStatus() + .setLocation(Test.GENERAL_GRID) + .setStatus(Test.GENERAL_DOORSTATUSTYPE); + +const GENERAL_GATESTATUS_LIST = Test.GENERAL_GATESTATUS_LIST = [ + GENERAL_GATESTATUS, +]; + +const JSON_GATESTATUS = Test.JSON_GATESTATUS = { + [GateStatus.KEY_LOCATION]: Test.JSON_GRID, + [GateStatus.KEY_STATUS]: Test.GENERAL_DOORSTATUSTYPE, +}; + +const JSON_GATESTATUS_LIST = Test.JSON_GATESTATUS_LIST = [ + JSON_GATESTATUS, +]; + +const GENERAL_ROOFSTATUS = Test.GENERAL_ROOFSTATUS = new RoofStatus() + .setLocation(Test.GENERAL_GRID) + .setStatus(Test.GENERAL_DOORSTATUSTYPE) + .setState(Test.GENERAL_WINDOW_STATE); + +const GENERAL_ROOFSTATUS_LIST = Test.GENERAL_ROOFSTATUS_LIST = [ + GENERAL_ROOFSTATUS, +]; + +const JSON_ROOFSTATUS = Test.JSON_ROOFSTATUS = { + [RoofStatus.KEY_LOCATION]: Test.JSON_GRID, + [RoofStatus.KEY_STATUS]: Test.GENERAL_DOORSTATUSTYPE, + [RoofStatus.KEY_STATE]: Test.JSON_WINDOW_STATE, +}; + +const JSON_ROOFSTATUS_LIST = Test.JSON_ROOFSTATUS_LIST = [ + JSON_ROOFSTATUS, +]; + +module.exports = Test; diff --git a/tests/node/rpc/enums/DoorStatusTypeTests.js b/tests/node/rpc/enums/DoorStatusTypeTests.js new file mode 100644 index 00000000..3027f2a7 --- /dev/null +++ b/tests/node/rpc/enums/DoorStatusTypeTests.js @@ -0,0 +1,37 @@ +const SDL = require('../../../config.js').node; + +const DoorStatusType = SDL.rpc.enums.DoorStatusType; +const Validator = require('./../../../Validator.js'); + +describe('DoorStatusTypeTests', function () { + it('testValidEnums', function (done) { + let example = 'CLOSED'; + const enumClosed = DoorStatusType.valueForKey(example); + example = 'LOCKED'; + const enumLocked = DoorStatusType.valueForKey(example); + example = 'AJAR'; + const enumAjar = DoorStatusType.valueForKey(example); + example = 'REMOVED'; + const enumRemoved = DoorStatusType.valueForKey(example); + + Validator.assertNotNullUndefined(enumClosed, 'CLOSED returned null.'); + Validator.assertNotNullUndefined(enumLocked, 'LOCKED returned null.'); + Validator.assertNotNullUndefined(enumAjar, 'AJAR returned null.'); + Validator.assertNotNullUndefined(enumRemoved, 'REMOVED returned null.'); + done(); + }); + + it('testInvalidEnum', function (done) { + const example = 'Closed'; + const temp = DoorStatusType.valueForKey(example); + Validator.assertNull(temp, 'Result of valueForKey should be null.'); + done(); + }); + + it('testNullEnum', function (done) { + const example = null; + const temp = DoorStatusType.valueForKey(example); + Validator.assertNull(temp, 'Result of valueForKey should be null.'); + done(); + }); +}); \ No newline at end of file diff --git a/tests/node/rpc/structs/BodyInformationTests.js b/tests/node/rpc/structs/BodyInformationTests.js new file mode 100644 index 00000000..a3674234 --- /dev/null +++ b/tests/node/rpc/structs/BodyInformationTests.js @@ -0,0 +1,71 @@ +const SDL = require('../../../config.js').node; +const BodyInformation = SDL.rpc.structs.BodyInformation; + +const Test = require('./../../../Test.js'); +const Validator = require('./../../../Validator.js'); +const BaseStructTests = require('./BaseStructTests'); + +describe('BodyInformationTests', function () { + before(function () { + this.create = function () { + return new BodyInformation() + .setParkBrakeActive(Test.GENERAL_BOOLEAN) + .setIgnitionStableStatus(Test.GENERAL_IGNITIONSTABLESTATUS) + .setIgnitionStatus(Test.GENERAL_IGNITIONSTATUS) + .setDriverDoorAjar(Test.GENERAL_BOOLEAN) + .setPassengerDoorAjar(Test.GENERAL_BOOLEAN) + .setRearLeftDoorAjar(Test.GENERAL_BOOLEAN) + .setRearRightDoorAjar(Test.GENERAL_BOOLEAN) + .setDoorStatuses(Test.GENERAL_DOORSTATUS_LIST) + .setGateStatuses(Test.GENERAL_GATESTATUS_LIST) + .setRoofStatuses(Test.GENERAL_ROOFSTATUS_LIST); + }; + + this.getExpectedParameters = function (sdlVersion) { + return { + [BodyInformation.KEY_PARK_BRAKE_ACTIVE]: Test.GENERAL_BOOLEAN, + [BodyInformation.KEY_IGNITION_STABLE_STATUS]: Test.GENERAL_IGNITIONSTABLESTATUS, + [BodyInformation.KEY_IGNITION_STATUS]: Test.GENERAL_IGNITIONSTATUS, + [BodyInformation.KEY_DRIVER_DOOR_AJAR]: Test.GENERAL_BOOLEAN, + [BodyInformation.KEY_PASSENGER_DOOR_AJAR]: Test.GENERAL_BOOLEAN, + [BodyInformation.KEY_REAR_LEFT_DOOR_AJAR]: Test.GENERAL_BOOLEAN, + [BodyInformation.KEY_REAR_RIGHT_DOOR_AJAR]: Test.GENERAL_BOOLEAN, + [BodyInformation.KEY_DOOR_STATUSES]: Test.JSON_DOORSTATUS_LIST, + [BodyInformation.KEY_GATE_STATUSES]: Test.JSON_GATESTATUS_LIST, + [BodyInformation.KEY_ROOF_STATUSES]: Test.JSON_ROOFSTATUS_LIST, + }; + }; + }); + + BaseStructTests.tests(); + + it('testRpcValues', function (done) { + let msg = this.msg; + // Valid Tests + Validator.assertEquals(Test.GENERAL_BOOLEAN, msg.getParkBrakeActive()); + Validator.assertEquals(Test.GENERAL_IGNITIONSTABLESTATUS, msg.getIgnitionStableStatus()); + Validator.assertEquals(Test.GENERAL_IGNITIONSTATUS, msg.getIgnitionStatus()); + Validator.assertEquals(Test.GENERAL_BOOLEAN, msg.getDriverDoorAjar()); + Validator.assertEquals(Test.GENERAL_BOOLEAN, msg.getPassengerDoorAjar()); + Validator.assertEquals(Test.GENERAL_BOOLEAN, msg.getRearLeftDoorAjar()); + Validator.assertEquals(Test.GENERAL_BOOLEAN, msg.getRearRightDoorAjar()); + Validator.assertEquals(Test.GENERAL_DOORSTATUS_LIST, msg.getDoorStatuses()); + Validator.assertEquals(Test.GENERAL_GATESTATUS_LIST, msg.getGateStatuses()); + Validator.assertEquals(Test.GENERAL_ROOFSTATUS_LIST, msg.getRoofStatuses()); + + // Invalid/Null Tests + msg = new BodyInformation(); + Validator.assertNotNull(msg); + Validator.assertNullOrUndefined(msg.getParkBrakeActive()); + Validator.assertNullOrUndefined(msg.getIgnitionStableStatus()); + Validator.assertNullOrUndefined(msg.getIgnitionStatus()); + Validator.assertNullOrUndefined(msg.getDriverDoorAjar()); + Validator.assertNullOrUndefined(msg.getPassengerDoorAjar()); + Validator.assertNullOrUndefined(msg.getRearLeftDoorAjar()); + Validator.assertNullOrUndefined(msg.getRearRightDoorAjar()); + Validator.assertNullOrUndefined(msg.getDoorStatuses()); + Validator.assertNullOrUndefined(msg.getGateStatuses()); + Validator.assertNullOrUndefined(msg.getRoofStatuses()); + done(); + }); +}); \ No newline at end of file diff --git a/tests/node/rpc/structs/DoorStatusTests.js b/tests/node/rpc/structs/DoorStatusTests.js new file mode 100644 index 00000000..a6755441 --- /dev/null +++ b/tests/node/rpc/structs/DoorStatusTests.js @@ -0,0 +1,39 @@ +const SDL = require('../../../config.js').node; +const DoorStatus = SDL.rpc.structs.DoorStatus; + +const Test = require('./../../../Test.js'); +const Validator = require('./../../../Validator.js'); +const BaseStructTests = require('./BaseStructTests'); + +describe('DoorStatusTests', function () { + before(function () { + this.create = function () { + return new DoorStatus() + .setLocation(Test.GENERAL_GRID) + .setStatus(Test.GENERAL_DOORSTATUSTYPE); + }; + + this.getExpectedParameters = function (sdlVersion) { + return { + [DoorStatus.KEY_LOCATION]: Test.JSON_GRID, + [DoorStatus.KEY_STATUS]: Test.GENERAL_DOORSTATUSTYPE, + }; + }; + }); + + BaseStructTests.tests(); + + it('testRpcValues', function (done) { + let msg = this.msg; + // Valid Tests + Validator.assertEquals(Test.GENERAL_GRID, msg.getLocation()); + Validator.assertEquals(Test.GENERAL_DOORSTATUSTYPE, msg.getStatus()); + + // Invalid/Null Tests + msg = new DoorStatus(); + Validator.assertNotNull(msg); + Validator.assertNullOrUndefined(msg.getLocation()); + Validator.assertNullOrUndefined(msg.getStatus()); + done(); + }); +}); \ No newline at end of file diff --git a/tests/node/rpc/structs/GateStatusTests.js b/tests/node/rpc/structs/GateStatusTests.js new file mode 100644 index 00000000..33caffbd --- /dev/null +++ b/tests/node/rpc/structs/GateStatusTests.js @@ -0,0 +1,39 @@ +const SDL = require('../../../config.js').node; +const GateStatus = SDL.rpc.structs.GateStatus; + +const Test = require('./../../../Test.js'); +const Validator = require('./../../../Validator.js'); +const BaseStructTests = require('./BaseStructTests'); + +describe('GateStatusTests', function () { + before(function () { + this.create = function () { + return new GateStatus() + .setLocation(Test.GENERAL_GRID) + .setStatus(Test.GENERAL_DOORSTATUSTYPE); + }; + + this.getExpectedParameters = function (sdlVersion) { + return { + [GateStatus.KEY_LOCATION]: Test.JSON_GRID, + [GateStatus.KEY_STATUS]: Test.GENERAL_DOORSTATUSTYPE, + }; + }; + }); + + BaseStructTests.tests(); + + it('testRpcValues', function (done) { + let msg = this.msg; + // Valid Tests + Validator.assertEquals(Test.GENERAL_GRID, msg.getLocation()); + Validator.assertEquals(Test.GENERAL_DOORSTATUSTYPE, msg.getStatus()); + + // Invalid/Null Tests + msg = new GateStatus(); + Validator.assertNotNull(msg); + Validator.assertNullOrUndefined(msg.getLocation()); + Validator.assertNullOrUndefined(msg.getStatus()); + done(); + }); +}); \ No newline at end of file diff --git a/tests/node/rpc/structs/RoofStatusTests.js b/tests/node/rpc/structs/RoofStatusTests.js new file mode 100644 index 00000000..adc7fd8e --- /dev/null +++ b/tests/node/rpc/structs/RoofStatusTests.js @@ -0,0 +1,43 @@ +const SDL = require('../../../config.js').node; +const RoofStatus = SDL.rpc.structs.RoofStatus; + +const Test = require('./../../../Test.js'); +const Validator = require('./../../../Validator.js'); +const BaseStructTests = require('./BaseStructTests'); + +describe('RoofStatusTests', function () { + before(function () { + this.create = function () { + return new RoofStatus() + .setLocation(Test.GENERAL_GRID) + .setStatus(Test.GENERAL_DOORSTATUSTYPE) + .setState(Test.GENERAL_WINDOW_STATE); + }; + + this.getExpectedParameters = function (sdlVersion) { + return { + [RoofStatus.KEY_LOCATION]: Test.JSON_GRID, + [RoofStatus.KEY_STATUS]: Test.GENERAL_DOORSTATUSTYPE, + [RoofStatus.KEY_STATE]: Test.JSON_WINDOW_STATE, + }; + }; + }); + + BaseStructTests.tests(); + + it('testRpcValues', function (done) { + let msg = this.msg; + // Valid Tests + Validator.assertEquals(Test.GENERAL_GRID, msg.getLocation()); + Validator.assertEquals(Test.GENERAL_DOORSTATUSTYPE, msg.getStatus()); + Validator.assertEquals(Test.GENERAL_WINDOW_STATE, msg.getState()); + + // Invalid/Null Tests + msg = new RoofStatus(); + Validator.assertNotNull(msg); + Validator.assertNullOrUndefined(msg.getLocation()); + Validator.assertNullOrUndefined(msg.getStatus()); + Validator.assertNullOrUndefined(msg.getState()); + done(); + }); +}); \ No newline at end of file