Search in sources :

Example 1 with TwinChangedCallback

use of com.microsoft.azure.sdk.iot.deps.serializer.TwinChangedCallback in project azure-iot-sdk-java by Azure.

the class DeviceTwinTest method desiredChangeResponseCallsGenericCBCBWithDesiredChangeIfNullCB.

/*
    **Tests_SRS_DEVICETWIN_25_023: [**OnDesiredPropertyChange callback shall look for the user registered call back on the property that changed and if no callback is registered or is null then OnDesiredPropertyChange shall call the user on generic callback providing with the desired property change key and value pair**]**
    */
@Test
public void desiredChangeResponseCallsGenericCBCBWithDesiredChangeIfNullCB(@Mocked TwinParser mockedTwinParserObject) throws IOException {
    DeviceTwin testTwin = new DeviceTwin(mockedDeviceIO, mockedConfig, mockedStatusCB, null, mockedGenericPropertyCB, null);
    Map<Property, Pair<PropertyCallBack<String, Object>, Object>> desiredMap = new HashMap<>();
    desiredMap.put(new Property("DesiredProp1", "DesiredValue1"), new Pair<>((PropertyCallBack<String, Object>) null, null));
    testTwin.subscribeDesiredPropertiesNotification(desiredMap);
    TwinChangedCallback onDesiredChange = Deencapsulation.newInnerInstance("OnDesiredPropertyChanged", testTwin);
    final HashMap<String, Object> desiredPropertyMap = new HashMap<>();
    desiredPropertyMap.put("DesiredProp1", "DesiredValue1");
    //act
    onDesiredChange.execute(desiredPropertyMap);
    //assert
    assertTrue(desiredPropertyMap.isEmpty());
    new Verifications() {

        {
            mockedGenericPropertyCB.PropertyCall("DesiredProp1", "DesiredValue1", null);
            times = 1;
            desiredPropertyMap.remove("DesiredProp1");
            times = 1;
        }
    };
}
Also used : TwinChangedCallback(com.microsoft.azure.sdk.iot.deps.serializer.TwinChangedCallback) HashMap(java.util.HashMap) DeviceTwin(com.microsoft.azure.sdk.iot.device.DeviceTwin) Test(org.junit.Test)

Example 2 with TwinChangedCallback

use of com.microsoft.azure.sdk.iot.deps.serializer.TwinChangedCallback in project azure-iot-sdk-java by Azure.

the class DeviceTwinTest method updateReportedPropSetsCorrectTwinOperation.

/*
    **Tests_SRS_DEVICETWIN_25_012: [**The method shall create a device twin message with the serialized payload if not null to be sent IotHub.**]**
    **Tests_SRS_DEVICETWIN_25_013: [**This method shall set the message type as DEVICE_OPERATION_TWIN_UPDATE_REPORTED_PROPERTIES_REQUEST by calling setDeviceOperationType.**]**
    **Tests_SRS_DEVICETWIN_25_014: [**This method shall set the request id for the message by calling setRequestId .**]**
    **Tests_SRS_DEVICETWIN_25_015: [**This method shall send the message to the lower transport layers by calling sendEventAsync.**]**
     */
@Test
public void updateReportedPropSetsCorrectTwinOperation(@Mocked final TwinParser mockedTwinParserObject, @Mocked final DeviceTwinMessage mockedDeviceTwinMessage) throws IOException {
    final String mockedSerilizedProp = "SerializedReportedProperties";
    new NonStrictExpectations() {

        {
            new TwinParser(withAny(new TwinChangedCallback() {

                @Override
                public void execute(Map<String, Object> map) {
                }
            }), withAny(new TwinChangedCallback() {

                @Override
                public void execute(Map<String, Object> map) {
                }
            }));
            result = mockedTwinParserObject;
            mockedTwinParserObject.updateReportedProperty(withAny(new HashMap<String, Object>()));
            result = mockedSerilizedProp;
            new DeviceTwinMessage(withAny(new byte[0]));
            result = mockedDeviceTwinMessage;
        }
    };
    DeviceTwin testTwin = new DeviceTwin(mockedDeviceIO, mockedConfig, mockedStatusCB, null, mockedGenericPropertyCB, null);
    HashSet<Property> reportedProp = new HashSet<>();
    testTwin.updateReportedProperties(reportedProp);
    new Verifications() {

        {
            mockedTwinParserObject.updateReportedProperty(withAny(new HashMap<String, Object>()));
            times = 1;
            mockedDeviceTwinMessage.setRequestId(anyString);
            times = 1;
            mockedDeviceTwinMessage.setDeviceOperationType(DeviceOperations.DEVICE_OPERATION_TWIN_UPDATE_REPORTED_PROPERTIES_REQUEST);
            times = 1;
            mockedDeviceIO.sendEventAsync(mockedDeviceTwinMessage, (IotHubEventCallback) any, null);
            times = 1;
        }
    };
}
Also used : TwinChangedCallback(com.microsoft.azure.sdk.iot.deps.serializer.TwinChangedCallback) HashMap(java.util.HashMap) TwinParser(com.microsoft.azure.sdk.iot.deps.serializer.TwinParser) ConcurrentSkipListMap(java.util.concurrent.ConcurrentSkipListMap) Map(java.util.Map) HashMap(java.util.HashMap) DeviceTwin(com.microsoft.azure.sdk.iot.device.DeviceTwin) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 3 with TwinChangedCallback

use of com.microsoft.azure.sdk.iot.deps.serializer.TwinChangedCallback in project azure-iot-sdk-java by Azure.

the class DeviceTwinTest method desiredChangeResponseCallsUserGenericCBWithDesiredChangeIfUnsubscribedYet.

