blob: b3da381349affa041a61a3d040766d8c388aea87 [file] [log] [blame]
/*******************************************************************************
* Copyright (C) 2021 the Eclipse BaSyx Authors
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
******************************************************************************/
package org.eclipse.basyx.vab;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
import java.util.Map;
import org.eclipse.basyx.vab.exception.provider.MalformedRequestException;
import org.eclipse.basyx.vab.exception.provider.ResourceNotFoundException;
import org.eclipse.basyx.vab.manager.VABConnectionManager;
import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
/**
* Snippet to test get functionality of a IModelProvider.
* Based on the MapRead tests within the SDK, but removes
* Java-specific local tests.
*
* @author espen
*
*/
public class CppMapRead {
public static void test(VABConnectionManager connManager) {
// Connect to VAB element with ID "urn:fhg:es.iese:vab:1:1:simplevabelement"
VABElementProxy connVABElement = connManager.connectToVABElement("urn:fhg:es.iese:vab:1:1:simplevabelement");
// Test path access
Object slashA = connVABElement.getModelPropertyValue("/primitives/integer");
Object slashB = connVABElement.getModelPropertyValue("primitives/integer/");
Object slashC = connVABElement.getModelPropertyValue("/primitives/integer/");
Object slashD = connVABElement.getModelPropertyValue("/primitives/integer/");
assertEquals(slashA, 123);
assertEquals(slashB, 123);
assertEquals(slashC, 123);
assertEquals(slashD, 123);
// Test reading different data types
Object map = connVABElement.getModelPropertyValue("primitives");
Object doubleValue = connVABElement.getModelPropertyValue("primitives/double");
Object string = connVABElement.getModelPropertyValue("primitives/string");
assertEquals(3, ((Map<?, ?>) map).size());
assertEquals(3.14d, doubleValue);
assertEquals("TestValue", string);
// Test case sensitivity
Object caseSensitiveA = connVABElement.getModelPropertyValue("special/casesensitivity");
Object caseSensitiveB = connVABElement.getModelPropertyValue("special/caseSensitivity");
assertEquals(true, caseSensitiveA);
assertEquals(false, caseSensitiveB);
// Test reading null value
Object nullValue = connVABElement.getModelPropertyValue("special/null");
assertNull(nullValue);
// Non-existing parent element
try {
connVABElement.getModelPropertyValue("unknown/x");
fail();
} catch (ResourceNotFoundException e) {}
// Non-existing target element
try {
connVABElement.getModelPropertyValue("primitives/unkown");
fail();
} catch (ResourceNotFoundException e) {}
try {
connVABElement.getModelPropertyValue("unkown");
fail();
} catch (ResourceNotFoundException e) {}
// Nested access
assertEquals(100, connVABElement.getModelPropertyValue("special/nested/nested/value"));
// Empty path
Object rootValueA = connVABElement.getModelPropertyValue("");
Object rootValueB = connVABElement.getModelPropertyValue("/");
assertEquals(4, ((Map<?, ?>) rootValueA).size());
assertEquals(4, ((Map<?, ?>) rootValueB).size());
// Null path - should throw exception
try {
connVABElement.getModelPropertyValue(null);
fail();
} catch (MalformedRequestException e) {}
}
}