@ParameterizedTest
    @CsvSource({
            "a://b/,         a, b, /,,",
            "a://b/c,        a, b, /c,,",
            "a://b/c?d,      a, b, /c, d,",
            "a://b/c#d,      a, b, /c,, d",
            "a://b/c?d#e,    a, b, /c, d, e",
            "a://b/c#d?e,    a, b, /c,, d?e",
            // Empty path
            "a://b,          a, b, /,,",
            "a://b?c,        a, b, /, c,",
            "a://b#c,        a, b, /,, c",
            "a://b?c#d,      a, b, /, c, d",
            "a://b#c?d,      a, b, /,, c?d",
            // Userinfo and port in authority
            "a://b@c:80,     a, c:80, /,,",
            // IP addresses
            "a://127.0.0.1/, a, 127.0.0.1, /,,",
            "a://[::1]:80/,  a, [::1]:80, /,,",
            // default port numbers should be omitted
            "http://a:80/,   http, a, /,,",
            "http://a:443/,  http, a:443, /,,",
            "https://a:80/,  https, a:80, /,,",
            "https://a:443/, https, a, /,,",
    })
    void clientShouldAcceptAbsoluteUri(String uri,
                                       String expectedScheme, String expectedAuthority, String expectedPath,
                                       @Nullable String expectedQuery, @Nullable String expectedFragment) {

        final RequestTargetWithRawPath res = forClient(uri);
        assertThat(res.requestTarget.scheme()).isEqualTo(expectedScheme);
        assertThat(res.requestTarget.authority()).isEqualTo(expectedAuthority);
        assertAccepted(res, expectedPath, emptyToNull(expectedQuery), emptyToNull(expectedFragment));
    }
{@link RequestTarget} treats the first `=` in a query parameter as `/` internally to simplify
the detection the logic. This test makes sure the `=` appeared later is not treated as `/`.
core/src/test/java/com/linecorp/armeria/internal/common/DefaultRequestTargetTest.java