@Test
public void desiredChangeResponseCallsUserGenericCBWithDesiredChangeIfUnsubscribedYet(@Mocked TwinParser mockedTwinParserObject) throws IOException {
    DeviceTwin testTwin = new DeviceTwin(mockedDeviceIO, mockedConfig, mockedStatusCB, null, mockedGenericPropertyCB, null);
    TwinChangedCallback onDesiredChange = Deencapsulation.newInnerInstance("OnDesiredPropertyChanged", testTwin);
    final HashMap<String, Object> desiredPropertyMap = new HashMap<>();
    desiredPropertyMap.put("DesiredProp1", "DesiredValue1");
    //act
    onDesiredChange.execute(desiredPropertyMap);
    //assert
    assertTrue(desiredPropertyMap.isEmpty());
    new Verifications() {

        {
            mockedGenericPropertyCB.PropertyCall("DesiredProp1", "DesiredValue1", null);
            times = 1;
            desiredPropertyMap.remove("DesiredProp1");
            times = 1;
        }
    };
}
Also used : TwinChangedCallback(com.microsoft.azure.sdk.iot.deps.serializer.TwinChangedCallback) HashMap(java.util.HashMap) DeviceTwin(com.microsoft.azure.sdk.iot.device.DeviceTwin) Test(org.junit.Test)

Example 4 with TwinChangedCallback

use of com.microsoft.azure.sdk.iot.deps.serializer.TwinChangedCallback in project azure-iot-sdk-java by Azure.

the class DeviceTwinTest method subscribeToDesiredCallsGenericCBOnDesiredChangeIfNoUserCBFound.

/*
    **Codes_SRS_DEVICETWIN_25_023: [**OnDesiredPropertyChange callback shall look for the user registered call back on the property that changed and if no callback is registered or is null then OnDesiredPropertyChange shall call the user on generic callback providing with the desired property change key and value pair**]**
     */
@Test
public void subscribeToDesiredCallsGenericCBOnDesiredChangeIfNoUserCBFound(@Mocked final PropertyCallBack<String, Object> mockedDesiredCB) throws IOException {
    DeviceTwin testTwin = new DeviceTwin(mockedDeviceIO, mockedConfig, mockedStatusCB, null, mockedGenericPropertyCB, null);
    Map<Property, Pair<PropertyCallBack<String, Object>, Object>> desiredMap = new HashMap<>();
    desiredMap.put(new Property("DesiredProp1", "DesiredValue1"), new Pair<>(mockedDesiredCB, null));
    testTwin.subscribeDesiredPropertiesNotification(desiredMap);
    TwinChangedCallback onDesiredChange = Deencapsulation.newInnerInstance("OnDesiredPropertyChanged", testTwin);
    final HashMap<String, Object> desiredPropertyMap = new HashMap<>();
    desiredPropertyMap.put("DesiredProp2", "DesiredValue2");
    //act
    onDesiredChange.execute(desiredPropertyMap);
    //assert
    assertTrue(desiredPropertyMap.isEmpty());
    new Verifications() {

        {
            mockedGenericPropertyCB.PropertyCall("DesiredProp2", "DesiredValue2", null);
            times = 1;
            desiredPropertyMap.remove("DesiredProp1");
            times = 1;
        }
    };
}
Also used : TwinChangedCallback(com.microsoft.azure.sdk.iot.deps.serializer.TwinChangedCallback) HashMap(java.util.HashMap) DeviceTwin(com.microsoft.azure.sdk.iot.device.DeviceTwin) Test(org.junit.Test)

Example 5 with TwinChangedCallback

use of com.microsoft.azure.sdk.iot.deps.serializer.TwinChangedCallback in project azure-iot-sdk-java by Azure.

the class DeviceTwinTest method constructorCreatesNewTwinObject.

/*
    **Tests_SRS_DEVICETWIN_25_004: [**The constructor shall create a new twin object which will hence forth be used as a storage for all the properties provided by user.**]**
     */
@Test
public void constructorCreatesNewTwinObject(@Mocked final TwinParser mockedTwinParserObject) throws IOException {
    new StrictExpectations() {

        {
            new TwinParser(withAny(new TwinChangedCallback() {

                @Override
                public void execute(Map<String, Object> map) {
                }
            }), withAny(new TwinChangedCallback() {

                @Override
                public void execute(Map<String, Object> map) {
                }
            }));
            result = mockedTwinParserObject;
        }
    };
    //act
    DeviceTwin testTwin = new DeviceTwin(mockedDeviceIO, mockedConfig, mockedStatusCB, null, mockedGenericPropertyCB, null);
    TwinParser actualTwinParserObj = Deencapsulation.getField(testTwin, "twinParser");
    //assert
    assertNotNull(actualTwinParserObj);
}
Also used : TwinChangedCallback(com.microsoft.azure.sdk.iot.deps.serializer.TwinChangedCallback) TwinParser(com.microsoft.azure.sdk.iot.deps.serializer.TwinParser) ConcurrentSkipListMap(java.util.concurrent.ConcurrentSkipListMap) Map(java.util.Map) HashMap(java.util.HashMap) DeviceTwin(com.microsoft.azure.sdk.iot.device.DeviceTwin) Test(org.junit.Test)

Aggregations

TwinChangedCallback (com.microsoft.azure.sdk.iot.deps.serializer.TwinChangedCallback)9 DeviceTwin (com.microsoft.azure.sdk.iot.device.DeviceTwin)9 HashMap (java.util.HashMap)9 Test (org.junit.Test)9 TwinParser (com.microsoft.azure.sdk.iot.deps.serializer.TwinParser)5 Map (java.util.Map)5 ConcurrentSkipListMap (java.util.concurrent.ConcurrentSkipListMap)5 HashSet (java.util.HashSet)2