RandomizedStringTest.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/.
*/
package com.powsybl.openrao.commons;
import org.junit.jupiter.api.*;
import org.mockito.MockedStatic;
import org.mockito.Mockito;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.mockStatic;
/**
* @author Sebastien Murgey {@literal <sebastien.murgey at rte-france.com>}
*/
class RandomizedStringTest {
private static MockedStatic<UUID> uuidMock;
@BeforeAll
public static void setUpIndividual() {
uuidMock = mockStatic(UUID.class, Mockito.CALLS_REAL_METHODS);
}
@AfterAll
public static void cleanUp() {
uuidMock.close();
}
@Test
void generateRandomString() {
String generatedString = RandomizedString.getRandomizedString();
assertNotNull(generatedString);
assertFalse(generatedString.isEmpty());
generatedString = RandomizedString.getRandomizedString("Custom prefix ");
assertTrue(generatedString.startsWith("Custom prefix "));
assertNotEquals("Custom prefix ", generatedString);
generatedString = RandomizedString.getRandomizedString(Collections.emptyList());
assertNotNull(generatedString);
assertFalse(generatedString.isEmpty());
}
@Test
void generateStringDifferentToInvalidOnes() {
UUID uuid = UUID.fromString("2937ed60-9511-11ea-bb37-0242ac130002");
UUID otherUuid = UUID.fromString("622fc1d6-41ba-43bc-9c54-c11073fc2ce7");
uuidMock.when(() -> UUID.randomUUID()).thenReturn(uuid, otherUuid);
String generatedString = RandomizedString.getRandomizedString("TEST_", Collections.singletonList("TEST_" + uuid));
assertEquals("TEST_" + otherUuid, generatedString);
}
@Test
void generateStringFailsIfNotEnoughTries() {
UUID uuid = UUID.fromString("2937ed60-9511-11ea-bb37-0242ac130002");
UUID otherUuid = UUID.fromString("622fc1d6-41ba-43bc-9c54-c11073fc2ce7");
uuidMock.when(UUID::randomUUID).thenReturn(uuid, otherUuid);
List<String> usedStrings = Collections.singletonList("RANDOMIZED_STRING_" + uuid);
assertThrows(OpenRaoException.class, () -> RandomizedString.getRandomizedString("RANDOMIZED_STRING_", usedStrings, 1));
}
@Test
void exceptionIfInvalidMaxTry() {
List<String> usedStrings = Collections.emptyList();
assertThrows(IllegalArgumentException.class, () -> RandomizedString.getRandomizedString("", usedStrings, 0));
}
}