package io.delphiplatform.api.util;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import java.util.Collections;
import java.util.Set;

class HttpUtilsTest {
    @Test
    void t() {
        Set<String> result1 = HttpUtils.parseRawStringListQueryParamCommaSafe(
            "genre_name=Work%2CStudy", "genre_name");
        Assertions.assertEquals(Set.of("Work,Study"), result1);

        Set<String> result2 = HttpUtils.parseRawStringListQueryParamCommaSafe(
            "genre_name=Work%2C%20Study", "genre_name");
        Assertions.assertEquals(Set.of("Work, Study"), result2);

        Set<String> result3 = HttpUtils.parseRawStringListQueryParamCommaSafe(
            "genre_name=Work%2C%20,", "genre_name");
        Assertions.assertEquals(Set.of("Work,"), result3);

        Set<String> result4 = HttpUtils.parseRawStringListQueryParamCommaSafe(
            "genre_name=%2C%20Work,", "genre_name");
        Assertions.assertEquals(Set.of(", Work"), result4);

        Set<String> result5 = HttpUtils.parseRawStringListQueryParamCommaSafe(
            "genre_name=,%20%2C%20Work", "genre_name");
        Assertions.assertEquals(Set.of(", Work"), result5);

        Set<String> result6 = HttpUtils.parseRawStringListQueryParamCommaSafe(
            "genre_name=Work%2CStudy,test", "genre_name");
        Assertions.assertEquals(Set.of("Work,Study", "test"), result6);

        Set<String> result7 = HttpUtils.parseRawStringListQueryParamCommaSafe(
            "genre_name=test,Work%2CStudy", "genre_name");
        Assertions.assertEquals(Set.of("test", "Work,Study"), result7);

        Set<String> result8 = HttpUtils.parseRawStringListQueryParamCommaSafe(
            "genre_name=test,Work%2CStudy,zxc", "genre_name");
        Assertions.assertEquals(Set.of("test", "Work,Study", "zxc"), result8);

        Set<String> result9 = HttpUtils.parseRawStringListQueryParamCommaSafe(
            "genre_name=Work", "genre_name");
        Assertions.assertEquals(Set.of("Work"), result9);

        Set<String> result10 = HttpUtils.parseRawStringListQueryParamCommaSafe(
            "genre_name=Work,", "genre_name");
        Assertions.assertEquals(Set.of("Work"), result10);

        Set<String> result11 = HttpUtils.parseRawStringListQueryParamCommaSafe(
            "genre_name=,Work", "genre_name");
        Assertions.assertEquals(Set.of("Work"), result11);

        Set<String> result12 = HttpUtils.parseRawStringListQueryParamCommaSafe(
            "genre_name=,Work,", "genre_name");
        Assertions.assertEquals(Set.of("Work"), result12);

        Set<String> result13 = HttpUtils.parseRawStringListQueryParamCommaSafe(
            "genre_name=Work,test", "genre_name");
        Assertions.assertEquals(Set.of("Work", "test"), result13);

        Set<String> result14 = HttpUtils.parseRawStringListQueryParamCommaSafe(
            "genre_name=Work,test,", "genre_name");
        Assertions.assertEquals(Set.of("Work", "test"), result14);

        Set<String> result15 = HttpUtils.parseRawStringListQueryParamCommaSafe(
            "genre_name=%20%20", "genre_name");
        Assertions.assertEquals(Collections.emptySet(), result15);

        Set<String> result16 = HttpUtils.parseRawStringListQueryParamCommaSafe(
            "genre_name=%20%20,%20%20", "genre_name");
        Assertions.assertEquals(Collections.emptySet(), result16);

        Set<String> result17 = HttpUtils.parseRawStringListQueryParamCommaSafe(
            "genre_name=,%20%20,", "genre_name");
        Assertions.assertEquals(Collections.emptySet(), result17);

        Set<String> result18 = HttpUtils.parseRawStringListQueryParamCommaSafe(
            "genre_name=,%2C,", "genre_name");
        Assertions.assertEquals(Set.of(","), result18);
    }
}