IidmSerDeUtilTest.java
/**
* Copyright (c) 2020, RTE (http://www.rte-france.com)
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* SPDX-License-Identifier: MPL-2.0
*/
package com.powsybl.iidm.serde;
import com.powsybl.commons.PowsyblException;
import com.powsybl.iidm.serde.util.IidmSerDeUtil;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.fail;
/**
* @author Mathieu Bague {@literal <mathieu.bague@rte-france.com>}
*/
class IidmSerDeUtilTest {
private static final String ROOT = "root";
private static final String ELEMENT = "element";
@Test
void testReadMaximumVersion() {
NetworkDeserializerContext context = Mockito.mock(NetworkDeserializerContext.class);
Mockito.when(context.getVersion()).thenReturn(IidmVersion.V_1_1);
try {
IidmSerDeUtil.assertMaximumVersion(ROOT, ELEMENT, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_0, context);
fail();
} catch (PowsyblException e) {
assertEquals("root.element is not supported for IIDM version 1.1. IIDM version should be <= 1.0", e.getMessage());
}
try {
IidmSerDeUtil.assertMaximumVersion(ELEMENT, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_0, context);
fail();
} catch (PowsyblException e) {
assertEquals("element is not supported for IIDM version 1.1. IIDM version should be <= 1.0", e.getMessage());
}
}
@Test
void testWriteAssertMaximumVersion() {
NetworkSerializerContext context = Mockito.mock(NetworkSerializerContext.class);
Mockito.when(context.getVersion()).thenReturn(IidmVersion.V_1_1);
ExportOptions options = new ExportOptions();
Mockito.when(context.getOptions()).thenReturn(options);
try {
IidmSerDeUtil.assertMaximumVersion(ROOT, ELEMENT, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_0, context);
fail();
} catch (PowsyblException e) {
assertEquals("root.element is not supported for IIDM version 1.1. IIDM version should be <= 1.0", e.getMessage());
}
try {
IidmSerDeUtil.assertMaximumVersion(ELEMENT, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_0, context);
fail();
} catch (PowsyblException e) {
assertEquals("element is not supported for IIDM version 1.1. IIDM version should be <= 1.0", e.getMessage());
}
options.setIidmVersionIncompatibilityBehavior(ExportOptions.IidmVersionIncompatibilityBehavior.LOG_ERROR);
IidmSerDeUtil.assertMaximumVersion(ROOT, ELEMENT, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_0, context); // check it doesn't fail when behavior is LOG_ERROR
IidmSerDeUtil.assertMaximumVersion(ELEMENT, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_0, context); // check it doesn't fail when behavior is LOG_ERROR
}
@Test
void testMinimumVersion() {
NetworkDeserializerContext context = Mockito.mock(NetworkDeserializerContext.class);
Mockito.when(context.getVersion()).thenReturn(IidmVersion.V_1_0);
try {
IidmSerDeUtil.assertMinimumVersion(ROOT, ELEMENT, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_1, context);
fail();
} catch (PowsyblException e) {
assertEquals("root.element is not supported for IIDM version 1.0. IIDM version should be >= 1.1", e.getMessage());
}
try {
IidmSerDeUtil.assertMinimumVersion(ELEMENT, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_1, context);
fail();
} catch (PowsyblException e) {
assertEquals("element is not supported for IIDM version 1.0. IIDM version should be >= 1.1", e.getMessage());
}
}
@Test
void testReadStrictMaximumVersion() {
NetworkDeserializerContext context = Mockito.mock(NetworkDeserializerContext.class);
Mockito.when(context.getVersion()).thenReturn(IidmVersion.V_1_1);
try {
IidmSerDeUtil.assertStrictMaximumVersion(ROOT, ELEMENT, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_1, context);
} catch (PowsyblException e) {
assertEquals("root.element is not supported for IIDM version 1.1. IIDM version should be < 1.1", e.getMessage());
}
}
@Test
void testWriteStrictMaximumVersion() {
NetworkSerializerContext context = Mockito.mock(NetworkSerializerContext.class);
Mockito.when(context.getVersion()).thenReturn(IidmVersion.V_1_1);
ExportOptions options = new ExportOptions();
Mockito.when(context.getOptions()).thenReturn(options);
try {
IidmSerDeUtil.assertStrictMaximumVersion(ROOT, ELEMENT, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_1, context);
} catch (PowsyblException e) {
assertEquals("root.element is not supported for IIDM version 1.1. IIDM version should be < 1.1", e.getMessage());
}
options.setIidmVersionIncompatibilityBehavior(ExportOptions.IidmVersionIncompatibilityBehavior.LOG_ERROR);
IidmSerDeUtil.assertStrictMaximumVersion(ROOT, ELEMENT, IidmSerDeUtil.ErrorMessage.NOT_SUPPORTED, IidmVersion.V_1_1, context); // check it doesn't fail when behavior is LOG_ERROR
}
}