diff options
author | Henigan <rheniga1@MGC12Z921DLVCG.fbpld77.ford.com> | 2021-02-15 14:54:25 -0500 |
---|---|---|
committer | Henigan <rheniga1@MGC12Z921DLVCG.fbpld77.ford.com> | 2021-02-15 14:54:25 -0500 |
commit | 4362a69962530f41f3e043172b907497962d145f (patch) | |
tree | ba949e49b65fd1d5b6021fcb78952fe390542fcd /android/sdl_android/src/androidTest/java/com/smartdevicelink/test | |
parent | 181f98ed9849e46c65cb39ec1db7d60f4e052d2b (diff) | |
parent | 3a84cea88ad75f1fa72152ac513f7198c758ab06 (diff) | |
download | sdl_android-4362a69962530f41f3e043172b907497962d145f.tar.gz |
Merge branch 'develop' into feature/issue_1246
Diffstat (limited to 'android/sdl_android/src/androidTest/java/com/smartdevicelink/test')
26 files changed, 1146 insertions, 103 deletions
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/TestValues.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/TestValues.java index edf446b3c..eeafa2edb 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/TestValues.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/TestValues.java @@ -16,104 +16,7 @@ import com.smartdevicelink.managers.screen.menu.VoiceCommand; import com.smartdevicelink.managers.screen.menu.VoiceCommandSelectionListener; import com.smartdevicelink.protocol.SdlProtocol; import com.smartdevicelink.protocol.enums.FunctionID; -import com.smartdevicelink.proxy.rpc.AppInfo; -import com.smartdevicelink.proxy.rpc.AppServiceCapability; -import com.smartdevicelink.proxy.rpc.AppServiceData; -import com.smartdevicelink.proxy.rpc.AppServiceManifest; -import com.smartdevicelink.proxy.rpc.AppServiceRecord; -import com.smartdevicelink.proxy.rpc.AppServicesCapabilities; -import com.smartdevicelink.proxy.rpc.AudioControlCapabilities; -import com.smartdevicelink.proxy.rpc.AudioControlData; -import com.smartdevicelink.proxy.rpc.AudioPassThruCapabilities; -import com.smartdevicelink.proxy.rpc.ButtonCapabilities; -import com.smartdevicelink.proxy.rpc.Choice; -import com.smartdevicelink.proxy.rpc.ClimateControlCapabilities; -import com.smartdevicelink.proxy.rpc.ClimateControlData; -import com.smartdevicelink.proxy.rpc.CloudAppProperties; -import com.smartdevicelink.proxy.rpc.Coordinate; -import com.smartdevicelink.proxy.rpc.DIDResult; -import com.smartdevicelink.proxy.rpc.DateTime; -import com.smartdevicelink.proxy.rpc.DeviceInfo; -import com.smartdevicelink.proxy.rpc.DisplayCapabilities; -import com.smartdevicelink.proxy.rpc.DisplayCapability; -import com.smartdevicelink.proxy.rpc.DriverDistractionCapability; -import com.smartdevicelink.proxy.rpc.DynamicUpdateCapabilities; -import com.smartdevicelink.proxy.rpc.EqualizerSettings; -import com.smartdevicelink.proxy.rpc.GearStatus; -import com.smartdevicelink.proxy.rpc.Grid; -import com.smartdevicelink.proxy.rpc.HMICapabilities; -import com.smartdevicelink.proxy.rpc.HMIPermissions; -import com.smartdevicelink.proxy.rpc.HMISettingsControlCapabilities; -import com.smartdevicelink.proxy.rpc.HMISettingsControlData; -import com.smartdevicelink.proxy.rpc.HapticRect; -import com.smartdevicelink.proxy.rpc.Image; -import com.smartdevicelink.proxy.rpc.ImageField; -import com.smartdevicelink.proxy.rpc.ImageResolution; -import com.smartdevicelink.proxy.rpc.KeyboardProperties; -import com.smartdevicelink.proxy.rpc.LightCapabilities; -import com.smartdevicelink.proxy.rpc.LightControlCapabilities; -import com.smartdevicelink.proxy.rpc.LightControlData; -import com.smartdevicelink.proxy.rpc.LightState; -import com.smartdevicelink.proxy.rpc.LocationDetails; -import com.smartdevicelink.proxy.rpc.MassageCushionFirmness; -import com.smartdevicelink.proxy.rpc.MassageModeData; -import com.smartdevicelink.proxy.rpc.MediaServiceData; -import com.smartdevicelink.proxy.rpc.MediaServiceManifest; -import com.smartdevicelink.proxy.rpc.MenuParams; -import com.smartdevicelink.proxy.rpc.MetadataTags; -import com.smartdevicelink.proxy.rpc.ModuleData; -import com.smartdevicelink.proxy.rpc.ModuleInfo; -import com.smartdevicelink.proxy.rpc.NavigationCapability; -import com.smartdevicelink.proxy.rpc.NavigationInstruction; -import com.smartdevicelink.proxy.rpc.NavigationServiceData; -import com.smartdevicelink.proxy.rpc.NavigationServiceManifest; -import com.smartdevicelink.proxy.rpc.OasisAddress; -import com.smartdevicelink.proxy.rpc.ParameterPermissions; -import com.smartdevicelink.proxy.rpc.PermissionItem; -import com.smartdevicelink.proxy.rpc.PhoneCapability; -import com.smartdevicelink.proxy.rpc.PresetBankCapabilities; -import com.smartdevicelink.proxy.rpc.RGBColor; -import com.smartdevicelink.proxy.rpc.RadioControlCapabilities; -import com.smartdevicelink.proxy.rpc.RadioControlData; -import com.smartdevicelink.proxy.rpc.RdsData; -import com.smartdevicelink.proxy.rpc.Rectangle; -import com.smartdevicelink.proxy.rpc.RemoteControlCapabilities; -import com.smartdevicelink.proxy.rpc.ScreenParams; -import com.smartdevicelink.proxy.rpc.SdlMsgVersion; -import com.smartdevicelink.proxy.rpc.SeatControlCapabilities; -import com.smartdevicelink.proxy.rpc.SeatControlData; -import com.smartdevicelink.proxy.rpc.SeatLocation; -import com.smartdevicelink.proxy.rpc.SeatMemoryAction; -import com.smartdevicelink.proxy.rpc.SingleTireStatus; -import com.smartdevicelink.proxy.rpc.SisData; -import com.smartdevicelink.proxy.rpc.SoftButton; -import com.smartdevicelink.proxy.rpc.SoftButtonCapabilities; -import com.smartdevicelink.proxy.rpc.StabilityControlsStatus; -import com.smartdevicelink.proxy.rpc.StartTime; -import com.smartdevicelink.proxy.rpc.StationIDNumber; -import com.smartdevicelink.proxy.rpc.SystemCapability; -import com.smartdevicelink.proxy.rpc.TTSChunk; -import com.smartdevicelink.proxy.rpc.Temperature; -import com.smartdevicelink.proxy.rpc.TemplateColorScheme; -import com.smartdevicelink.proxy.rpc.TemplateConfiguration; -import com.smartdevicelink.proxy.rpc.TextField; -import com.smartdevicelink.proxy.rpc.TouchCoord; -import com.smartdevicelink.proxy.rpc.TouchEvent; -import com.smartdevicelink.proxy.rpc.TouchEventCapabilities; -import com.smartdevicelink.proxy.rpc.Turn; -import com.smartdevicelink.proxy.rpc.VehicleDataResult; -import com.smartdevicelink.proxy.rpc.VehicleType; -import com.smartdevicelink.proxy.rpc.VideoStreamingCapability; -import com.smartdevicelink.proxy.rpc.VideoStreamingFormat; -import com.smartdevicelink.proxy.rpc.VrHelpItem; -import com.smartdevicelink.proxy.rpc.WeatherAlert; -import com.smartdevicelink.proxy.rpc.WeatherData; -import com.smartdevicelink.proxy.rpc.WeatherServiceData; -import com.smartdevicelink.proxy.rpc.WeatherServiceManifest; -import com.smartdevicelink.proxy.rpc.WindowCapability; -import com.smartdevicelink.proxy.rpc.WindowState; -import com.smartdevicelink.proxy.rpc.WindowStatus; -import com.smartdevicelink.proxy.rpc.WindowTypeCapabilities; +import com.smartdevicelink.proxy.rpc.*; import com.smartdevicelink.proxy.rpc.enums.AmbientLightStatus; import com.smartdevicelink.proxy.rpc.enums.AppHMIType; import com.smartdevicelink.proxy.rpc.enums.AppInterfaceUnregisteredReason; @@ -137,6 +40,7 @@ import com.smartdevicelink.proxy.rpc.enums.Direction; import com.smartdevicelink.proxy.rpc.enums.DisplayMode; import com.smartdevicelink.proxy.rpc.enums.DisplayType; import com.smartdevicelink.proxy.rpc.enums.DistanceUnit; +import com.smartdevicelink.proxy.rpc.enums.DoorStatusType; import com.smartdevicelink.proxy.rpc.enums.DriverDistractionState; import com.smartdevicelink.proxy.rpc.enums.ECallConfirmationStatus; import com.smartdevicelink.proxy.rpc.enums.EmergencyEventType; @@ -181,6 +85,7 @@ import com.smartdevicelink.proxy.rpc.enums.RequestType; import com.smartdevicelink.proxy.rpc.enums.Result; import com.smartdevicelink.proxy.rpc.enums.SamplingRate; import com.smartdevicelink.proxy.rpc.enums.SeatMemoryActionType; +import com.smartdevicelink.proxy.rpc.enums.SeekIndicatorType; import com.smartdevicelink.proxy.rpc.enums.ServiceUpdateReason; import com.smartdevicelink.proxy.rpc.enums.SoftButtonType; import com.smartdevicelink.proxy.rpc.enums.SpeechCapabilities; @@ -366,6 +271,7 @@ public class TestValues { public static final DriverDistractionState GENERAL_DRIVERDISTRACTIONSTATE = DriverDistractionState.DD_ON; public static final List<LocationDetails> GENERAL_LOCATIONDETAILS_LIST = Arrays.asList(new LocationDetails[]{TestValues.GENERAL_LOCATIONDETAILS, TestValues.GENERAL_LOCATIONDETAILS}); public static final AudioStreamingIndicator GENERAL_AUDIO_STREAMING_INDICATOR = AudioStreamingIndicator.PLAY; + public static final SeekStreamingIndicator GENERAL_SEEK_STREAMING_INDICATOR = new SeekStreamingIndicator(SeekIndicatorType.TRACK); public static final String GENERAL_APP_ID = "123e4567e8"; public static final String GENERAL_FULL_APP_ID = "123e4567-e89b-12d3-a456-426655440000"; public static final String GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME = "oemCustomVehicleDataName"; @@ -405,6 +311,7 @@ public class TestValues { public static final LightStatus GENERAL_LIGHTSTATUS = LightStatus.OFF; public static final RadioBand GENERAL_RADIOBAND = RadioBand.AM; public static final ClimateControlData GENERAL_CLIMATECONTROLDATA = new ClimateControlData(); + public static final ClimateData GENERAL_CLIMATEDATA = new ClimateData(); public static final SeatControlData GENERAL_SEATCONTROLDATA = new SeatControlData(); public static final RdsData GENERAL_RDSDATA = new RdsData(); public static final StationIDNumber GENERAL_STATIONIDNUMBER = new StationIDNumber(); @@ -427,6 +334,20 @@ public class TestValues { public static final DynamicUpdateCapabilities GENERAL_DYNAMICUPDATECAPABILITIES = new DynamicUpdateCapabilities(); public static final WindowState GENERAL_WINDOWSTATE = new WindowState(); + public static final SeatOccupancy GENERAL_SEAT_OCCUPANCY = new SeatOccupancy(); + public static final List<SeatStatus> GENERAL_SEATS_OCCUPIED = new ArrayList<SeatStatus>(1); + public static final List<SeatStatus> GENERAL_SEATS_BELTED = new ArrayList<SeatStatus>(1); + public static final SeatStatus GENERAL_SEAT_STATUS = new SeatStatus(); + public static final SeatLocation GENERAL_SEAT_LOCATION = new SeatLocation(); + public static final DoorStatusType GENERAL_DOOR_STATUS_TYPE = DoorStatusType.REMOVED; + + public static final DoorStatus GENERAL_DOOR_STATUS = new DoorStatus(); + public static final GateStatus GENERAL_GATE_STATUS = new GateStatus(); + public static final RoofStatus GENERAL_ROOF_STATUS = new RoofStatus(); + + public static final ArrayList<DoorStatus> GENERAL_DOOR_STATUS_LIST = new ArrayList<>(1); + public static final ArrayList<GateStatus> GENERAL_GATE_STATUS_LIST = new ArrayList<>(1); + public static final ArrayList<RoofStatus> GENERAL_ROOF_STATUS_LIST = new ArrayList<>(1); public static final VehicleDataResult GENERAL_OEM_CUSTOM_VEHICLE_DATA = new VehicleDataResult(); public static final TemplateConfiguration GENERAL_TEMPLATE_CONFIGURATION = new TemplateConfiguration(); @@ -446,7 +367,6 @@ public class TestValues { public static final FuelType GENERAL_FUELTYPE = FuelType.GASOLINE; public static final LockScreenConfig GENERAL_LOCKSCREENCONFIG = new LockScreenConfig(); public static final Grid GENERAL_GRID = new Grid(); - public static final SeatLocation GENERAL_SEAT_LOCATION = new SeatLocation(); public static final ModuleInfo GENERAL_MODULE_INFO = new ModuleInfo(); public static final StabilityControlsStatus GENERAL_STABILITY_CONTROL_STATUS = new StabilityControlsStatus(); public static final VehicleDataStatus GENERAL_ESC_SYSTEM = VehicleDataStatus.ON; @@ -591,6 +511,17 @@ public class TestValues { public static final JSONObject JSON_DISPLAYCAPABILITY = new JSONObject(); public static final JSONArray JSON_DISPLAYCAPABILITY_LIST = new JSONArray(); public static final JSONObject JSON_DYNAMICUPDATECAPABILITIES = new JSONObject(); + public static final JSONArray JSON_ROOF_STATUSES = new JSONArray(); + public static final JSONArray JSON_DOOR_STATUSES = new JSONArray(); + public static final JSONArray JSON_GATE_STATUSES = new JSONArray(); + public static final JSONObject JSON_ROOF_STATUS = new JSONObject(); + public static final JSONObject JSON_DOOR_STATUS = new JSONObject(); + public static final JSONObject JSON_GATE_STATUS = new JSONObject(); + public static final JSONObject JSON_SEEK_STREAMING_INDICATOR = new JSONObject(); + public static final JSONArray JSON_GENERAL_SEATS_OCCUPIED = new JSONArray(); + public static final JSONArray JSON_GENERAL_SEATS_BELTED = new JSONArray(); + public static final JSONObject JSON_OBJECT_GENERAL_SEATS_BELTED = new JSONObject(); + public static final JSONObject JSON_OBJECT_GENERAL_SEATS_OCCUPIED = new JSONObject(); static { GENERAL_TOUCHEVENTCAPABILITIES.setDoublePressAvailable(GENERAL_BOOLEAN); @@ -1154,7 +1085,46 @@ public class TestValues { GENERAL_STABILITY_CONTROL_STATUS.setEscSystem(GENERAL_ESC_SYSTEM); GENERAL_STABILITY_CONTROL_STATUS.setTrailerSwayControl(GENERAL_S_WAY_CONTROL); + // SEAT_OCCUPANCY + GENERAL_SEAT_LOCATION.setGrid(GENERAL_LOCATION_GRID); + + GENERAL_SEAT_STATUS.setConditionActive(GENERAL_BOOLEAN); + GENERAL_SEAT_STATUS.setSeatLocation(GENERAL_SEAT_LOCATION); + + GENERAL_SEATS_BELTED.add(GENERAL_SEAT_STATUS); + GENERAL_SEATS_OCCUPIED.add(GENERAL_SEAT_STATUS); + + GENERAL_SEAT_OCCUPANCY.setSeatsBelted(GENERAL_SEATS_BELTED); + GENERAL_SEAT_OCCUPANCY.setSeatsOccupied(GENERAL_SEATS_OCCUPIED); + + GENERAL_ROOF_STATUS.setLocation(GENERAL_GRID); + GENERAL_ROOF_STATUS.setState(GENERAL_WINDOW_STATE); + GENERAL_ROOF_STATUS.setStatus(GENERAL_DOOR_STATUS_TYPE); + GENERAL_ROOF_STATUS_LIST.add(GENERAL_ROOF_STATUS); + + GENERAL_GATE_STATUS.setLocation(GENERAL_GRID); + GENERAL_GATE_STATUS.setStatus(GENERAL_DOOR_STATUS_TYPE); + GENERAL_GATE_STATUS_LIST.add(GENERAL_GATE_STATUS); + + GENERAL_DOOR_STATUS.setLocation(GENERAL_GRID); + GENERAL_DOOR_STATUS.setStatus(GENERAL_DOOR_STATUS_TYPE); + GENERAL_DOOR_STATUS_LIST.add(GENERAL_DOOR_STATUS); + + // Climate Data + GENERAL_CLIMATEDATA.setAtmosphericPressure(GENERAL_FLOAT); + GENERAL_CLIMATEDATA.setCabinTemperature(GENERAL_TEMPERATURE); + GENERAL_CLIMATEDATA.setExternalTemperature(GENERAL_TEMPERATURE); + try { + + JSON_OBJECT_GENERAL_SEATS_OCCUPIED.put(SeatStatus.KEY_SEAT_LOCATION, GENERAL_SEAT_LOCATION.serializeJSON()); + JSON_OBJECT_GENERAL_SEATS_OCCUPIED.put(SeatStatus.KEY_CONDITION_ACTIVE, GENERAL_BOOLEAN); + JSON_GENERAL_SEATS_OCCUPIED.put(JSON_OBJECT_GENERAL_SEATS_OCCUPIED); + + JSON_OBJECT_GENERAL_SEATS_BELTED.put(SeatStatus.KEY_SEAT_LOCATION, GENERAL_SEAT_LOCATION.serializeJSON()); + JSON_OBJECT_GENERAL_SEATS_BELTED.put(SeatStatus.KEY_CONDITION_ACTIVE,GENERAL_BOOLEAN); + JSON_GENERAL_SEATS_BELTED.put(JSON_OBJECT_GENERAL_SEATS_BELTED); + JSON_HMIPERMISSIONS.put(HMIPermissions.KEY_ALLOWED, GENERAL_HMILEVEL_LIST); JSON_HMIPERMISSIONS.put(HMIPermissions.KEY_USER_DISALLOWED, GENERAL_HMILEVEL_LIST); @@ -1385,12 +1355,27 @@ public class TestValues { JSON_TEXTFIELDTYPES.put(MetadataType.MEDIA_ALBUM); JSON_TEXTFIELDTYPES.put(MetadataType.MEDIA_ARTIST); + JSON_GRID.put(SeatLocation.KEY_GRID, GENERAL_LOCATION_GRID.serializeJSON()); JSON_SEAT_LOCATIONS.put(JSON_GRID); JSON_MODULE_INFO.put(ModuleInfo.KEY_MODULE_ID, TestValues.GENERAL_STRING); JSON_MODULE_INFO.put(ModuleInfo.KEY_MODULE_LOCATION, TestValues.JSON_GRID); JSON_MODULE_INFO.put(ModuleInfo.KEY_MODULE_SERVICE_AREA, TestValues.JSON_GRID); JSON_MODULE_INFO.put(ModuleInfo.KEY_MULTIPLE_ACCESS_ALLOWED, TestValues.GENERAL_BOOLEAN); + JSON_ROOF_STATUS.put(RoofStatus.KEY_STATUS, GENERAL_DOOR_STATUS_TYPE); + JSON_ROOF_STATUS.put(RoofStatus.KEY_LOCATION, JSON_GRID); + JSON_ROOF_STATUS.put(RoofStatus.KEY_STATE, GENERAL_WINDOW_STATE.serializeJSON()); + + JSON_DOOR_STATUS.put(DoorStatus.KEY_STATUS, GENERAL_DOOR_STATUS_TYPE); + JSON_DOOR_STATUS.put(DoorStatus.KEY_LOCATION, JSON_GRID); + + JSON_GATE_STATUS.put(GateStatus.KEY_STATUS, GENERAL_DOOR_STATUS_TYPE); + JSON_GATE_STATUS.put(GateStatus.KEY_LOCATION, JSON_GRID); + + JSON_ROOF_STATUSES.put(JSON_ROOF_STATUS); + JSON_DOOR_STATUSES.put(JSON_DOOR_STATUS); + JSON_GATE_STATUSES.put(JSON_GATE_STATUS); + JSON_SEEK_STREAMING_INDICATOR.put(SeekStreamingIndicator.KEY_TYPE, SeekIndicatorType.TRACK); } catch (JSONException e) { Log.e("Test", "Static Json Construction Failed.", e); diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/Validator.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/Validator.java index 724be920b..6db76934f 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/Validator.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/Validator.java @@ -3910,6 +3910,23 @@ public class Validator { return approxPosition1.equals(approxPosition2) && deviation1.equals(deviation2); } + public static boolean validateSeatOccupancies(SeatOccupancy item1, SeatOccupancy item2) { + if (item1 == null) { + return (item2 == null); + } + if (item2 == null) { + return (item1 == null); + } + + List<SeatStatus> seatsBelted1 = item1.getSeatsBelted(); + List<SeatStatus> seatsOccupied1 = item1.getSeatsOccupied(); + + List<SeatStatus> seatsBelted2 = item2.getSeatsBelted(); + List<SeatStatus> seatsOccupied2 = item2.getSeatsOccupied(); + + return validateSeatStatuses(seatsBelted1, seatsBelted2) && validateSeatStatuses(seatsOccupied1, seatsOccupied2); + } + public static boolean validateStabilityControlStatus(StabilityControlsStatus status1, StabilityControlsStatus status2) { if (status1 == null) { return (status2 == null); @@ -3929,4 +3946,98 @@ public class Validator { } return status1.getDataType().equals(status2.getDataType()) && status1.getResultCode().equals(status2.getResultCode()); } + + public static boolean validateSeatStatuses(List<SeatStatus> seatStatusesItem1, List<SeatStatus> seatStatusesItem2) { + if (seatStatusesItem1 == null) { + return (seatStatusesItem2 == null); + } + if (seatStatusesItem2 == null) { + return (seatStatusesItem1 == null); + } + + if (seatStatusesItem1.size() != seatStatusesItem2.size()) { + return false; + } + + Iterator<SeatStatus> iterator1 = seatStatusesItem1.iterator(); + Iterator<SeatStatus> iterator2 = seatStatusesItem2.iterator(); + + while (iterator1.hasNext() && iterator2.hasNext()) { + SeatStatus seatStatus1 = iterator1.next(); + SeatStatus seatStatus2 = iterator2.next(); + + if (!validateSeatStatus(seatStatus1, seatStatus2)) { + return false; + } + } + + return true; + } + + public static boolean validateSeatStatus(SeatStatus item1, SeatStatus item2) { + if (item1 == null) { + return (item2 == null); + } + if (item2 == null) { + return (item1 == null); + } + + if (item1.getConditionActive() != item2.getConditionActive()) { + return false; + } + + return validateSeatLocation(item1.getSeatLocation(), item2.getSeatLocation()); + } + + public static boolean validateDoorStatus(DoorStatus status1, DoorStatus status2) { + if (status1 == null) { + return (status2 == null); + } + if (status2 == null) { + return (status2 == null); + } + boolean gridValidated = validateGrid(status1.getLocation(), status2.getLocation()); + return gridValidated && status1.getStatus().equals(status2.getStatus()); + } + + public static boolean validateGateStatus(GateStatus status1, GateStatus status2) { + if (status1 == null) { + return (status2 == null); + } + if (status2 == null) { + return (status2 == null); + } + boolean gridValidated = validateGrid(status1.getLocation(), status2.getLocation()); + return gridValidated && status1.getStatus().equals(status2.getStatus()); + } + + public static boolean validateRoofStatus(RoofStatus status1, RoofStatus status2) { + if (status1 == null) { + return (status2 == null); + } + if (status2 == null) { + return (status2 == null); + } + boolean gridValidated = validateGrid(status1.getLocation(), status2.getLocation()); + return gridValidated && status1.getStatus().equals(status2.getStatus()) && validateWindowStates(status1.getState(), status2.getState()); + } + + public static boolean validateClimateData(ClimateData climateData1, ClimateData climateData2) { + if (climateData1 == null) { + return (climateData2 == null); + } + if (climateData2 == null) { + return (climateData1 == null); + } + + if (!validateTemperature(climateData1.getExternalTemperature(), climateData2.getExternalTemperature())) { + return false; + } + + if (!validateTemperature(climateData1.getCabinTemperature(), climateData2.getCabinTemperature())) { + return false; + } + + return climateData1.getAtmosphericPressure().floatValue() == climateData2.getAtmosphericPressure().floatValue(); + } } diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/VehicleDataHelper.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/VehicleDataHelper.java index a13486983..a53e6aa69 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/VehicleDataHelper.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/VehicleDataHelper.java @@ -3,6 +3,7 @@ package com.smartdevicelink.test; import com.smartdevicelink.proxy.rpc.AirbagStatus; import com.smartdevicelink.proxy.rpc.BeltStatus; import com.smartdevicelink.proxy.rpc.BodyInformation; +import com.smartdevicelink.proxy.rpc.ClimateData; import com.smartdevicelink.proxy.rpc.ClusterModeStatus; import com.smartdevicelink.proxy.rpc.DeviceStatus; import com.smartdevicelink.proxy.rpc.ECallInfo; @@ -15,8 +16,12 @@ import com.smartdevicelink.proxy.rpc.Grid; import com.smartdevicelink.proxy.rpc.HeadLampStatus; import com.smartdevicelink.proxy.rpc.MyKey; import com.smartdevicelink.proxy.rpc.OnVehicleData; +import com.smartdevicelink.proxy.rpc.SeatLocation; +import com.smartdevicelink.proxy.rpc.SeatOccupancy; +import com.smartdevicelink.proxy.rpc.SeatStatus; import com.smartdevicelink.proxy.rpc.SingleTireStatus; import com.smartdevicelink.proxy.rpc.StabilityControlsStatus; +import com.smartdevicelink.proxy.rpc.Temperature; import com.smartdevicelink.proxy.rpc.TireStatus; import com.smartdevicelink.proxy.rpc.WindowState; import com.smartdevicelink.proxy.rpc.WindowStatus; @@ -38,6 +43,7 @@ import com.smartdevicelink.proxy.rpc.enums.PRNDL; import com.smartdevicelink.proxy.rpc.enums.PowerModeQualificationStatus; import com.smartdevicelink.proxy.rpc.enums.PowerModeStatus; import com.smartdevicelink.proxy.rpc.enums.PrimaryAudioSource; +import com.smartdevicelink.proxy.rpc.enums.TemperatureUnit; import com.smartdevicelink.proxy.rpc.enums.TransmissionType; import com.smartdevicelink.proxy.rpc.enums.TurnSignal; import com.smartdevicelink.proxy.rpc.enums.VehicleDataEventStatus; @@ -90,6 +96,15 @@ public class VehicleDataHelper { public static final String OEM_CUSTOM_VEHICLE_DATA_STATE = "oemCustomVehicleDataState"; public static final Boolean HANDS_OFF_STEERING = Boolean.TRUE; + // Climate Data + public static final ClimateData CLIMATE_DATA = new ClimateData(); + public static final Float CLIMATE_DATA_ATM_PRESSURE = TestValues.GENERAL_FLOAT; + public static final Temperature CLIMATE_DATA_CABIN_TEMP = new Temperature(TemperatureUnit.CELSIUS, TestValues.GENERAL_FLOAT); + public static final Temperature CLIMATE_DATA_EXT_TEMP = new Temperature(TemperatureUnit.CELSIUS, TestValues.GENERAL_FLOAT); + + // Seat Occupancy + public static final SeatOccupancy SEAT_OCCUPANCY = new SeatOccupancy(); + //other variables inside some of the above objects // tire status public static final WarningLightStatus TIRE_PRESSURE_TELL_TALE = WarningLightStatus.ON; @@ -226,6 +241,11 @@ public class VehicleDataHelper { //GetVehicleDataResponse data which stores the same things public static final GetVehicleDataResponse VEHICLE_DATA_RESPONSE = new GetVehicleDataResponse(); + public static final List<SeatStatus> SEATS_OCCUPIED = new ArrayList<SeatStatus>(1); + public static final List<SeatStatus> SEATS_BELTED = new ArrayList<SeatStatus>(1); + public static final SeatStatus SEAT_STATUS = new SeatStatus(); + public static final SeatLocation SEAT_LOCATION = new SeatLocation(); + static { //TIRE_PRESSURE set up TIRE_PRESSURE.setPressureTellTale(TIRE_PRESSURE_TELL_TALE); @@ -335,6 +355,11 @@ public class VehicleDataHelper { EMERGENCY_EVENT.setMaximumChangeVelocity(EMERGENCY_EVENT_MAX_CHANGE_VELOCITY); EMERGENCY_EVENT.setMultipleEvents(EMERGENCY_EVENT_MULTIPLE_EVENTS); + // Climate Data + CLIMATE_DATA.setAtmosphericPressure(CLIMATE_DATA_ATM_PRESSURE); + CLIMATE_DATA.setCabinTemperature(CLIMATE_DATA_CABIN_TEMP); + CLIMATE_DATA.setExternalTemperature(CLIMATE_DATA_EXT_TEMP); + //CLUSTER_MODE_STATUS set up CLUSTER_MODE_STATUS.setPowerModeActive(CLUSTER_MODE_STATUS_POWER_MODE_ACTIVE); CLUSTER_MODE_STATUS.setPowerModeQualificationStatus(CLUSTER_MODE_STATUS_POWER_MODE_QUALIFICATION_STATUS); @@ -373,10 +398,23 @@ public class VehicleDataHelper { GEAR_STATUS.setUserSelectedGear(USER_SELECTED_GEAR); GEAR_STATUS.setActualGear(ACTUAL_GEAR); + // SEAT_OCCUPANCY + SEAT_LOCATION.setGrid(LOCATION_GRID); + + SEAT_STATUS.setConditionActive(true); + SEAT_STATUS.setSeatLocation(SEAT_LOCATION); + + SEATS_BELTED.add(SEAT_STATUS); + SEATS_OCCUPIED.add(SEAT_STATUS); + + SEAT_OCCUPANCY.setSeatsBelted(SEATS_BELTED); + SEAT_OCCUPANCY.setSeatsOccupied(SEATS_OCCUPIED); + //set up the OnVehicleData object VEHICLE_DATA.setSpeed(SPEED); VEHICLE_DATA.setRpm(RPM); VEHICLE_DATA.setExternalTemperature(EXTERNAL_TEMPERATURE); + VEHICLE_DATA.setClimateData(CLIMATE_DATA); VEHICLE_DATA.setFuelLevel(FUEL_LEVEL); VEHICLE_DATA.setVin(VIN); VEHICLE_DATA.setPrndl(PRNDL_FINAL); @@ -408,10 +446,12 @@ public class VehicleDataHelper { VEHICLE_DATA.setStabilityControlsStatus(STABILITY_CONTROLS_STATUS); VEHICLE_DATA.setOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME, OEM_CUSTOM_VEHICLE_DATA_STATE); VEHICLE_DATA.setHandsOffSteering(HANDS_OFF_STEERING); + VEHICLE_DATA.setSeatOccupancy(SEAT_OCCUPANCY); //set up the GetVehicleDataResponse object VEHICLE_DATA_RESPONSE.setSpeed(SPEED); VEHICLE_DATA_RESPONSE.setRpm(RPM); VEHICLE_DATA_RESPONSE.setExternalTemperature(EXTERNAL_TEMPERATURE); + VEHICLE_DATA_RESPONSE.setClimateData(CLIMATE_DATA); VEHICLE_DATA_RESPONSE.setFuelLevel(FUEL_LEVEL); VEHICLE_DATA_RESPONSE.setVin(VIN); VEHICLE_DATA_RESPONSE.setPrndl(PRNDL_FINAL); @@ -443,6 +483,7 @@ public class VehicleDataHelper { VEHICLE_DATA_RESPONSE.setStabilityControlsStatus(STABILITY_CONTROLS_STATUS); VEHICLE_DATA_RESPONSE.setOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME, OEM_CUSTOM_VEHICLE_DATA_STATE); VEHICLE_DATA_RESPONSE.setHandsOffSteering(HANDS_OFF_STEERING); + VEHICLE_DATA_RESPONSE.setSeatOccupancy(SEAT_OCCUPANCY); } private VehicleDataHelper() { diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/RPCStructTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/RPCStructTests.java index 3cb7a1f3c..da539eba7 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/RPCStructTests.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/proxy/RPCStructTests.java @@ -1,5 +1,6 @@ package com.smartdevicelink.test.proxy; +import com.smartdevicelink.proxy.RPCMessage; import com.smartdevicelink.proxy.RPCStruct; import com.smartdevicelink.proxy.rpc.AirbagStatus; import com.smartdevicelink.proxy.rpc.Choice; @@ -183,4 +184,62 @@ public class RPCStructTests extends TestCase { fail(e.getMessage()); } } + + public void testClone() { + Hashtable<String, Object> map = new Hashtable<>(); + String key = "test"; + Integer value = 42; + map.put(key, value); + + RPCStruct rpcStruct = new RPCStruct(map); + rpcStruct.setPayloadProtected(true); + RPCStruct rpcClone = rpcStruct.clone(); + + assertEquals(rpcStruct.getStore().get("test"), rpcClone.getStore().get("test")); + assertTrue(rpcClone.isPayloadProtected()); + } + + public void testHashCode() { + Hashtable<String, Object> map = new Hashtable<>(); + String key = "test"; + Integer value = 42; + map.put(key, value); + + RPCStruct rpcStruct = new RPCStruct(map); + RPCStruct rpcStruct2 = new RPCStruct(map); + + Hashtable<String, Object> map2 = new Hashtable<>(); + String key2 = "test2"; + Integer value2 = 24; + map2.put(key2, value2); + + RPCStruct rpcStruct3 = new RPCStruct(map2); + + assertEquals(rpcStruct.hashCode(), rpcStruct2.hashCode()); + assertNotSame(rpcStruct2.hashCode(), rpcStruct3.hashCode()); + } + + public void testEquals() { + Hashtable<String, Object> map = new Hashtable<>(); + String key = "test"; + Integer value = 42; + map.put(key, value); + + RPCStruct rpcStruct = new RPCStruct(map); + + RPCStruct rpcClone = rpcStruct.clone(); + + RPCStruct rpcNull = new RPCStruct(null); + + RPCMessage nonStruct = new RPCMessage("TEST"); + + RPCStruct rpcStruct2 = new RPCStruct(map); + + assertFalse(rpcStruct.equals(null)); + assertTrue(rpcStruct.equals(rpcStruct)); + assertFalse(rpcStruct.equals(nonStruct)); + assertFalse(rpcStruct.equals(rpcNull)); + assertTrue(rpcStruct.equals(rpcStruct2)); + assertTrue(rpcStruct.equals(rpcClone)); + } } diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/RPCGenericTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/RPCGenericTests.java index 178c7a125..e4a61b9ed 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/RPCGenericTests.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/RPCGenericTests.java @@ -5,6 +5,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4; import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.xmlpull.v1.XmlPullParser; @@ -45,6 +46,7 @@ import static junit.framework.TestCase.fail; * - The enums have a value for every element in the spec and the names and deprecation status match the spec */ @RunWith(AndroidJUnit4.class) +@Ignore //Remove this annotation before running these tests public class RPCGenericTests { private final String XML_FILE_NAME = "MOBILE_API.xml"; diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/BodyInformationTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/BodyInformationTests.java index 1db5aa77a..f0a33599a 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/BodyInformationTests.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/BodyInformationTests.java @@ -1,18 +1,29 @@ package com.smartdevicelink.test.rpc.datatypes; +import com.smartdevicelink.marshal.JsonRPCMarshaller; import com.smartdevicelink.proxy.rpc.BodyInformation; +import com.smartdevicelink.proxy.rpc.DoorStatus; +import com.smartdevicelink.proxy.rpc.GateStatus; +import com.smartdevicelink.proxy.rpc.RoofStatus; import com.smartdevicelink.proxy.rpc.enums.IgnitionStableStatus; import com.smartdevicelink.proxy.rpc.enums.IgnitionStatus; import com.smartdevicelink.test.JsonUtils; import com.smartdevicelink.test.TestValues; +import com.smartdevicelink.test.Validator; import junit.framework.TestCase; +import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import java.util.Hashtable; import java.util.Iterator; +import static com.smartdevicelink.proxy.rpc.BodyInformation.KEY_DOOR_STATUSES; +import static com.smartdevicelink.proxy.rpc.BodyInformation.KEY_GATE_STATUSES; +import static com.smartdevicelink.proxy.rpc.BodyInformation.KEY_ROOF_STATUSES; + /** * This is a unit test class for the SmartDeviceLink library project class : * {@link com.smartdevicelink.proxy.rpc.BodyInformation} @@ -32,6 +43,10 @@ public class BodyInformationTests extends TestCase { msg.setPassengerDoorAjar(TestValues.GENERAL_BOOLEAN); msg.setRearLeftDoorAjar(TestValues.GENERAL_BOOLEAN); msg.setRearRightDoorAjar(TestValues.GENERAL_BOOLEAN); + + msg.setDoorStatuses(TestValues.GENERAL_DOOR_STATUS_LIST); + msg.setGateStatuses(TestValues.GENERAL_GATE_STATUS_LIST); + msg.setRoofStatuses(TestValues.GENERAL_ROOF_STATUS_LIST); } /** @@ -52,6 +67,9 @@ public class BodyInformationTests extends TestCase { assertEquals(TestValues.MATCH, TestValues.GENERAL_BOOLEAN, (boolean) msg.getPassengerDoorAjar()); assertEquals(TestValues.MATCH, TestValues.GENERAL_BOOLEAN, (boolean) msg.getRearLeftDoorAjar()); assertEquals(TestValues.MATCH, TestValues.GENERAL_BOOLEAN, (boolean) msg.getRearRightDoorAjar()); + assertEquals(TestValues.MATCH, TestValues.GENERAL_GATE_STATUS_LIST, msg.getGateStatuses()); + assertEquals(TestValues.MATCH, TestValues.GENERAL_ROOF_STATUS_LIST, msg.getRoofStatuses()); + assertEquals(TestValues.MATCH, TestValues.GENERAL_DOOR_STATUS_LIST, msg.getDoorStatuses()); // Invalid/Null Tests BodyInformation msg = new BodyInformation(); @@ -64,6 +82,9 @@ public class BodyInformationTests extends TestCase { assertNull(TestValues.NULL, msg.getPassengerDoorAjar()); assertNull(TestValues.NULL, msg.getRearLeftDoorAjar()); assertNull(TestValues.NULL, msg.getRearRightDoorAjar()); + assertNull(TestValues.NULL, msg.getGateStatuses()); + assertNull(TestValues.NULL, msg.getRoofStatuses()); + assertNull(TestValues.NULL, msg.getDoorStatuses()); } public void testJson() { @@ -77,6 +98,9 @@ public class BodyInformationTests extends TestCase { reference.put(BodyInformation.KEY_PASSENGER_DOOR_AJAR, TestValues.GENERAL_BOOLEAN); reference.put(BodyInformation.KEY_REAR_LEFT_DOOR_AJAR, TestValues.GENERAL_BOOLEAN); reference.put(BodyInformation.KEY_REAR_RIGHT_DOOR_AJAR, TestValues.GENERAL_BOOLEAN); + reference.put(KEY_DOOR_STATUSES, TestValues.JSON_DOOR_STATUSES); + reference.put(KEY_GATE_STATUSES, TestValues.JSON_GATE_STATUSES); + reference.put(KEY_ROOF_STATUSES, TestValues.JSON_ROOF_STATUSES); JSONObject underTest = msg.serializeJSON(); assertEquals(TestValues.MATCH, reference.length(), underTest.length()); @@ -84,7 +108,39 @@ public class BodyInformationTests extends TestCase { Iterator<?> iterator = reference.keys(); while (iterator.hasNext()) { String key = (String) iterator.next(); - assertEquals(TestValues.MATCH, JsonUtils.readObjectFromJsonObject(reference, key), JsonUtils.readObjectFromJsonObject(underTest, key)); + if (key.equals(KEY_DOOR_STATUSES)) { + + JSONArray array1 = JsonUtils.readJsonArrayFromJsonObject(reference, key); + JSONArray array2 = JsonUtils.readJsonArrayFromJsonObject(underTest, key); + + for (int i = 0; i < array1.length(); i++) { + Hashtable<String, Object> h1 = JsonRPCMarshaller.deserializeJSONObject(array1.getJSONObject(i)); + Hashtable<String, Object> h2 = JsonRPCMarshaller.deserializeJSONObject(array2.getJSONObject(i)); + assertTrue(Validator.validateDoorStatus(new DoorStatus(h1), new DoorStatus(h2))); + + } + } else if (key.equals(KEY_GATE_STATUSES)) { + + JSONArray array1 = JsonUtils.readJsonArrayFromJsonObject(reference, key); + JSONArray array2 = JsonUtils.readJsonArrayFromJsonObject(underTest, key); + + for (int i = 0; i < array1.length(); i++) { + Hashtable<String, Object> h1 = JsonRPCMarshaller.deserializeJSONObject(array1.getJSONObject(i)); + Hashtable<String, Object> h2 = JsonRPCMarshaller.deserializeJSONObject(array2.getJSONObject(i)); + assertTrue(Validator.validateGateStatus(new GateStatus(h1), new GateStatus(h2))); + } + } else if (key.equals(KEY_ROOF_STATUSES)) { + JSONArray array1 = JsonUtils.readJsonArrayFromJsonObject(reference, key); + JSONArray array2 = JsonUtils.readJsonArrayFromJsonObject(underTest, key); + + for (int i = 0; i < array1.length(); i++) { + Hashtable<String, Object> h1 = JsonRPCMarshaller.deserializeJSONObject(array1.getJSONObject(i)); + Hashtable<String, Object> h2 = JsonRPCMarshaller.deserializeJSONObject(array2.getJSONObject(i)); + assertTrue(Validator.validateRoofStatus(new RoofStatus(h1), new RoofStatus(h2))); + } + } else { + assertEquals(TestValues.MATCH, JsonUtils.readObjectFromJsonObject(reference, key), JsonUtils.readObjectFromJsonObject(underTest, key)); + } } } catch (JSONException e) { fail(TestValues.JSON_FAIL); diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/ClimateDataTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/ClimateDataTests.java new file mode 100644 index 000000000..4fb5e9c0f --- /dev/null +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/ClimateDataTests.java @@ -0,0 +1,83 @@ +package com.smartdevicelink.test.rpc.datatypes; + +import com.smartdevicelink.marshal.JsonRPCMarshaller; +import com.smartdevicelink.proxy.rpc.ClimateData; +import com.smartdevicelink.proxy.rpc.Temperature; +import com.smartdevicelink.test.JsonUtils; +import com.smartdevicelink.test.TestValues; +import com.smartdevicelink.test.Validator; + +import junit.framework.TestCase; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.Hashtable; +import java.util.Iterator; + +public class ClimateDataTests extends TestCase { + + private ClimateData msg; + + @Override + public void setUp() { + msg = new ClimateData(); + + msg.setExternalTemperature(TestValues.GENERAL_TEMPERATURE); + msg.setCabinTemperature(TestValues.GENERAL_TEMPERATURE); + msg.setAtmosphericPressure(TestValues.GENERAL_FLOAT); + } + + /** + * Tests the expected values of the RPC message. + */ + public void testRpcValues() { + // Test Values + Temperature cabinTemperature = msg.getCabinTemperature(); + Temperature externalTemperature = msg.getExternalTemperature(); + Float atmosphericPressure = msg.getAtmosphericPressure(); + + // Valid Tests + assertEquals(TestValues.MATCH, TestValues.GENERAL_TEMPERATURE, cabinTemperature); + assertEquals(TestValues.MATCH, TestValues.GENERAL_TEMPERATURE, externalTemperature); + assertEquals(TestValues.MATCH, TestValues.GENERAL_FLOAT, atmosphericPressure); + + // Invalid/Null Tests + ClimateData msg = new ClimateData(); + assertNotNull(TestValues.NOT_NULL, msg); + + assertNull(TestValues.NULL, msg.getAtmosphericPressure()); + assertNull(TestValues.NULL, msg.getCabinTemperature()); + assertNull(TestValues.NULL, msg.getExternalTemperature()); + } + + public void testJson() { + JSONObject reference = new JSONObject(); + + try { + reference.put(ClimateData.KEY_EXTERNAL_TEMPERATURE, JsonRPCMarshaller.serializeHashtable(TestValues.GENERAL_TEMPERATURE.getStore())); + reference.put(ClimateData.KEY_CABIN_TEMPERATURE, JsonRPCMarshaller.serializeHashtable(TestValues.GENERAL_TEMPERATURE.getStore())); + reference.put(ClimateData.KEY_ATMOSPHERIC_PRESSURE, TestValues.GENERAL_FLOAT); + + JSONObject underTest = msg.serializeJSON(); + assertEquals(TestValues.MATCH, reference.length(), underTest.length()); + + Iterator<?> iterator = reference.keys(); + while (iterator.hasNext()) { + String key = (String) iterator.next(); + + if (key.equals(ClimateData.KEY_CABIN_TEMPERATURE) || key.equals(ClimateData.KEY_EXTERNAL_TEMPERATURE)) { + JSONObject objectEquals = (JSONObject) JsonUtils.readObjectFromJsonObject(reference, key); + JSONObject testEquals = (JSONObject) JsonUtils.readObjectFromJsonObject(underTest, key); + Hashtable<String, Object> hashReference = JsonRPCMarshaller.deserializeJSONObject(objectEquals); + Hashtable<String, Object> hashTest = JsonRPCMarshaller.deserializeJSONObject(testEquals); + assertTrue(TestValues.TRUE, Validator.validateTemperature(new Temperature(hashReference), new Temperature(hashTest))); + } else { + assertEquals(TestValues.MATCH, JsonUtils.readObjectFromJsonObject(reference, key), JsonUtils.readObjectFromJsonObject(underTest, key)); + } + } + } catch (JSONException e) { + fail(TestValues.JSON_FAIL); + } + } +} diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/DoorStatusTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/DoorStatusTests.java new file mode 100644 index 000000000..cae1001c3 --- /dev/null +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/DoorStatusTests.java @@ -0,0 +1,65 @@ +package com.smartdevicelink.test.rpc.datatypes; + +import com.smartdevicelink.marshal.JsonRPCMarshaller; +import com.smartdevicelink.proxy.rpc.DoorStatus; +import com.smartdevicelink.proxy.rpc.Grid; +import com.smartdevicelink.proxy.rpc.RoofStatus; +import com.smartdevicelink.proxy.rpc.enums.DoorStatusType; +import com.smartdevicelink.test.JsonUtils; +import com.smartdevicelink.test.TestValues; +import com.smartdevicelink.test.Validator; + +import junit.framework.TestCase; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.Hashtable; +import java.util.Iterator; + +public class DoorStatusTests extends TestCase { + private DoorStatus msg; + + @Override + public void setUp() { + msg = new DoorStatus(TestValues.GENERAL_GRID, TestValues.GENERAL_DOOR_STATUS_TYPE); + } + + public void testRpcValues() { + // Test Values + Grid location = msg.getLocation(); + DoorStatusType status = msg.getStatus(); + + // Valid Tests + assertEquals(TestValues.MATCH, TestValues.GENERAL_GRID, location); + assertEquals(TestValues.MATCH, TestValues.GENERAL_DOOR_STATUS_TYPE, status); + } + + public void testJson() { + JSONObject reference = new JSONObject(); + + try { + reference.put(RoofStatus.KEY_STATUS, TestValues.GENERAL_DOOR_STATUS_TYPE); + reference.put(RoofStatus.KEY_LOCATION, TestValues.JSON_GRID); + + JSONObject underTest = msg.serializeJSON(); + assertEquals(TestValues.MATCH, reference.length(), underTest.length()); + + Iterator<?> iterator = reference.keys(); + while (iterator.hasNext()) { + String key = (String) iterator.next(); + if (key.equals(RoofStatus.KEY_LOCATION)) { + Hashtable<String, Object> hs1 = JsonRPCMarshaller.deserializeJSONObject((JSONObject) JsonUtils.readObjectFromJsonObject(reference, key)); + Hashtable<String, Object> hs2 = JsonRPCMarshaller.deserializeJSONObject((JSONObject) JsonUtils.readObjectFromJsonObject(underTest, key)); + + assertTrue(Validator.validateGrid(new Grid(hs1), new Grid(hs2))); + + } else { + assertEquals(TestValues.MATCH, JsonUtils.readObjectFromJsonObject(reference, key), JsonUtils.readObjectFromJsonObject(underTest, key)); + } + } + } catch (JSONException e) { + fail(TestValues.JSON_FAIL); + } + } +} diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/GateStatusTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/GateStatusTests.java new file mode 100644 index 000000000..7bb8da021 --- /dev/null +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/GateStatusTests.java @@ -0,0 +1,65 @@ +package com.smartdevicelink.test.rpc.datatypes; + +import com.smartdevicelink.marshal.JsonRPCMarshaller; +import com.smartdevicelink.proxy.rpc.GateStatus; +import com.smartdevicelink.proxy.rpc.Grid; +import com.smartdevicelink.proxy.rpc.RoofStatus; +import com.smartdevicelink.proxy.rpc.enums.DoorStatusType; +import com.smartdevicelink.test.JsonUtils; +import com.smartdevicelink.test.TestValues; +import com.smartdevicelink.test.Validator; + +import junit.framework.TestCase; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.Hashtable; +import java.util.Iterator; + +public class GateStatusTests extends TestCase { + private GateStatus msg; + + @Override + public void setUp() { + msg = new GateStatus(TestValues.GENERAL_GRID, TestValues.GENERAL_DOOR_STATUS_TYPE); + } + + public void testRpcValues() { + // Test Values + Grid location = msg.getLocation(); + DoorStatusType status = msg.getStatus(); + + // Valid Tests + assertEquals(TestValues.MATCH, TestValues.GENERAL_GRID, location); + assertEquals(TestValues.MATCH, TestValues.GENERAL_DOOR_STATUS_TYPE, status); + } + + public void testJson() { + JSONObject reference = new JSONObject(); + + try { + reference.put(RoofStatus.KEY_STATUS, TestValues.GENERAL_DOOR_STATUS_TYPE); + reference.put(RoofStatus.KEY_LOCATION, TestValues.JSON_GRID); + + JSONObject underTest = msg.serializeJSON(); + assertEquals(TestValues.MATCH, reference.length(), underTest.length()); + + Iterator<?> iterator = reference.keys(); + while (iterator.hasNext()) { + String key = (String) iterator.next(); + if (key.equals(RoofStatus.KEY_LOCATION)) { + Hashtable<String, Object> hs1 = JsonRPCMarshaller.deserializeJSONObject((JSONObject) JsonUtils.readObjectFromJsonObject(reference, key)); + Hashtable<String, Object> hs2 = JsonRPCMarshaller.deserializeJSONObject((JSONObject) JsonUtils.readObjectFromJsonObject(underTest, key)); + + assertTrue(Validator.validateGrid(new Grid(hs1), new Grid(hs2))); + + } else { + assertEquals(TestValues.MATCH, JsonUtils.readObjectFromJsonObject(reference, key), JsonUtils.readObjectFromJsonObject(underTest, key)); + } + } + } catch (JSONException e) { + fail(TestValues.JSON_FAIL); + } + } +} diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/RoofStatusTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/RoofStatusTests.java new file mode 100644 index 000000000..5d30cdb15 --- /dev/null +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/RoofStatusTests.java @@ -0,0 +1,75 @@ +package com.smartdevicelink.test.rpc.datatypes; + +import com.smartdevicelink.marshal.JsonRPCMarshaller; +import com.smartdevicelink.proxy.rpc.Grid; +import com.smartdevicelink.proxy.rpc.RoofStatus; +import com.smartdevicelink.proxy.rpc.WindowState; +import com.smartdevicelink.proxy.rpc.enums.DoorStatusType; +import com.smartdevicelink.test.JsonUtils; +import com.smartdevicelink.test.TestValues; +import com.smartdevicelink.test.Validator; + +import junit.framework.TestCase; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.Hashtable; +import java.util.Iterator; + +public class RoofStatusTests extends TestCase { + + private RoofStatus msg; + + @Override + public void setUp() { + msg = new RoofStatus(TestValues.GENERAL_GRID, TestValues.GENERAL_DOOR_STATUS_TYPE); + msg.setState(TestValues.GENERAL_WINDOW_STATE); + } + + public void testRpcValues() { + // Test Values + Grid location = msg.getLocation(); + DoorStatusType status = msg.getStatus(); + WindowState windowState = msg.getState(); + + // Valid Tests + assertEquals(TestValues.MATCH, TestValues.GENERAL_GRID, location); + assertEquals(TestValues.MATCH, TestValues.GENERAL_DOOR_STATUS_TYPE, status); + assertEquals(TestValues.MATCH, TestValues.GENERAL_WINDOW_STATE, windowState); + } + + public void testJson() { + JSONObject reference = new JSONObject(); + + try { + reference.put(RoofStatus.KEY_STATUS, TestValues.GENERAL_DOOR_STATUS_TYPE); + reference.put(RoofStatus.KEY_STATE, TestValues.GENERAL_WINDOW_STATE.serializeJSON()); + reference.put(RoofStatus.KEY_LOCATION, TestValues.JSON_GRID); + + JSONObject underTest = msg.serializeJSON(); + assertEquals(TestValues.MATCH, reference.length(), underTest.length()); + + Iterator<?> iterator = reference.keys(); + while (iterator.hasNext()) { + String key = (String) iterator.next(); + if (key.equals(RoofStatus.KEY_STATE)) { + Hashtable<String, Object> hs1 = JsonRPCMarshaller.deserializeJSONObject((JSONObject) JsonUtils.readObjectFromJsonObject(reference, key)); + Hashtable<String, Object> hs2 = JsonRPCMarshaller.deserializeJSONObject((JSONObject) JsonUtils.readObjectFromJsonObject(underTest, key)); + + assertTrue(Validator.validateWindowStates(new WindowState(hs1), new WindowState(hs2))); + } else if (key.equals(RoofStatus.KEY_LOCATION)) { + Hashtable<String, Object> hs1 = JsonRPCMarshaller.deserializeJSONObject((JSONObject) JsonUtils.readObjectFromJsonObject(reference, key)); + Hashtable<String, Object> hs2 = JsonRPCMarshaller.deserializeJSONObject((JSONObject) JsonUtils.readObjectFromJsonObject(underTest, key)); + + assertTrue(Validator.validateGrid(new Grid(hs1), new Grid(hs2))); + + } else { + assertEquals(TestValues.MATCH, JsonUtils.readObjectFromJsonObject(reference, key), JsonUtils.readObjectFromJsonObject(underTest, key)); + } + } + } catch (JSONException e) { + fail(TestValues.JSON_FAIL); + } + } +} diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SeatOccupancyTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SeatOccupancyTests.java new file mode 100644 index 000000000..70da261b0 --- /dev/null +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SeatOccupancyTests.java @@ -0,0 +1,83 @@ +package com.smartdevicelink.test.rpc.datatypes; + + +import com.smartdevicelink.marshal.JsonRPCMarshaller; +import com.smartdevicelink.proxy.rpc.SeatOccupancy; +import com.smartdevicelink.proxy.rpc.SeatStatus; +import com.smartdevicelink.test.JsonUtils; +import com.smartdevicelink.test.TestValues; +import com.smartdevicelink.test.Validator; + +import junit.framework.TestCase; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.Hashtable; +import java.util.Iterator; +import java.util.List; + +public class SeatOccupancyTests extends TestCase { + + private SeatOccupancy msg; + + @Override + public void setUp() { + msg = new SeatOccupancy(); + + msg.setSeatsOccupied(TestValues.GENERAL_SEATS_OCCUPIED); + msg.setSeatsBelted(TestValues.GENERAL_SEATS_BELTED); + } + + /** + * Tests the expected values of the RPC message. + */ + public void testRpcValues() { + // Test Values + List<SeatStatus> seatsBelted = msg.getSeatsBelted(); + List<SeatStatus> seatsOccupied = msg.getSeatsOccupied(); + + // Valid Tests + assertEquals(TestValues.MATCH, TestValues.GENERAL_SEATS_BELTED, seatsBelted); + assertEquals(TestValues.MATCH, TestValues.GENERAL_SEATS_OCCUPIED, seatsOccupied); + + // Invalid/Null Tests + SeatOccupancy msg = new SeatOccupancy(); + assertNotNull(TestValues.NOT_NULL, msg); + + assertNull(TestValues.NULL, msg.getSeatsBelted()); + assertNull(TestValues.NULL, msg.getSeatsOccupied()); + } + + public void testJson() { + JSONObject reference = new JSONObject(); + + try { + reference.put(SeatOccupancy.KEY_SEATS_OCCUPIED, TestValues.JSON_GENERAL_SEATS_OCCUPIED); + reference.put(SeatOccupancy.KEY_SEATS_BELTED, TestValues.JSON_GENERAL_SEATS_BELTED); + + JSONObject underTest = msg.serializeJSON(); + assertEquals(TestValues.MATCH, reference.length(), underTest.length()); + + Iterator<?> iterator = reference.keys(); + while (iterator.hasNext()) { + String key = (String) iterator.next(); + if (key.equals(SeatOccupancy.KEY_SEATS_OCCUPIED) || key.equals(SeatOccupancy.KEY_SEATS_BELTED)) { + JSONArray referenceArray = JsonUtils.readJsonArrayFromJsonObject(reference, key); + JSONArray underTestArray = JsonUtils.readJsonArrayFromJsonObject(underTest, key); + assertEquals(TestValues.MATCH, referenceArray.length(), underTestArray.length()); + + for (int i = 0; i < referenceArray.length(); i++) { + Hashtable<String, Object> hashReference = JsonRPCMarshaller.deserializeJSONObject(referenceArray.getJSONObject(i)); + Hashtable<String, Object> hashTest = JsonRPCMarshaller.deserializeJSONObject(underTestArray.getJSONObject(i)); + assertTrue(TestValues.TRUE, Validator.validateSeatStatus(new SeatStatus(hashReference), new SeatStatus(hashTest))); + } + + } + } + } catch (JSONException e) { + fail(TestValues.JSON_FAIL); + } + } +} diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SeatStatusTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SeatStatusTests.java new file mode 100644 index 000000000..dddf3b2c0 --- /dev/null +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SeatStatusTests.java @@ -0,0 +1,76 @@ +package com.smartdevicelink.test.rpc.datatypes; + +import com.smartdevicelink.marshal.JsonRPCMarshaller; +import com.smartdevicelink.proxy.rpc.SeatLocation; +import com.smartdevicelink.proxy.rpc.SeatStatus; +import com.smartdevicelink.test.JsonUtils; +import com.smartdevicelink.test.TestValues; +import com.smartdevicelink.test.Validator; + +import junit.framework.TestCase; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.Hashtable; +import java.util.Iterator; + +public class SeatStatusTests extends TestCase { + + private SeatStatus msg; + + @Override + public void setUp() { + msg = new SeatStatus(); + + msg.setSeatLocation(TestValues.GENERAL_SEAT_LOCATION); + msg.setConditionActive(TestValues.GENERAL_BOOLEAN); + } + + /** + * Tests the expected values of the RPC message. + */ + public void testRpcValues() { + // Test Values + SeatLocation location = msg.getSeatLocation(); + Boolean conditionActive = msg.getConditionActive(); + + // Valid Tests + assertEquals(TestValues.MATCH, TestValues.GENERAL_SEAT_LOCATION, location); + assertEquals(TestValues.GENERAL_BOOLEAN, (boolean) conditionActive); + + // Invalid/Null Tests + SeatStatus msg = new SeatStatus(); + assertNotNull(TestValues.NOT_NULL, msg); + + assertNull(TestValues.NULL, msg.getSeatLocation()); + assertNull(TestValues.NULL, msg.getConditionActive()); + } + + public void testJson() { + JSONObject reference = new JSONObject(); + + try { + reference.put(SeatStatus.KEY_CONDITION_ACTIVE, TestValues.GENERAL_BOOLEAN); + reference.put(SeatStatus.KEY_SEAT_LOCATION, TestValues.GENERAL_SEAT_LOCATION.serializeJSON()); + + JSONObject underTest = msg.serializeJSON(); + assertEquals(TestValues.MATCH, reference.length(), underTest.length()); + + Iterator<?> iterator = reference.keys(); + while (iterator.hasNext()) { + String key = (String) iterator.next(); + if (key.equals(SeatStatus.KEY_SEAT_LOCATION)) { + Hashtable<String, Object> locationOne = JsonRPCMarshaller.deserializeJSONObject(JsonUtils.readJsonObjectFromJsonObject(reference, key)); + Hashtable<String, Object> locationTwo = JsonRPCMarshaller.deserializeJSONObject(JsonUtils.readJsonObjectFromJsonObject(underTest, key)); + assertTrue(TestValues.TRUE, Validator.validateSeatLocation(new SeatLocation(locationOne), new SeatLocation(locationTwo))); + } else { + assertEquals(TestValues.MATCH, JsonUtils.readObjectFromJsonObject(reference, key), JsonUtils.readObjectFromJsonObject(underTest, key)); + + } + } + } catch (JSONException e) { + fail(TestValues.JSON_FAIL); + } + } +} diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SeekStreamingIndicatorTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SeekStreamingIndicatorTests.java new file mode 100644 index 000000000..924960adf --- /dev/null +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/SeekStreamingIndicatorTests.java @@ -0,0 +1,61 @@ +package com.smartdevicelink.test.rpc.datatypes; + +import com.smartdevicelink.proxy.rpc.SeekStreamingIndicator; +import com.smartdevicelink.proxy.rpc.enums.SeekIndicatorType; +import com.smartdevicelink.test.JsonUtils; +import com.smartdevicelink.test.TestValues; + +import junit.framework.TestCase; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.Iterator; + +public class SeekStreamingIndicatorTests extends TestCase { + + private SeekStreamingIndicator msg; + + @Override + protected void setUp() throws Exception { + msg = new SeekStreamingIndicator(); + assertNotNull(TestValues.NOT_NULL, msg); + + msg.setType(SeekIndicatorType.TRACK); + msg.setSeekTime(1); + } + + public void testRpcValues() { + SeekIndicatorType indicator = msg.getType(); + int seekTime = msg.getSeekTime(); + + assertEquals(TestValues.MATCH, SeekIndicatorType.TRACK, indicator); + assertEquals(TestValues.MATCH, 1, seekTime); + + SeekStreamingIndicator msg = new SeekStreamingIndicator(); + assertNotNull(TestValues.NOT_NULL, msg); + + assertNull(TestValues.NULL, msg.getType()); + assertNull(TestValues.NULL, msg.getSeekTime()); + } + + public void testJson() { + JSONObject reference = new JSONObject(); + + try { + reference.put(SeekStreamingIndicator.KEY_TYPE, SeekIndicatorType.TRACK); + reference.put(SeekStreamingIndicator.KEY_SEEK_TIME, 1); + + JSONObject underTest = msg.serializeJSON(); + assertEquals(TestValues.MATCH, reference.length(), underTest.length()); + + Iterator<?> iterator = reference.keys(); + while (iterator.hasNext()) { + String key = (String) iterator.next(); + assertEquals(TestValues.MATCH, JsonUtils.readObjectFromJsonObject(reference, key), JsonUtils.readObjectFromJsonObject(underTest, key)); + } + } catch (JSONException e) { + fail(TestValues.JSON_FAIL); + } + } +}
\ No newline at end of file diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/VideoStreamingCapabilityTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/VideoStreamingCapabilityTests.java index 422cd5ddc..0799645b6 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/VideoStreamingCapabilityTests.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/datatypes/VideoStreamingCapabilityTests.java @@ -4,6 +4,7 @@ import com.smartdevicelink.marshal.JsonRPCMarshaller; import com.smartdevicelink.proxy.rpc.ImageResolution; import com.smartdevicelink.proxy.rpc.VideoStreamingCapability; import com.smartdevicelink.proxy.rpc.VideoStreamingFormat; +import com.smartdevicelink.streaming.video.VideoStreamingParameters; import com.smartdevicelink.test.JsonUtils; import com.smartdevicelink.test.TestValues; import com.smartdevicelink.test.Validator; @@ -33,6 +34,7 @@ public class VideoStreamingCapabilityTests extends TestCase { msg.setDiagonalScreenSize(TestValues.GENERAL_DOUBLE); msg.setPixelPerInch(TestValues.GENERAL_DOUBLE); msg.setScale(TestValues.GENERAL_DOUBLE); + msg.setPreferredFPS(TestValues.GENERAL_INTEGER); } /** @@ -47,6 +49,7 @@ public class VideoStreamingCapabilityTests extends TestCase { Double diagonalScreenSize = msg.getDiagonalScreenSize(); Double pixelPerInch = msg.getPixelPerInch(); Double scale = msg.getScale(); + Integer preferredFPS = msg.getPreferredFPS(); // Valid Tests assertEquals(TestValues.MATCH, (List<VideoStreamingFormat>) TestValues.GENERAL_VIDEOSTREAMINGFORMAT_LIST, format); @@ -68,6 +71,7 @@ public class VideoStreamingCapabilityTests extends TestCase { assertNull(TestValues.NULL, msg.getDiagonalScreenSize()); assertNull(TestValues.NULL, msg.getPixelPerInch()); assertNull(TestValues.NULL, msg.getScale()); + assertNull(TestValues.NULL, msg.getPreferredFPS()); } public void testJson() { @@ -81,6 +85,7 @@ public class VideoStreamingCapabilityTests extends TestCase { reference.put(VideoStreamingCapability.KEY_DIAGONAL_SCREEN_SIZE, TestValues.GENERAL_DOUBLE); reference.put(VideoStreamingCapability.KEY_PIXEL_PER_INCH, TestValues.GENERAL_DOUBLE); reference.put(VideoStreamingCapability.KEY_SCALE, TestValues.GENERAL_DOUBLE); + reference.put(VideoStreamingCapability.KEY_PREFERRED_FPS, TestValues.GENERAL_INTEGER); JSONObject underTest = msg.serializeJSON(); assertEquals(TestValues.MATCH, reference.length(), underTest.length()); @@ -89,7 +94,7 @@ public class VideoStreamingCapabilityTests extends TestCase { while (iterator.hasNext()) { String key = (String) iterator.next(); - if (key.equals(VideoStreamingCapability.KEY_MAX_BITRATE) || key.equals(VideoStreamingCapability.KEY_HAPTIC_SPATIAL_DATA_SUPPORTED)) { + if (key.equals(VideoStreamingCapability.KEY_MAX_BITRATE) || key.equals(VideoStreamingCapability.KEY_HAPTIC_SPATIAL_DATA_SUPPORTED) || key.equals(VideoStreamingCapability.KEY_PREFERRED_FPS)) { assertTrue(TestValues.TRUE, JsonUtils.readIntegerFromJsonObject(reference, key) == JsonUtils.readIntegerFromJsonObject(underTest, key)); } else if (key.equals(VideoStreamingCapability.KEY_PREFERRED_RESOLUTION)) { ImageResolution irReference = (ImageResolution) JsonUtils.readObjectFromJsonObject(reference, key); diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/DoorStatusTypeTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/DoorStatusTypeTests.java new file mode 100644 index 000000000..0a83f8e58 --- /dev/null +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/DoorStatusTypeTests.java @@ -0,0 +1,73 @@ +package com.smartdevicelink.test.rpc.enums; + +import com.smartdevicelink.proxy.rpc.enums.DoorStatusType; + +import junit.framework.TestCase; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class DoorStatusTypeTests extends TestCase { + + /** + * Verifies that the enum values are not null upon valid assignment. + */ + public void testValidEnums() { + String example = "CLOSED"; + DoorStatusType closed = DoorStatusType.valueForString(example); + example = "LOCKED"; + DoorStatusType locked = DoorStatusType.valueForString(example); + example = "AJAR"; + DoorStatusType ajar = DoorStatusType.valueForString(example); + example = "REMOVED"; + DoorStatusType removed = DoorStatusType.valueForString(example); + + assertNotNull("CLOSED returned null", closed); + assertNotNull("LOCKED returned null", locked); + assertNotNull("AJAR returned null", ajar); + assertNotNull("REMOVED returned null", removed); + } + + /** + * Verifies that an invalid assignment is null. + */ + public void testInvalidEnum() { + String example = "cloS_ed"; + try { + DoorStatusType temp = DoorStatusType.valueForString(example); + assertNull("Result of valueForString should be null.", temp); + } catch (IllegalArgumentException exception) { + fail("Invalid enum throws IllegalArgumentException."); + } + } + + /** + * Verifies that a null assignment is invalid. + */ + public void testNullEnum() { + String example = null; + try { + DoorStatusType temp = DoorStatusType.valueForString(example); + assertNull("Result of valueForString should be null.", temp); + } catch (NullPointerException exception) { + fail("Null string throws NullPointerException."); + } + } + + /** + * Verifies the possible enum values of DriverDistractionState. + */ + public void testListEnum() { + List<DoorStatusType> enumValueList = Arrays.asList(DoorStatusType.values()); + + List<DoorStatusType> enumTestList = new ArrayList<DoorStatusType>(); + enumTestList.add(DoorStatusType.CLOSED); + enumTestList.add(DoorStatusType.LOCKED); + enumTestList.add(DoorStatusType.AJAR); + enumTestList.add(DoorStatusType.REMOVED); + + assertTrue("Enum value list does not match enum class list", + enumValueList.containsAll(enumTestList) && enumTestList.containsAll(enumValueList)); + } +} diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/TextFieldNameTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/TextFieldNameTests.java index 339ce371f..9f7b9a8e6 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/TextFieldNameTests.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/TextFieldNameTests.java @@ -184,6 +184,8 @@ public class TextFieldNameTests extends TestCase { enumTestList.add(TextFieldName.locationDescription); enumTestList.add(TextFieldName.addressLines); enumTestList.add(TextFieldName.phoneNumber); + enumTestList.add(TextFieldName.timeToDestination); + enumTestList.add(TextFieldName.turnText); enumTestList.add(TextFieldName.templateTitle); enumTestList.add(TextFieldName.subtleAlertText1); enumTestList.add(TextFieldName.subtleAlertText2); diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/VehicleDataTypeTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/VehicleDataTypeTests.java index 1b270a9dd..94fbe0100 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/VehicleDataTypeTests.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/VehicleDataTypeTests.java @@ -90,6 +90,10 @@ public class VehicleDataTypeTests extends TestCase { VehicleDataType enumVehicleDataTypeWindowStatus = VehicleDataType.valueForString(example); example = "VEHICLEDATA_STABILITYCONTROLSSTATUS"; VehicleDataType enumVehicleDataStabilityControlsStatus = VehicleDataType.valueForString(example); + example = "VEHICLEDATA_CLIMATEDATA"; + VehicleDataType enumVehicleDataClimateData = VehicleDataType.valueForString(example); + example = "VEHICLEDATA_SEATOCCUPANCY"; + VehicleDataType enumVehicleDataSeatOccupancy = VehicleDataType.valueForString(example); assertNotNull("VEHICLEDATA_GPS returned null", enumVehicleDataGps); assertNotNull("VEHICLEDATA_SPEED returned null", enumVehicleDataSpeed); @@ -127,6 +131,8 @@ public class VehicleDataTypeTests extends TestCase { assertNotNull("VEHICLEDATA_WINDOWSTATUS returned null", enumVehicleDataTypeWindowStatus); assertNotNull("VEHICLEDATA_GEARSTATUS returned null", enumVehicleDataGearStatus); assertNotNull("VEHICLEDATA_STABILITYCONTROLSSTATUS returned null", enumVehicleDataStabilityControlsStatus); + assertNotNull("VEHICLEDATA_CLIMATEDATA returned null", enumVehicleDataClimateData); + assertNotNull("VEHICLEDATA_SEATOCCUPANCY returned null", enumVehicleDataSeatOccupancy); } /** @@ -198,6 +204,8 @@ public class VehicleDataTypeTests extends TestCase { enumTestList.add(VehicleDataType.VEHICLEDATA_WINDOWSTATUS); enumTestList.add(VehicleDataType.VEHICLEDATA_GEARSTATUS); enumTestList.add(VehicleDataType.VEHICLEDATA_STABILITYCONTROLSSTATUS); + enumTestList.add(VehicleDataType.VEHICLEDATA_CLIMATEDATA); + enumTestList.add(VehicleDataType.VEHICLEDATA_SEATOCCUPANCY); assertTrue("Enum value list does not match enum class list", enumValueList.containsAll(enumTestList) && enumTestList.containsAll(enumValueList)); diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/notifications/OnVehicleDataTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/notifications/OnVehicleDataTests.java index cb60f7572..0710c79f5 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/notifications/OnVehicleDataTests.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/notifications/OnVehicleDataTests.java @@ -6,6 +6,7 @@ import com.smartdevicelink.proxy.RPCMessage; import com.smartdevicelink.proxy.rpc.AirbagStatus; import com.smartdevicelink.proxy.rpc.BeltStatus; import com.smartdevicelink.proxy.rpc.BodyInformation; +import com.smartdevicelink.proxy.rpc.ClimateData; import com.smartdevicelink.proxy.rpc.ClusterModeStatus; import com.smartdevicelink.proxy.rpc.DeviceStatus; import com.smartdevicelink.proxy.rpc.ECallInfo; @@ -17,6 +18,7 @@ import com.smartdevicelink.proxy.rpc.GetVehicleDataResponse; import com.smartdevicelink.proxy.rpc.HeadLampStatus; import com.smartdevicelink.proxy.rpc.MyKey; import com.smartdevicelink.proxy.rpc.OnVehicleData; +import com.smartdevicelink.proxy.rpc.SeatOccupancy; import com.smartdevicelink.proxy.rpc.SingleTireStatus; import com.smartdevicelink.proxy.rpc.StabilityControlsStatus; import com.smartdevicelink.proxy.rpc.TireStatus; @@ -107,6 +109,8 @@ public class OnVehicleDataTests extends BaseRpcTests { result.put(OnVehicleData.KEY_GEAR_STATUS, VehicleDataHelper.GEAR_STATUS); result.put(OnVehicleData.KEY_WINDOW_STATUS, VehicleDataHelper.WINDOW_STATUS_LIST); result.put(OnVehicleData.KEY_STABILITY_CONTROLS_STATUS, VehicleDataHelper.STABILITY_CONTROLS_STATUS); + result.put(OnVehicleData.KEY_SEAT_OCCUPANCY, VehicleDataHelper.SEAT_OCCUPANCY); + result.put(OnVehicleData.KEY_CLIMATE_DATA, VehicleDataHelper.CLIMATE_DATA); result.put(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME, VehicleDataHelper.OEM_CUSTOM_VEHICLE_DATA_STATE); } catch (JSONException e) { fail(TestValues.JSON_FAIL); @@ -152,9 +156,11 @@ public class OnVehicleDataTests extends BaseRpcTests { TurnSignal turnSignal = ((OnVehicleData) msg).getTurnSignal(); ElectronicParkBrakeStatus electronicParkBrakeStatus = ((OnVehicleData) msg).getElectronicParkBrakeStatus(); GearStatus gearStatus = ((OnVehicleData) msg).getGearStatus(); + ClimateData climateData = ((OnVehicleData) msg).getClimateData(); StabilityControlsStatus stabilityControlsStatus = ((OnVehicleData) msg).getStabilityControlsStatus(); Object oemCustomVehicleData = ((OnVehicleData) msg).getOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME); Boolean handsOffSteering = ((OnVehicleData) msg).getHandsOffSteering(); + SeatOccupancy seatOccupancy = ((OnVehicleData) msg).getSeatOccupancy(); // Valid Tests assertEquals(TestValues.MATCH, VehicleDataHelper.SPEED, speed); assertEquals(TestValues.MATCH, VehicleDataHelper.RPM, rpm); @@ -176,6 +182,7 @@ public class OnVehicleDataTests extends BaseRpcTests { assertEquals(TestValues.MATCH, VehicleDataHelper.WIPER_STATUS, wiper); assertTrue(TestValues.TRUE, Validator.validateHeadLampStatus(VehicleDataHelper.HEAD_LAMP_STATUS, lamp)); assertEquals(TestValues.MATCH, VehicleDataHelper.ACC_PEDAL_POSITION, pedal); + assertEquals(TestValues.MATCH, VehicleDataHelper.CLIMATE_DATA, climateData); assertEquals(TestValues.MATCH, VehicleDataHelper.STEERING_WHEEL_ANGLE, wheel); assertTrue(TestValues.TRUE, Validator.validateECallInfo(VehicleDataHelper.E_CALL_INFO, ecall)); assertTrue(TestValues.TRUE, Validator.validateAirbagStatus(VehicleDataHelper.AIRBAG_STATUS, airbag)); @@ -189,6 +196,7 @@ public class OnVehicleDataTests extends BaseRpcTests { assertEquals(TestValues.MATCH, VehicleDataHelper.GEAR_STATUS, gearStatus); assertEquals(TestValues.MATCH, VehicleDataHelper.STABILITY_CONTROLS_STATUS, stabilityControlsStatus); assertEquals(TestValues.MATCH, VehicleDataHelper.OEM_CUSTOM_VEHICLE_DATA_STATE, oemCustomVehicleData); + assertEquals(TestValues.MATCH, VehicleDataHelper.SEAT_OCCUPANCY, seatOccupancy); assertEquals(TestValues.MATCH, VehicleDataHelper.HANDS_OFF_STEERING, handsOffSteering); // Invalid/Null Tests OnVehicleData msg = new OnVehicleData(); @@ -227,7 +235,9 @@ public class OnVehicleDataTests extends BaseRpcTests { assertNull(TestValues.NULL, msg.getHandsOffSteering()); assertNull(TestValues.NULL, msg.getWindowStatus()); assertNull(TestValues.NULL, msg.getGearStatus()); + assertNull(TestValues.NULL, msg.getClimateData()); assertNull(TestValues.NULL, msg.getStabilityControlsStatus()); + assertNull(TestValues.NULL, msg.getSeatOccupancy()); assertNull(TestValues.NULL, msg.getOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME)); } @@ -251,6 +261,8 @@ public class OnVehicleDataTests extends BaseRpcTests { JSONObject windowStatusObj = new JSONObject(); JSONObject gearStatusObj = new JSONObject(); JSONObject stabilityControlStatusObj = new JSONObject(); + JSONObject climateDataObj = new JSONObject(); + JSONObject seatOccupancyObj = new JSONObject(); JSONArray fuelRangeArrayObj = new JSONArray(); JSONArray windowStatusArrayObj = new JSONArray(); @@ -397,6 +409,10 @@ public class OnVehicleDataTests extends BaseRpcTests { gearStatusObj.put(GearStatus.KEY_TRANSMISSION_TYPE, VehicleDataHelper.TRANSMISSION_TYPE); gearStatusObj.put(GearStatus.KEY_ACTUAL_GEAR, VehicleDataHelper.ACTUAL_GEAR); + // SEAT OCCUPANCY + seatOccupancyObj.put(SeatOccupancy.KEY_SEATS_OCCUPIED, VehicleDataHelper.SEATS_OCCUPIED); + seatOccupancyObj.put(SeatOccupancy.KEY_SEATS_BELTED, VehicleDataHelper.SEATS_BELTED); + reference.put(OnVehicleData.KEY_SPEED, VehicleDataHelper.SPEED); reference.put(OnVehicleData.KEY_RPM, VehicleDataHelper.RPM); reference.put(OnVehicleData.KEY_EXTERNAL_TEMPERATURE, VehicleDataHelper.EXTERNAL_TEMPERATURE); @@ -431,6 +447,14 @@ public class OnVehicleDataTests extends BaseRpcTests { reference.put(OnVehicleData.KEY_GEAR_STATUS, gearStatusObj); reference.put(OnVehicleData.KEY_STABILITY_CONTROLS_STATUS, stabilityControlStatusObj); reference.put(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME, VehicleDataHelper.OEM_CUSTOM_VEHICLE_DATA_STATE); + reference.put(OnVehicleData.KEY_SEAT_OCCUPANCY, seatOccupancyObj); + + // CLIMATE_DATA + climateDataObj.put(ClimateData.KEY_ATMOSPHERIC_PRESSURE, VehicleDataHelper.CLIMATE_DATA_ATM_PRESSURE); + climateDataObj.put(ClimateData.KEY_CABIN_TEMPERATURE, VehicleDataHelper.CLIMATE_DATA_CABIN_TEMP.serializeJSON()); + climateDataObj.put(ClimateData.KEY_EXTERNAL_TEMPERATURE, VehicleDataHelper.CLIMATE_DATA_EXT_TEMP.serializeJSON()); + + reference.put(OnVehicleData.KEY_CLIMATE_DATA, climateDataObj); JSONObject underTest = msg.serializeJSON(); //go inside underTest and only return the JSONObject inside the parameters key inside the notification key @@ -528,6 +552,14 @@ public class OnVehicleDataTests extends BaseRpcTests { assertTrue(TestValues.TRUE, Validator.validateGearStatuses( new GearStatus(JsonRPCMarshaller.deserializeJSONObject(myKeyObjReference)), new GearStatus(JsonRPCMarshaller.deserializeJSONObject(myKeyObjTest)))); + } + else if (key.equals(OnVehicleData.KEY_SEAT_OCCUPANCY)) { + JSONObject myKeyObjReference = JsonUtils.readJsonObjectFromJsonObject(reference, key); + JSONObject myKeyObjTest = JsonUtils.readJsonObjectFromJsonObject(underTest, key); + + assertTrue(TestValues.TRUE, Validator.validateSeatOccupancies( + new SeatOccupancy(JsonRPCMarshaller.deserializeJSONObject(myKeyObjReference)), + new SeatOccupancy(JsonRPCMarshaller.deserializeJSONObject(myKeyObjTest)))); } else if (key.equals(OnVehicleData.KEY_ENGINE_OIL_LIFE)) { assertEquals(JsonUtils.readDoubleFromJsonObject(reference, key), JsonUtils.readDoubleFromJsonObject(underTest, key)); } else if (key.equals(OnVehicleData.KEY_HANDS_OFF_STEERING)) { @@ -550,7 +582,21 @@ public class OnVehicleDataTests extends BaseRpcTests { assertTrue(TestValues.TRUE, Validator.validateFuelRange( fuelRangeRefereceList, fuelRangeUnderTestList)); - } else if (key.equals(OnVehicleData.KEY_WINDOW_STATUS)) { + } else if (key.equals(GetVehicleDataResponse.KEY_CLIMATE_DATA)) { + JSONObject myKeyObjReference = JsonUtils.readJsonObjectFromJsonObject(reference, key); + JSONObject myKeyObjTest = JsonUtils.readJsonObjectFromJsonObject(underTest, key); + + ClimateData climateData1 = new ClimateData(JsonRPCMarshaller.deserializeJSONObject(myKeyObjReference)); + ClimateData climateData2 = new ClimateData(JsonRPCMarshaller.deserializeJSONObject(myKeyObjTest)); + + assertTrue("JSON value didn't match expected value for key \"" + key + "\".", + Validator.validateClimateData( + climateData1, + climateData2 + ) + ); + } + else if (key.equals(OnVehicleData.KEY_WINDOW_STATUS)) { JSONArray windowStatusArrayObjReference = JsonUtils.readJsonArrayFromJsonObject(reference, key); List<WindowStatus> windowStatusReferenceList = new ArrayList<>(); for (int index = 0; index < windowStatusArrayObjReference.length(); index++) { diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/GetVehicleDataTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/GetVehicleDataTests.java index fe726018f..17f66e47c 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/GetVehicleDataTests.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/GetVehicleDataTests.java @@ -65,6 +65,8 @@ public class GetVehicleDataTests extends BaseRpcTests { msg.setWindowStatus(TestValues.GENERAL_BOOLEAN); msg.setGearStatus(TestValues.GENERAL_BOOLEAN); msg.setStabilityControlsStatus(TestValues.GENERAL_BOOLEAN); + msg.setSeatOccupancy(TestValues.GENERAL_BOOLEAN); + msg.setClimateData(TestValues.GENERAL_BOOLEAN); msg.setOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME, TestValues.GENERAL_BOOLEAN); return msg; @@ -118,6 +120,8 @@ public class GetVehicleDataTests extends BaseRpcTests { result.put(GetVehicleData.KEY_GEAR_STATUS, TestValues.GENERAL_BOOLEAN); result.put(GetVehicleData.KEY_WINDOW_STATUS, TestValues.GENERAL_BOOLEAN); result.put(GetVehicleData.KEY_STABILITY_CONTROLS_STATUS, TestValues.GENERAL_BOOLEAN); + result.put(GetVehicleData.KEY_CLIMATE_DATA, TestValues.GENERAL_BOOLEAN); + result.put(GetVehicleData.KEY_SEAT_OCCUPANCY, TestValues.GENERAL_BOOLEAN); result.put(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME, TestValues.GENERAL_BOOLEAN); } catch (JSONException e) { fail(TestValues.JSON_FAIL); @@ -166,6 +170,8 @@ public class GetVehicleDataTests extends BaseRpcTests { assertTrue(TestValues.TRUE, ((GetVehicleData) msg).getWindowStatus()); assertTrue(TestValues.TRUE, ((GetVehicleData) msg).getGearStatus()); assertTrue(TestValues.TRUE, ((GetVehicleData) msg).getStabilityControlsStatus()); + assertTrue(TestValues.TRUE, ((GetVehicleData) msg).getSeatOccupancy()); + assertTrue(TestValues.TRUE, ((GetVehicleData) msg).getClimateData()); assertTrue(TestValues.TRUE, ((GetVehicleData) msg).getOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME)); // Invalid/Null Tests @@ -206,6 +212,8 @@ public class GetVehicleDataTests extends BaseRpcTests { assertNull(TestValues.NULL, msg.getWindowStatus()); assertNull(TestValues.NULL, msg.getGearStatus()); assertNull(TestValues.NULL, msg.getStabilityControlsStatus()); + assertNull(TestValues.NULL, msg.getClimateData()); + assertNull(TestValues.NULL, msg.getSeatOccupancy()); assertNull(TestValues.NULL, msg.getOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME)); } @@ -261,7 +269,9 @@ public class GetVehicleDataTests extends BaseRpcTests { assertEquals(TestValues.MATCH, JsonUtils.readBooleanFromJsonObject(parameters, GetVehicleData.KEY_HANDS_OFF_STEERING), cmd.getHandsOffSteering()); assertEquals(TestValues.MATCH, JsonUtils.readBooleanFromJsonObject(parameters, GetVehicleData.KEY_WINDOW_STATUS), cmd.getWindowStatus()); assertEquals(TestValues.MATCH, JsonUtils.readBooleanFromJsonObject(parameters, GetVehicleData.KEY_GEAR_STATUS), cmd.getGearStatus()); + assertEquals(TestValues.MATCH, JsonUtils.readBooleanFromJsonObject(parameters, GetVehicleData.KEY_SEAT_OCCUPANCY), cmd.getSeatOccupancy()); assertEquals(TestValues.MATCH, JsonUtils.readBooleanFromJsonObject(parameters, GetVehicleData.KEY_STABILITY_CONTROLS_STATUS), cmd.getStabilityControlsStatus()); + assertEquals(TestValues.MATCH, JsonUtils.readBooleanFromJsonObject(parameters, GetVehicleData.KEY_CLIMATE_DATA), cmd.getClimateData()); assertEquals(TestValues.MATCH, JsonUtils.readBooleanFromJsonObject(parameters, TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME), cmd.getOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME)); } catch (JSONException e) { fail(TestValues.JSON_FAIL); diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/SetMediaClockTimerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/SetMediaClockTimerTests.java index 7f22c0701..eb660927b 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/SetMediaClockTimerTests.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/SetMediaClockTimerTests.java @@ -3,9 +3,11 @@ package com.smartdevicelink.test.rpc.requests; import com.smartdevicelink.marshal.JsonRPCMarshaller; import com.smartdevicelink.protocol.enums.FunctionID; import com.smartdevicelink.proxy.RPCMessage; +import com.smartdevicelink.proxy.rpc.SeekStreamingIndicator; import com.smartdevicelink.proxy.rpc.SetMediaClockTimer; import com.smartdevicelink.proxy.rpc.StartTime; import com.smartdevicelink.proxy.rpc.enums.AudioStreamingIndicator; +import com.smartdevicelink.proxy.rpc.enums.SeekIndicatorType; import com.smartdevicelink.proxy.rpc.enums.UpdateMode; import com.smartdevicelink.test.BaseRpcTests; import com.smartdevicelink.test.JsonUtils; @@ -40,6 +42,9 @@ public class SetMediaClockTimerTests extends BaseRpcTests { msg.setEndTime(TestValues.GENERAL_STARTTIME); msg.setUpdateMode(TestValues.GENERAL_UPDATEMODE); msg.setAudioStreamingIndicator(TestValues.GENERAL_AUDIO_STREAMING_INDICATOR); + msg.setCountRate(TestValues.GENERAL_FLOAT); + msg.setForwardSeekIndicator(TestValues.GENERAL_SEEK_STREAMING_INDICATOR); + msg.setBackSeekIndicator(TestValues.GENERAL_SEEK_STREAMING_INDICATOR); return msg; } @@ -63,6 +68,9 @@ public class SetMediaClockTimerTests extends BaseRpcTests { result.put(SetMediaClockTimer.KEY_END_TIME, TestValues.JSON_STARTTIME); result.put(SetMediaClockTimer.KEY_UPDATE_MODE, TestValues.GENERAL_UPDATEMODE); result.put(SetMediaClockTimer.KEY_AUDIO_STREAMING_INDICATOR, TestValues.GENERAL_AUDIO_STREAMING_INDICATOR); + result.put(SetMediaClockTimer.KEY_COUNT_RATE, TestValues.GENERAL_FLOAT); + result.put(SetMediaClockTimer.KEY_FORWARD_SEEK_INDICATOR, TestValues.JSON_SEEK_STREAMING_INDICATOR); + result.put(SetMediaClockTimer.KEY_BACK_SEEK_INDICATOR, TestValues.JSON_SEEK_STREAMING_INDICATOR); } catch (JSONException e) { fail(TestValues.JSON_FAIL); } @@ -80,12 +88,18 @@ public class SetMediaClockTimerTests extends BaseRpcTests { StartTime testEndTime = ((SetMediaClockTimer) msg).getEndTime(); UpdateMode testUpdateMode = ((SetMediaClockTimer) msg).getUpdateMode(); AudioStreamingIndicator testAudioStreamingIndicator = ((SetMediaClockTimer) msg).getAudioStreamingIndicator(); + Float testCountRate = ((SetMediaClockTimer) msg).getCountRate(); + SeekStreamingIndicator testForwardSeekStreamingIndicator = ((SetMediaClockTimer) msg).getForwardSeekIndicator(); + SeekStreamingIndicator testBackSeekStreamingIndicator = ((SetMediaClockTimer) msg).getBackSeekIndicator(); // Valid Tests assertEquals(TestValues.MATCH, TestValues.GENERAL_UPDATEMODE, testUpdateMode); assertEquals(TestValues.MATCH, TestValues.GENERAL_AUDIO_STREAMING_INDICATOR, testAudioStreamingIndicator); assertTrue(TestValues.TRUE, Validator.validateStartTime(TestValues.GENERAL_STARTTIME, testStartTime)); assertTrue(TestValues.TRUE, Validator.validateStartTime(TestValues.GENERAL_STARTTIME, testEndTime)); + assertEquals(TestValues.MATCH, TestValues.GENERAL_FLOAT, testCountRate); + assertEquals(TestValues.MATCH, TestValues.GENERAL_SEEK_STREAMING_INDICATOR, testForwardSeekStreamingIndicator); + assertEquals(TestValues.MATCH, TestValues.GENERAL_SEEK_STREAMING_INDICATOR, testBackSeekStreamingIndicator); // Invalid/Null Tests SetMediaClockTimer msg = new SetMediaClockTimer(); @@ -96,6 +110,9 @@ public class SetMediaClockTimerTests extends BaseRpcTests { assertNull(TestValues.NULL, msg.getEndTime()); assertNull(TestValues.NULL, msg.getUpdateMode()); assertNull(TestValues.NULL, msg.getAudioStreamingIndicator()); + assertNull(TestValues.NULL, msg.getCountRate()); + assertNull(TestValues.NULL, msg.getForwardSeekIndicator()); + assertNull(TestValues.NULL, msg.getBackSeekIndicator()); } /** @@ -110,10 +127,14 @@ public class SetMediaClockTimerTests extends BaseRpcTests { SetMediaClockTimer msg; msg = SetMediaClockTimer.countUpFromStartTimeInterval(timeInterval1, timeInterval2, TestValues.GENERAL_AUDIO_STREAMING_INDICATOR); + msg.setForwardSeekIndicator(TestValues.GENERAL_SEEK_STREAMING_INDICATOR); + msg.setBackSeekIndicator(TestValues.GENERAL_SEEK_STREAMING_INDICATOR); assertEquals(TestValues.MATCH, msg.getUpdateMode(), UpdateMode.COUNTUP); assertTrue(TestValues.TRUE, Validator.validateStartTime(startTime1, msg.getStartTime())); assertTrue(TestValues.TRUE, Validator.validateStartTime(startTime2, msg.getEndTime())); assertEquals(TestValues.MATCH, TestValues.GENERAL_AUDIO_STREAMING_INDICATOR, msg.getAudioStreamingIndicator()); + assertEquals(TestValues.MATCH, TestValues.GENERAL_SEEK_STREAMING_INDICATOR, msg.getForwardSeekIndicator()); + assertEquals(TestValues.MATCH, TestValues.GENERAL_SEEK_STREAMING_INDICATOR, msg.getBackSeekIndicator()); msg = SetMediaClockTimer.countUpFromStartTime(startTime1, startTime2, TestValues.GENERAL_AUDIO_STREAMING_INDICATOR); assertEquals(TestValues.MATCH, msg.getUpdateMode(), UpdateMode.COUNTUP); @@ -162,6 +183,9 @@ public class SetMediaClockTimerTests extends BaseRpcTests { assertNull(TestValues.NULL, msg.getStartTime()); assertNull(TestValues.NULL, msg.getEndTime()); assertEquals(TestValues.MATCH, TestValues.GENERAL_AUDIO_STREAMING_INDICATOR, msg.getAudioStreamingIndicator()); + + msg = new SetMediaClockTimer().setCountRate(TestValues.GENERAL_FLOAT); + assertEquals(TestValues.GENERAL_FLOAT, msg.getCountRate()); } /** diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/SubscribeVehicleDataTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/SubscribeVehicleDataTests.java index 528eeb128..32750af89 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/SubscribeVehicleDataTests.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/SubscribeVehicleDataTests.java @@ -63,7 +63,9 @@ public class SubscribeVehicleDataTests extends BaseRpcTests { msg.setHandsOffSteering(TestValues.GENERAL_BOOLEAN); msg.setWindowStatus(TestValues.GENERAL_BOOLEAN); msg.setGearStatus(TestValues.GENERAL_BOOLEAN); + msg.setSeatOccupancy(TestValues.GENERAL_BOOLEAN); msg.setStabilityControlsStatus(TestValues.GENERAL_BOOLEAN); + msg.setClimateData(TestValues.GENERAL_BOOLEAN); msg.setOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME, TestValues.GENERAL_BOOLEAN); return msg; @@ -116,6 +118,8 @@ public class SubscribeVehicleDataTests extends BaseRpcTests { result.put(SubscribeVehicleData.KEY_WINDOW_STATUS, TestValues.GENERAL_BOOLEAN); result.put(SubscribeVehicleData.KEY_GEAR_STATUS, TestValues.GENERAL_BOOLEAN); result.put(SubscribeVehicleData.KEY_STABILITY_CONTROLS_STATUS, TestValues.GENERAL_BOOLEAN); + result.put(SubscribeVehicleData.KEY_CLIMATE_DATA, TestValues.GENERAL_BOOLEAN); + result.put(SubscribeVehicleData.KEY_SEAT_OCCUPANCY, TestValues.GENERAL_BOOLEAN); result.put(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME, TestValues.GENERAL_BOOLEAN); } catch (JSONException e) { fail(TestValues.JSON_FAIL); @@ -163,6 +167,8 @@ public class SubscribeVehicleDataTests extends BaseRpcTests { assertTrue(TestValues.MATCH, ((SubscribeVehicleData) msg).getWindowStatus()); assertTrue(TestValues.MATCH, ((SubscribeVehicleData) msg).getGearStatus()); assertTrue(TestValues.MATCH, ((SubscribeVehicleData) msg).getStabilityControlsStatus()); + assertTrue(TestValues.MATCH, ((SubscribeVehicleData) msg).getClimateData()); + assertTrue(TestValues.MATCH, ((SubscribeVehicleData) msg).getSeatOccupancy()); assertTrue(TestValues.MATCH, ((SubscribeVehicleData) msg).getOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME)); // Invalid/Null Tests @@ -202,6 +208,8 @@ public class SubscribeVehicleDataTests extends BaseRpcTests { assertNull(TestValues.NULL, msg.getWindowStatus()); assertNull(TestValues.NULL, msg.getGearStatus()); assertNull(TestValues.NULL, msg.getStabilityControlsStatus()); + assertNull(TestValues.NULL, msg.getClimateData()); + assertNull(TestValues.NULL, msg.getSeatOccupancy()); assertNull(TestValues.NULL, msg.getOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME)); } @@ -256,6 +264,8 @@ public class SubscribeVehicleDataTests extends BaseRpcTests { assertEquals(TestValues.MATCH, JsonUtils.readBooleanFromJsonObject(parameters, SubscribeVehicleData.KEY_HANDS_OFF_STEERING), cmd.getHandsOffSteering()); assertEquals(TestValues.MATCH, JsonUtils.readBooleanFromJsonObject(parameters, SubscribeVehicleData.KEY_WINDOW_STATUS), cmd.getWindowStatus()); assertEquals(TestValues.MATCH, JsonUtils.readBooleanFromJsonObject(parameters, SubscribeVehicleData.KEY_STABILITY_CONTROLS_STATUS), cmd.getStabilityControlsStatus()); + assertEquals(TestValues.MATCH, JsonUtils.readBooleanFromJsonObject(parameters, SubscribeVehicleData.KEY_CLIMATE_DATA), cmd.getClimateData()); + assertEquals(TestValues.MATCH, JsonUtils.readBooleanFromJsonObject(parameters, SubscribeVehicleData.KEY_SEAT_OCCUPANCY), cmd.getSeatOccupancy()); assertEquals(TestValues.MATCH, JsonUtils.readBooleanFromJsonObject(parameters, TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME), cmd.getOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME)); } catch (JSONException e) { fail(TestValues.JSON_FAIL); diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/UnsubscribeVehicleDataTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/UnsubscribeVehicleDataTests.java index cfe2548f3..4aeb5ce66 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/UnsubscribeVehicleDataTests.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/UnsubscribeVehicleDataTests.java @@ -67,6 +67,8 @@ public class UnsubscribeVehicleDataTests extends BaseRpcTests { msg.setHandsOffSteering(TestValues.GENERAL_BOOLEAN); msg.setWindowStatus(TestValues.GENERAL_BOOLEAN); msg.setStabilityControlsStatus(TestValues.GENERAL_BOOLEAN); + msg.setSeatOccupancy(TestValues.GENERAL_BOOLEAN); + msg.setClimateData(TestValues.GENERAL_BOOLEAN); msg.setOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME, TestValues.GENERAL_BOOLEAN); return msg; @@ -120,6 +122,8 @@ public class UnsubscribeVehicleDataTests extends BaseRpcTests { result.put(UnsubscribeVehicleData.KEY_WINDOW_STATUS, TestValues.GENERAL_BOOLEAN); result.put(UnsubscribeVehicleData.KEY_GEAR_STATUS, TestValues.GENERAL_BOOLEAN); result.put(UnsubscribeVehicleData.KEY_STABILITY_CONTROLS_STATUS, TestValues.GENERAL_BOOLEAN); + result.put(UnsubscribeVehicleData.KEY_SEAT_OCCUPANCY, TestValues.GENERAL_BOOLEAN); + result.put(UnsubscribeVehicleData.KEY_CLIMATE_DATA, TestValues.GENERAL_BOOLEAN); result.put(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME, TestValues.GENERAL_BOOLEAN); } catch (JSONException e) { fail(TestValues.JSON_FAIL); @@ -167,6 +171,8 @@ public class UnsubscribeVehicleDataTests extends BaseRpcTests { assertTrue(TestValues.TRUE, ((UnsubscribeVehicleData) msg).getWindowStatus()); assertTrue(TestValues.TRUE, ((UnsubscribeVehicleData) msg).getGearStatus()); assertTrue(TestValues.TRUE, ((UnsubscribeVehicleData) msg).getStabilityControlsStatus()); + assertTrue(TestValues.TRUE, ((UnsubscribeVehicleData) msg).getClimateData()); + assertTrue(TestValues.TRUE, ((UnsubscribeVehicleData) msg).getSeatOccupancy()); assertTrue(TestValues.TRUE, ((UnsubscribeVehicleData) msg).getOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME)); // Invalid/Null Tests UnsubscribeVehicleData msg = new UnsubscribeVehicleData(); @@ -206,6 +212,8 @@ public class UnsubscribeVehicleDataTests extends BaseRpcTests { assertNull(TestValues.NULL, msg.getWindowStatus()); assertNull(TestValues.NULL, msg.getGearStatus()); assertNull(TestValues.NULL, msg.getStabilityControlsStatus()); + assertNull(TestValues.NULL, msg.getSeatOccupancy()); + assertNull(TestValues.NULL, msg.getClimateData()); assertNull(TestValues.NULL, msg.getOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME)); } @@ -262,6 +270,8 @@ public class UnsubscribeVehicleDataTests extends BaseRpcTests { assertEquals(TestValues.MATCH, JsonUtils.readBooleanFromJsonObject(parameters, UnsubscribeVehicleData.KEY_WINDOW_STATUS), cmd.getWindowStatus()); assertEquals(TestValues.MATCH, JsonUtils.readBooleanFromJsonObject(parameters, UnsubscribeVehicleData.KEY_GEAR_STATUS), cmd.getGearStatus()); assertEquals(TestValues.MATCH, JsonUtils.readBooleanFromJsonObject(parameters, UnsubscribeVehicleData.KEY_STABILITY_CONTROLS_STATUS), cmd.getStabilityControlsStatus()); + assertEquals(TestValues.MATCH, JsonUtils.readBooleanFromJsonObject(parameters, UnsubscribeVehicleData.KEY_CLIMATE_DATA), cmd.getClimateData()); + assertEquals(TestValues.MATCH, JsonUtils.readBooleanFromJsonObject(parameters, UnsubscribeVehicleData.KEY_SEAT_OCCUPANCY), cmd.getSeatOccupancy()); assertEquals(TestValues.MATCH, JsonUtils.readBooleanFromJsonObject(parameters, TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME), cmd.getOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME)); } catch (JSONException e) { diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/GetVehicleDataResponseTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/GetVehicleDataResponseTests.java index 606283cc7..8430fd728 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/GetVehicleDataResponseTests.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/GetVehicleDataResponseTests.java @@ -6,6 +6,7 @@ import com.smartdevicelink.proxy.RPCMessage; import com.smartdevicelink.proxy.rpc.AirbagStatus; import com.smartdevicelink.proxy.rpc.BeltStatus; import com.smartdevicelink.proxy.rpc.BodyInformation; +import com.smartdevicelink.proxy.rpc.ClimateData; import com.smartdevicelink.proxy.rpc.ClusterModeStatus; import com.smartdevicelink.proxy.rpc.DeviceStatus; import com.smartdevicelink.proxy.rpc.ECallInfo; @@ -16,6 +17,7 @@ import com.smartdevicelink.proxy.rpc.GearStatus; import com.smartdevicelink.proxy.rpc.GetVehicleDataResponse; import com.smartdevicelink.proxy.rpc.HeadLampStatus; import com.smartdevicelink.proxy.rpc.MyKey; +import com.smartdevicelink.proxy.rpc.SeatOccupancy; import com.smartdevicelink.proxy.rpc.SingleTireStatus; import com.smartdevicelink.proxy.rpc.StabilityControlsStatus; import com.smartdevicelink.proxy.rpc.TireStatus; @@ -105,6 +107,8 @@ public class GetVehicleDataResponseTests extends BaseRpcTests { result.put(GetVehicleDataResponse.KEY_HANDS_OFF_STEERING, VehicleDataHelper.HANDS_OFF_STEERING); result.put(GetVehicleDataResponse.KEY_GEAR_STATUS, VehicleDataHelper.GEAR_STATUS); result.put(GetVehicleDataResponse.KEY_STABILITY_CONTROLS_STATUS, VehicleDataHelper.STABILITY_CONTROLS_STATUS); + result.put(GetVehicleDataResponse.KEY_CLIMATE_DATA, VehicleDataHelper.CLIMATE_DATA); + result.put(GetVehicleDataResponse.KEY_SEAT_OCCUPANCY, VehicleDataHelper.SEAT_OCCUPANCY); result.put(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME, VehicleDataHelper.OEM_CUSTOM_VEHICLE_DATA_STATE); } catch (JSONException e) { fail(TestValues.JSON_FAIL); @@ -133,6 +137,8 @@ public class GetVehicleDataResponseTests extends BaseRpcTests { JSONObject fuelRangeObj = new JSONObject(); JSONObject windowStatusObj = new JSONObject(); JSONObject gearStatusObj = new JSONObject(); + JSONObject seatOccupancyObj = new JSONObject(); + JSONObject climateDataObj = new JSONObject(); JSONArray fuelRangeArrayObj = new JSONArray(); JSONArray windowStatusArrayObj = new JSONArray(); @@ -278,6 +284,15 @@ public class GetVehicleDataResponseTests extends BaseRpcTests { windowStatusObj.put(WindowStatus.KEY_STATE, VehicleDataHelper.WINDOW_STATE); windowStatusArrayObj.put(windowStatusObj); + // CLIMATE_DATA + climateDataObj.put(ClimateData.KEY_ATMOSPHERIC_PRESSURE, VehicleDataHelper.CLIMATE_DATA_ATM_PRESSURE); + climateDataObj.put(ClimateData.KEY_CABIN_TEMPERATURE, VehicleDataHelper.CLIMATE_DATA_CABIN_TEMP.serializeJSON()); + climateDataObj.put(ClimateData.KEY_EXTERNAL_TEMPERATURE, VehicleDataHelper.CLIMATE_DATA_EXT_TEMP.serializeJSON()); + + // SEAT_OCCUPANCY + seatOccupancyObj.put(SeatOccupancy.KEY_SEATS_BELTED, VehicleDataHelper.SEATS_BELTED); + seatOccupancyObj.put(SeatOccupancy.KEY_SEATS_OCCUPIED, VehicleDataHelper.SEATS_OCCUPIED); + reference.put(GetVehicleDataResponse.KEY_SPEED, VehicleDataHelper.SPEED); reference.put(GetVehicleDataResponse.KEY_RPM, VehicleDataHelper.RPM); reference.put(GetVehicleDataResponse.KEY_EXTERNAL_TEMPERATURE, VehicleDataHelper.EXTERNAL_TEMPERATURE); @@ -307,10 +322,12 @@ public class GetVehicleDataResponseTests extends BaseRpcTests { reference.put(GetVehicleDataResponse.KEY_FUEL_RANGE, fuelRangeArrayObj); reference.put(GetVehicleDataResponse.KEY_TURN_SIGNAL, TurnSignal.OFF); reference.put(GetVehicleDataResponse.KEY_GEAR_STATUS, gearStatusObj); + reference.put(GetVehicleDataResponse.KEY_CLIMATE_DATA, climateDataObj); reference.put(GetVehicleDataResponse.KEY_ELECTRONIC_PARK_BRAKE_STATUS, VehicleDataHelper.ELECTRONIC_PARK_BRAKE_STATUS); reference.put(GetVehicleDataResponse.KEY_WINDOW_STATUS, windowStatusArrayObj); reference.put(GetVehicleDataResponse.KEY_HANDS_OFF_STEERING, VehicleDataHelper.HANDS_OFF_STEERING); reference.put(GetVehicleDataResponse.KEY_STABILITY_CONTROLS_STATUS, stabilityControlsStatusObj); + reference.put(GetVehicleDataResponse.KEY_SEAT_OCCUPANCY, seatOccupancyObj); reference.put(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME, VehicleDataHelper.OEM_CUSTOM_VEHICLE_DATA_STATE); JSONObject underTest = msg.serializeJSON(); @@ -424,6 +441,13 @@ public class GetVehicleDataResponseTests extends BaseRpcTests { assertTrue(TestValues.TRUE, Validator.validateGearStatuses( new GearStatus(JsonRPCMarshaller.deserializeJSONObject(myKeyObjReference)), new GearStatus(JsonRPCMarshaller.deserializeJSONObject(myKeyObjTest)))); + } else if (key.equals(GetVehicleDataResponse.KEY_SEAT_OCCUPANCY)) { + JSONObject myKeyObjReference = JsonUtils.readJsonObjectFromJsonObject(reference, key); + JSONObject myKeyObjTest = JsonUtils.readJsonObjectFromJsonObject(underTest, key); + + assertTrue(TestValues.TRUE, Validator.validateSeatOccupancies( + new SeatOccupancy(JsonRPCMarshaller.deserializeJSONObject(myKeyObjReference)), + new SeatOccupancy(JsonRPCMarshaller.deserializeJSONObject(myKeyObjTest)))); } else if (key.equals(GetVehicleDataResponse.KEY_STABILITY_CONTROLS_STATUS)) { JSONObject myKeyObjReference = JsonUtils.readJsonObjectFromJsonObject(reference, key); JSONObject myKeyObjTest = JsonUtils.readJsonObjectFromJsonObject(underTest, key); @@ -437,6 +461,24 @@ public class GetVehicleDataResponseTests extends BaseRpcTests { status2 ) ); + } else if (key.equals(GetVehicleDataResponse.KEY_CLIMATE_DATA)) { + + + JSONObject myKeyObjReference = JsonUtils.readJsonObjectFromJsonObject(reference, key); + JSONObject myKeyObjTest = JsonUtils.readJsonObjectFromJsonObject(underTest, key); + + Hashtable<String, Object> hashReference = JsonRPCMarshaller.deserializeJSONObject(myKeyObjReference); + Hashtable<String, Object> hashTest = JsonRPCMarshaller.deserializeJSONObject(myKeyObjTest); + + ClimateData climateData1 = new ClimateData(hashReference); + ClimateData climateData2 = new ClimateData(hashTest); + + assertTrue("JSON value didn't match expected value for key \"" + key + "\".", + Validator.validateClimateData( + climateData1, + climateData2 + ) + ); } else if (key.equals(GetVehicleDataResponse.KEY_FUEL_RANGE)) { JSONArray fuelRangeArrayObjReference = JsonUtils.readJsonArrayFromJsonObject(reference, key); List<FuelRange> fuelRangeRefereceList = new ArrayList<FuelRange>(); @@ -525,6 +567,8 @@ public class GetVehicleDataResponseTests extends BaseRpcTests { assertEquals(TestValues.MATCH, VehicleDataHelper.GEAR_STATUS, ((GetVehicleDataResponse) msg).getGearStatus()); assertEquals(TestValues.MATCH, VehicleDataHelper.HANDS_OFF_STEERING, ((GetVehicleDataResponse) msg).getHandsOffSteering()); assertEquals(TestValues.MATCH, VehicleDataHelper.STABILITY_CONTROLS_STATUS, ((GetVehicleDataResponse) msg).getStabilityControlsStatus()); + assertEquals(TestValues.MATCH, VehicleDataHelper.CLIMATE_DATA, ((GetVehicleDataResponse) msg).getClimateData()); + assertEquals(TestValues.MATCH, VehicleDataHelper.SEAT_OCCUPANCY, ((GetVehicleDataResponse) msg).getSeatOccupancy()); assertEquals(TestValues.MATCH, VehicleDataHelper.OEM_CUSTOM_VEHICLE_DATA_STATE, ((GetVehicleDataResponse) msg).getOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME)); // Invalid/Null Tests @@ -563,6 +607,8 @@ public class GetVehicleDataResponseTests extends BaseRpcTests { assertNull(TestValues.NULL, msg.getHandsOffSteering()); assertNull(TestValues.NULL, msg.getStabilityControlsStatus()); assertNull(TestValues.NULL, msg.getWindowStatus()); + assertNull(TestValues.NULL, msg.getClimateData()); + assertNull(TestValues.NULL, msg.getSeatOccupancy()); assertNull(TestValues.NULL, msg.getOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME)); } @@ -647,11 +693,19 @@ public class GetVehicleDataResponseTests extends BaseRpcTests { ClusterModeStatus clusterModeStatus = new ClusterModeStatus(JsonRPCMarshaller.deserializeJSONObject(clusterModeStatusObj)); assertTrue(TestValues.TRUE, Validator.validateClusterModeStatus(clusterModeStatus, cmd.getClusterModeStatus())); + JSONObject climateDataObj = JsonUtils.readJsonObjectFromJsonObject(parameters, GetVehicleDataResponse.KEY_CLIMATE_DATA); + ClimateData climateData = new ClimateData(JsonRPCMarshaller.deserializeJSONObject(climateDataObj)); + assertTrue(TestValues.TRUE, Validator.validateClimateData(climateData, cmd.getClimateData())); + JSONObject gearStatusObj = JsonUtils.readJsonObjectFromJsonObject(parameters, GetVehicleDataResponse.KEY_GEAR_STATUS); GearStatus gearStatus = new GearStatus(JsonRPCMarshaller.deserializeJSONObject(gearStatusObj)); GearStatus cmdStatus = cmd.getGearStatus(); assertTrue(TestValues.TRUE, Validator.validateGearStatuses(gearStatus, cmdStatus)); + JSONObject seatOccupancyObj = JsonUtils.readJsonObjectFromJsonObject(parameters, GetVehicleDataResponse.KEY_SEAT_OCCUPANCY); + SeatOccupancy seatOccupancy = new SeatOccupancy(JsonRPCMarshaller.deserializeJSONObject(seatOccupancyObj)); + assertTrue(TestValues.TRUE, Validator.validateSeatOccupancies(seatOccupancy, cmd.getSeatOccupancy())); + JSONObject myKeyObj = JsonUtils.readJsonObjectFromJsonObject(parameters, GetVehicleDataResponse.KEY_MY_KEY); MyKey myKey = new MyKey(JsonRPCMarshaller.deserializeJSONObject(myKeyObj)); assertTrue(TestValues.TRUE, Validator.validateMyKey(myKey, cmd.getMyKey())); diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/SubscribeVehicleDataResponseTest.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/SubscribeVehicleDataResponseTest.java index 6f9c9a45c..278a29b35 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/SubscribeVehicleDataResponseTest.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/SubscribeVehicleDataResponseTest.java @@ -70,6 +70,8 @@ public class SubscribeVehicleDataResponseTest extends BaseRpcTests { msg.setWindowStatus(TestValues.GENERAL_VEHICLEDATARESULT_LIST.get(VehicleDataType.VEHICLEDATA_WINDOWSTATUS.ordinal())); msg.setStabilityControlsStatus(TestValues.GENERAL_VEHICLEDATARESULT_LIST.get(VehicleDataType.VEHICLEDATA_STABILITYCONTROLSSTATUS.ordinal())); msg.setOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME, TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA); + msg.setSeatOccupancy(TestValues.GENERAL_VEHICLEDATARESULT_LIST.get(VehicleDataType.VEHICLEDATA_SEATOCCUPANCY.ordinal())); + msg.setClimateData(TestValues.GENERAL_VEHICLEDATARESULT_LIST.get(VehicleDataType.VEHICLEDATA_CLIMATEDATA.ordinal())); return msg; } @@ -128,6 +130,9 @@ public class SubscribeVehicleDataResponseTest extends BaseRpcTests { result.put(SubscribeVehicleDataResponse.KEY_ELECTRONIC_PARK_BRAKE_STATUS, TestValues.GENERAL_VEHICLEDATARESULT_LIST.get(VehicleDataType.VEHICLEDATA_ELECTRONICPARKBRAKESTATUS.ordinal()).serializeJSON()); result.put(SubscribeVehicleDataResponse.KEY_HANDS_OFF_STEERING, TestValues.GENERAL_VEHICLEDATARESULT_LIST.get(VehicleDataType.VEHICLEDATA_HANDSOFFSTEERING.ordinal()).serializeJSON()); result.put(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME, TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA.serializeJSON()); + result.put(SubscribeVehicleDataResponse.KEY_CLIMATE_DATA, TestValues.GENERAL_VEHICLEDATARESULT_LIST.get(VehicleDataType.VEHICLEDATA_CLIMATEDATA.ordinal()).serializeJSON()); + result.put(SubscribeVehicleDataResponse.KEY_SEAT_OCCUPANCY, TestValues.GENERAL_VEHICLEDATARESULT_LIST.get(VehicleDataType.VEHICLEDATA_SEATOCCUPANCY.ordinal()).serializeJSON()); + } catch (JSONException e) { fail(TestValues.JSON_FAIL); } @@ -174,7 +179,9 @@ public class SubscribeVehicleDataResponseTest extends BaseRpcTests { VehicleDataResult testWindowStatus = ((SubscribeVehicleDataResponse) msg).getWindowStatus(); VehicleDataResult testGearStatus = ((SubscribeVehicleDataResponse) msg).getGearStatus(); VehicleDataResult testStabilityControlStatus = ((SubscribeVehicleDataResponse) msg).getStabilityControlsStatus(); + VehicleDataResult testClimateData = ((SubscribeVehicleDataResponse) msg).getClimateData(); VehicleDataResult testOEMCustomVehicleData = ((SubscribeVehicleDataResponse) msg).getOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME); + VehicleDataResult testSeatOccupancy = ((SubscribeVehicleDataResponse) msg).getSeatOccupancy(); // Valid Tests assertTrue(TestValues.TRUE, testResult.equals(TestValues.GENERAL_RESULT)); @@ -211,6 +218,8 @@ public class SubscribeVehicleDataResponseTest extends BaseRpcTests { assertTrue(TestValues.TRUE, testWindowStatus.getDataType().equals(VehicleDataType.VEHICLEDATA_WINDOWSTATUS)); assertTrue(TestValues.TRUE, testStabilityControlStatus.getDataType().equals(VehicleDataType.VEHICLEDATA_STABILITYCONTROLSSTATUS)); assertTrue(TestValues.TRUE, testOEMCustomVehicleData.getOEMCustomVehicleDataType().equals(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME)); + assertTrue(TestValues.TRUE, testClimateData.getDataType().equals(VehicleDataType.VEHICLEDATA_CLIMATEDATA)); + assertTrue(TestValues.TRUE, testSeatOccupancy.getDataType().equals(VehicleDataType.VEHICLEDATA_SEATOCCUPANCY)); // Invalid/Null Tests SubscribeVehicleDataResponse msg = new SubscribeVehicleDataResponse(); @@ -250,6 +259,8 @@ public class SubscribeVehicleDataResponseTest extends BaseRpcTests { assertNull(TestValues.NULL, msg.getWindowStatus()); assertNull(TestValues.NULL, msg.getGearStatus()); assertNull(TestValues.NULL, msg.getStabilityControlsStatus()); + assertNull(TestValues.NULL, msg.getClimateData()); + assertNull(TestValues.NULL, msg.getSeatOccupancy()); assertNull(TestValues.NULL, msg.getOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME)); } @@ -402,9 +413,17 @@ public class SubscribeVehicleDataResponseTest extends BaseRpcTests { VehicleDataResult referenceStabilityControlStatus = new VehicleDataResult(JsonRPCMarshaller.deserializeJSONObject(stabilityControlStatus)); assertTrue(TestValues.TRUE, Validator.validateStabilityControlStatus(referenceStabilityControlStatus, cmd.getStabilityControlsStatus())); + JSONObject climateData = JsonUtils.readJsonObjectFromJsonObject(parameters, SubscribeVehicleDataResponse.KEY_CLIMATE_DATA); + VehicleDataResult referenceClimateData = new VehicleDataResult(JsonRPCMarshaller.deserializeJSONObject(climateData)); + assertTrue(TestValues.TRUE, Validator.validateVehicleDataResult(referenceClimateData, cmd.getClimateData())); + JSONObject oemCustomVehicleDataName = JsonUtils.readJsonObjectFromJsonObject(parameters, TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME); VehicleDataResult referenceOemCustomData = new VehicleDataResult(JsonRPCMarshaller.deserializeJSONObject(oemCustomVehicleDataName)); assertTrue(TestValues.TRUE, Validator.validateVehicleDataResult(referenceOemCustomData, cmd.getOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME))); + + JSONObject seatOccupancy = JsonUtils.readJsonObjectFromJsonObject(parameters, SubscribeVehicleDataResponse.KEY_SEAT_OCCUPANCY); + VehicleDataResult referenceSeatOccupancy = new VehicleDataResult(JsonRPCMarshaller.deserializeJSONObject(seatOccupancy)); + assertTrue(TestValues.TRUE, Validator.validateVehicleDataResult(referenceSeatOccupancy, cmd.getSeatOccupancy())); } catch (JSONException e) { e.printStackTrace(); } diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/UnsubscribeVehicleDataResponseTest.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/UnsubscribeVehicleDataResponseTest.java index 1d5504b08..6169de07f 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/UnsubscribeVehicleDataResponseTest.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/responses/UnsubscribeVehicleDataResponseTest.java @@ -70,8 +70,10 @@ public class UnsubscribeVehicleDataResponseTest extends BaseRpcTests { msg.setWindowStatus(TestValues.GENERAL_VEHICLEDATARESULT_LIST.get(VehicleDataType.VEHICLEDATA_WINDOWSTATUS.ordinal())); msg.setHandsOffSteering(TestValues.GENERAL_VEHICLEDATARESULT_LIST.get(VehicleDataType.VEHICLEDATA_HANDSOFFSTEERING.ordinal())); msg.setGearStatus(TestValues.GENERAL_VEHICLEDATARESULT_LIST.get(VehicleDataType.VEHICLEDATA_GEARSTATUS.ordinal())); + msg.setSeatOccupancy(TestValues.GENERAL_VEHICLEDATARESULT_LIST.get(VehicleDataType.VEHICLEDATA_SEATOCCUPANCY.ordinal())); msg.setStabilityControlsStatus(TestValues.GENERAL_VEHICLEDATARESULT_LIST.get(VehicleDataType.VEHICLEDATA_STABILITYCONTROLSSTATUS.ordinal())); msg.setOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME, TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA); + msg.setClimateData(TestValues.GENERAL_VEHICLEDATARESULT_LIST.get(VehicleDataType.VEHICLEDATA_CLIMATEDATA.ordinal())); return msg; } @@ -129,8 +131,11 @@ public class UnsubscribeVehicleDataResponseTest extends BaseRpcTests { result.put(SubscribeVehicleDataResponse.KEY_STABILITY_CONTROLS_STATUS, TestValues.GENERAL_VEHICLEDATARESULT_LIST.get(VehicleDataType.VEHICLEDATA_STABILITYCONTROLSSTATUS.ordinal()).serializeJSON()); result.put(SubscribeVehicleDataResponse.KEY_ELECTRONIC_PARK_BRAKE_STATUS, TestValues.GENERAL_VEHICLEDATARESULT_LIST.get(VehicleDataType.VEHICLEDATA_ELECTRONICPARKBRAKESTATUS.ordinal()).serializeJSON()); result.put(SubscribeVehicleDataResponse.KEY_HANDS_OFF_STEERING, TestValues.GENERAL_VEHICLEDATARESULT_LIST.get(VehicleDataType.VEHICLEDATA_HANDSOFFSTEERING.ordinal()).serializeJSON()); + result.put(SubscribeVehicleDataResponse.KEY_SEAT_OCCUPANCY, TestValues.GENERAL_VEHICLEDATARESULT_LIST.get(VehicleDataType.VEHICLEDATA_SEATOCCUPANCY.ordinal()).serializeJSON()); result.put(SubscribeVehicleDataResponse.KEY_WINDOW_STATUS, TestValues.GENERAL_VEHICLEDATARESULT_LIST.get(VehicleDataType.VEHICLEDATA_WINDOWSTATUS.ordinal()).serializeJSON()); result.put(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME, TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA.serializeJSON()); + result.put(SubscribeVehicleDataResponse.KEY_CLIMATE_DATA, TestValues.GENERAL_VEHICLEDATARESULT_LIST.get(VehicleDataType.VEHICLEDATA_CLIMATEDATA.ordinal()).serializeJSON()); + } catch (JSONException e) { fail(TestValues.JSON_FAIL); } @@ -177,7 +182,9 @@ public class UnsubscribeVehicleDataResponseTest extends BaseRpcTests { VehicleDataResult testGearStatus = ((UnsubscribeVehicleDataResponse) msg).getGearStatus(); VehicleDataResult testWindowStatus = ((UnsubscribeVehicleDataResponse) msg).getWindowStatus(); VehicleDataResult testStabilityControlStatus = ((UnsubscribeVehicleDataResponse) msg).getStabilityControlsStatus(); + VehicleDataResult testClimateData = ((UnsubscribeVehicleDataResponse) msg).getClimateData(); VehicleDataResult testOemCustomData = ((UnsubscribeVehicleDataResponse) msg).getOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME); + VehicleDataResult testSeatOccupancy = ((UnsubscribeVehicleDataResponse) msg).getSeatOccupancy(); // Valid Tests assertTrue(TestValues.TRUE, testResult.equals(TestValues.GENERAL_RESULT)); @@ -213,7 +220,9 @@ public class UnsubscribeVehicleDataResponseTest extends BaseRpcTests { assertTrue(TestValues.TRUE, testWindowStatus.getDataType().equals(VehicleDataType.VEHICLEDATA_WINDOWSTATUS)); assertTrue(TestValues.TRUE, testStabilityControlStatus.getDataType().equals(VehicleDataType.VEHICLEDATA_STABILITYCONTROLSSTATUS)); assertTrue(TestValues.TRUE, testOemCustomData.getOEMCustomVehicleDataType().equals(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME)); + assertTrue(TestValues.TRUE, testClimateData.getDataType().equals(VehicleDataType.VEHICLEDATA_CLIMATEDATA)); assertTrue(TestValues.TRUE, testGearStatus.getDataType().equals(VehicleDataType.VEHICLEDATA_GEARSTATUS)); + assertTrue(TestValues.TRUE, testSeatOccupancy.getDataType().equals(VehicleDataType.VEHICLEDATA_SEATOCCUPANCY)); // Invalid/Null Tests UnsubscribeVehicleDataResponse msg = new UnsubscribeVehicleDataResponse(); @@ -254,6 +263,8 @@ public class UnsubscribeVehicleDataResponseTest extends BaseRpcTests { assertNull(TestValues.NULL, msg.getWindowStatus()); assertNull(TestValues.NULL, msg.getHandsOffSteering()); assertNull(TestValues.NULL, msg.getStabilityControlsStatus()); + assertNull(TestValues.NULL, msg.getClimateData()); + assertNull(TestValues.NULL, msg.getSeatOccupancy()); assertNull(TestValues.NULL, msg.getOEMCustomVehicleData(TestValues.GENERAL_OEM_CUSTOM_VEHICLE_DATA_NAME)); } @@ -409,6 +420,14 @@ public class UnsubscribeVehicleDataResponseTest extends BaseRpcTests { JSONObject stabilityControlsStatus = JsonUtils.readJsonObjectFromJsonObject(parameters, UnsubscribeVehicleDataResponse.KEY_STABILITY_CONTROLS_STATUS); VehicleDataResult referenceStabilityControlStatus = new VehicleDataResult(JsonRPCMarshaller.deserializeJSONObject(stabilityControlsStatus)); assertTrue(TestValues.TRUE, Validator.validateStabilityControlStatus(referenceStabilityControlStatus, cmd.getStabilityControlsStatus())); + + JSONObject climateData = JsonUtils.readJsonObjectFromJsonObject(parameters, UnsubscribeVehicleDataResponse.KEY_CLIMATE_DATA); + VehicleDataResult referenceClimateData = new VehicleDataResult(JsonRPCMarshaller.deserializeJSONObject(climateData)); + assertTrue(TestValues.TRUE, Validator.validateVehicleDataResult(referenceClimateData, cmd.getClimateData())); + + JSONObject seatOccupancy = JsonUtils.readJsonObjectFromJsonObject(parameters, UnsubscribeVehicleDataResponse.KEY_SEAT_OCCUPANCY); + VehicleDataResult referenceSeatOccupancy = new VehicleDataResult(JsonRPCMarshaller.deserializeJSONObject(seatOccupancy)); + assertTrue(TestValues.TRUE, Validator.validateVehicleDataResult(referenceSeatOccupancy, cmd.getSeatOccupancy())); } catch (JSONException e) { e.printStackTrace(); } diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/MockInterfaceBroker.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/MockInterfaceBroker.java index 364e6c976..57d2fa1b2 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/MockInterfaceBroker.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/test/streaming/MockInterfaceBroker.java @@ -3,6 +3,7 @@ package com.smartdevicelink.test.streaming; import com.smartdevicelink.proxy.RPCMessage; import com.smartdevicelink.session.ISdlSessionListener; import com.smartdevicelink.transport.BaseTransportConfig; +import com.smartdevicelink.util.SystemInfo; import com.smartdevicelink.util.Version; /** @@ -24,7 +25,7 @@ public class MockInterfaceBroker implements ISdlSessionListener { } @Override - public void onSessionStarted(int sessionID, Version version) { + public void onSessionStarted(int sessionID, Version version, SystemInfo systemInfo) { } |