package xyz.zhouxy.plusone.commons.model;

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

import java.util.Arrays;
import java.util.stream.Collectors;

import org.junit.jupiter.api.Test;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class SemVerTests {
    @Test
    void testCompareTo() {

        SemVer[] versions = {
                SemVer.of("1.0.0-alpha.beta"),
                SemVer.of("1.0.1"),
                SemVer.of("1.0.0-beta.11"),
                SemVer.of("1.0.0-beta"),
                SemVer.of("1.0.0-alpha"),
                SemVer.of("1.0.0-beta.2"),
                SemVer.of("1.0.0-rc.1"),
                SemVer.of("1.0.0"),
                SemVer.of("1.0.0-alpha.1"),

                // SemVer.of("10.20.30.40.50-RC2.20250904"),
                // SemVer.of("10.20.30.40.50-RC1.20250801"),
                // SemVer.of("10.20.30.40.50-M1.2"),
                // SemVer.of("10.20.30.40.50-M1"),
                // SemVer.of("10.3.30-50"),
                // SemVer.of("10.20.30-50"),
                // SemVer.of("10.20.30-beta"),
                // SemVer.of("10.20.30-alpha"),
                // SemVer.of("10.20.30-2a"),
                // SemVer.of("10.20.30-RC1"),
                // SemVer.of("10.20.30-RC2"),
                // SemVer.of("10.20.30-M2"),
                // SemVer.of("10.20.30-M1"),
                // SemVer.of("10.20.30-20"),
                // SemVer.of("10.20.30.40-10"),
        };

        String compareResult = Arrays.stream(versions)
                .sorted()
                .map(SemVer::getValue)
                .collect(Collectors.joining(" < "));
        log.info(compareResult);

        assertEquals(
                "1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0 < 1.0.1",
                compareResult);
    }
}
