package http_parser.lolevel;

import http_parser.FieldData; import http_parser.HTTPParserUrl;

import static http_parser.HTTPParserUrl.*; import static http_parser.lolevel.HTTPParser.*;

public class Url {

public static Url[] URL_TESTS = new Url[]{
    new Url("proxy request", "http://hostname/", false,
        new HTTPParserUrl(
            (1 << UrlFields.UF_SCHEMA.getIndex()) | (1 << UrlFields.UF_HOST.getIndex()) | (1 << UrlFields.UF_PATH.getIndex()),
            0,
            new FieldData[]{
                new FieldData(0,4),
                new FieldData(7,8),
                new FieldData(0,0),
                new FieldData(15,1),
                new FieldData(0,0),
                new FieldData(0,0)
            }),
        0),
    new Url("CONNECT request", "hostname:443", true,
        new HTTPParserUrl(
            (1 << UrlFields.UF_HOST.getIndex()) | (1 << UrlFields.UF_PORT.getIndex()),
            443,
            new FieldData[]{
                new FieldData(0,0),
                new FieldData(0,8),
                new FieldData(9,3),
                new FieldData(0,0),
                new FieldData(0,0),
                new FieldData(0,0)
            }),
        0),
    new Url("proxy ipv6 request", "http://[1:2::3:4]/", false,
        new HTTPParserUrl(
            (1 << UrlFields.UF_SCHEMA.getIndex()) | (1 << UrlFields.UF_HOST.getIndex()) | (1 << UrlFields.UF_PATH.getIndex()),
            0,
            new FieldData[]{
                new FieldData(0,4),
                new FieldData(8,8),
                new FieldData(0,0),
                new FieldData(17,1),
                new FieldData(0,0),
                new FieldData(0,0)
            }),
        0),
    new Url("CONNECT ipv6 address", "[1:2::3:4]:443", true,
        new HTTPParserUrl(
            (1 << UrlFields.UF_HOST.getIndex()) | (1 << UrlFields.UF_PORT.getIndex()),
            443,
            new FieldData[]{
                new FieldData(0,0),
                new FieldData(1,8),
                new FieldData(11,3),
                new FieldData(0,0),
                new FieldData(0,0),
                new FieldData(0,0)
            }),
        0),
    new Url("extra ? in query string",
        "http://a.tbcdn.cn/p/fp/2010c/??fp-header-min.css,fp-base-min.css,fp-channel-min.css,fp-product-min.css,fp-mall-min.css,fp-category-min.css,fp-sub-min.css,fp-gdp4p-min.css,fp-css3-min.css,fp-misc-min.css?t=20101022.css",
        false,
        new HTTPParserUrl(
            (1 << UrlFields.UF_SCHEMA.getIndex()) |
            (1 << UrlFields.UF_HOST.getIndex()) |
            (1 << UrlFields.UF_PATH.getIndex()) |
            (1 << UrlFields.UF_QUERY.getIndex()),
            0,
            new FieldData[]{
                new FieldData(0,4),
                new FieldData(7,10),
                new FieldData(0,0),
                new FieldData(17,12),
                new FieldData(30,187),
                new FieldData(0,0)
            }),
        0),
    new Url("proxy empty host",
        "http://:443/",
        false,
        null,
        1),
    new Url("proxy empty port",
        "http://hostname:/",
        false,
        null,
        1),
    new Url("CONNECT empty host",
        ":443",
        true,
        null,
        1),
    new Url("CONNECT empty port",
        "hostname:",
        true,
        null,
        1),
    new Url("CONNECT with extra bits",
        "hostname:443/",
        true,
        null,
        1),

};

String name;
String url;
boolean is_connect;
HTTPParserUrl u;
int rv;

public Url(String name, String url, boolean is_connect, HTTPParserUrl u, int rv) {
  this.name = name;
  this.url = url;
  this.is_connect = is_connect;
  this.u = u;
  this.rv = rv;
}

}