YamlPlatformConfigTest.java
/**
* Copyright (c) 2018, 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.commons.config;
import com.google.common.jimfs.Configuration;
import com.google.common.jimfs.Jimfs;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.io.Writer;
import java.nio.charset.StandardCharsets;
import java.nio.file.FileSystem;
import java.nio.file.Files;
import java.nio.file.Path;
import java.time.ZonedDateTime;
import java.util.Arrays;
import java.util.Collections;
import java.util.EnumSet;
import java.util.Optional;
import static org.junit.jupiter.api.Assertions.*;
/**
*
* @author Geoffroy Jamgotchian {@literal <geoffroy.jamgotchian at rte-france.com>}
*/
class YamlPlatformConfigTest {
enum E {
E1,
E2,
E3
}
@Test
void test() throws IOException {
try (FileSystem fileSystem = Jimfs.newFileSystem(Configuration.unix())) {
Path cfgDir = Files.createDirectory(fileSystem.getPath("config"));
try (Writer writer = Files.newBufferedWriter(cfgDir.resolve("config.yml"), StandardCharsets.UTF_8)) {
writer.write(String.join(System.lineSeparator(),
"module1:",
" s: a",
" sl:",
" - a",
" - b",
" - c",
" el:",
" - E1",
" - E2",
" - E3",
" i: 3",
" l: 444444444",
" f: 3.3",
" b: true",
" p: /work/a",
" pl:",
" - /work/a",
" - /work/b",
" cl: java.lang.String",
" dt: 2015-01-01T00:00:00Z",
" it: 2015-01-01T00:00:00Z/2015-01-01T01:45:00Z"));
}
PlatformConfig config = new PlatformConfig(new YamlModuleConfigRepository(cfgDir.resolve("config.yml")), cfgDir);
assertFalse(config.getOptionalModuleConfig("module2").isPresent());
assertFalse(config.getOptionalModuleConfig("module2").isPresent());
Optional<ModuleConfig> optModule1 = config.getOptionalModuleConfig("module1");
assertTrue(optModule1.isPresent());
ModuleConfig module1 = optModule1.get();
assertEquals("a", module1.getStringProperty("s"));
assertEquals(Collections.singletonList("a"), module1.getStringListProperty("s"));
assertEquals(Arrays.asList("a", "b", "c"), module1.getStringListProperty("sl"));
assertEquals(EnumSet.of(E.E1, E.E2, E.E3), module1.getEnumSetProperty("el", E.class));
assertEquals(3, module1.getIntProperty("i"));
assertEquals(444444444L, module1.getLongProperty("l"));
assertEquals(3.3f, module1.getFloatProperty("f"), 0f);
assertEquals(3.3, module1.getDoubleProperty("f"), 0);
assertTrue(module1.getBooleanProperty("b"));
assertEquals(fileSystem.getPath("/work/a"), module1.getPathProperty("p"));
assertEquals(Arrays.asList(fileSystem.getPath("/work/a"), fileSystem.getPath("/work/b")), module1.getPathListProperty("pl"));
assertEquals(String.class, module1.getClassProperty("cl", String.class));
assertEquals(ZonedDateTime.parse("2015-01-01T00:00:00Z"), module1.getDateTimeProperty("dt"));
}
}
}