DynawoVersionTest.java

/**
 * Copyright (c) 2023, 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.dynawo.commons;

import com.powsybl.commons.PowsyblException;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

/**
 * @author Laurent Issertial {@literal <laurent.issertial at rte-france.com>}
 */
class DynawoVersionTest {

    private static final DynawoVersion DV_MIN = new DynawoVersion(1, 3, 0);

    @Test
    void testDynawoVersionCreation() {
        assertEquals("1.3.4", new DynawoVersion(1, 3, 4).toString());
        assertEquals("1.10.4", DynawoVersion.createFromString("1.10.4").toString());
        assertEquals("1.10.4", DynawoVersion.createFromString("1:10:4", ":").toString());

        // Errors
        assertThrows(PowsyblException.class, DynawoVersion::new);
        assertThrows(PowsyblException.class, () -> new DynawoVersion(1, -4));
        assertThrows(PowsyblException.class, () -> DynawoVersion.createFromString("1.-2"));
        assertThrows(PowsyblException.class, () -> DynawoVersion.createFromString("1:2"));
        assertThrows(PowsyblException.class, () -> DynawoVersion.createFromString("12.a"));
    }

    @Test
    void testEquals() {
        DynawoVersion dv1 = DV_MIN;
        DynawoVersion dv2 = DynawoVersion.createFromString("1.3");
        assertEquals(DV_MIN, dv1);
        assertEquals(DV_MIN, dv2);
        assertNotEquals(null, DV_MIN);
        assertNotEquals("1.3.0", DV_MIN);
    }

    @Test
    void testVersionEqual() {
        DynawoVersion dv1 = DynawoVersion.createFromString("1.3.0");
        DynawoVersion dv2 = DynawoVersion.createFromString("1.3");
        DynawoVersion dv3 = DynawoVersion.createFromString("1.3.0.0");
        assertEquals(0, DV_MIN.compareTo(dv1));
        assertEquals(0, DV_MIN.compareTo(dv2));
        assertEquals(0, DV_MIN.compareTo(dv3));
    }

    @Test
    void testVersionAboveMin() {
        DynawoVersion dv1 = DynawoVersion.createFromString("1.3.1");
        DynawoVersion dv2 = DynawoVersion.createFromString("2.1");
        DynawoVersion dv3 = DynawoVersion.createFromString("1.3.0.1");
        assertEquals(-1, DV_MIN.compareTo(dv1));
        assertEquals(-1, DV_MIN.compareTo(dv2));
        assertEquals(-1, DV_MIN.compareTo(dv3));
    }

    @Test
    void testVersionBelowMin() {
        DynawoVersion dv1 = DynawoVersion.createFromString("1.2.0");
        DynawoVersion dv2 = DynawoVersion.createFromString("1");
        assertEquals(1, DV_MIN.compareTo(dv1));
        assertEquals(1, DV_MIN.compareTo(dv2));
        assertEquals(1, DV_MIN.compareTo(null));
    }
}