Adding unittest

This commit is contained in:
Elia el Lazkani 2020-03-01 02:13:37 +01:00
parent bd2dd75169
commit 0c94a216d9

340
main_test.go Normal file
View file

@ -0,0 +1,340 @@
package main
import (
"fmt"
"net/http"
"net/http/httptest"
"reflect"
"testing"
)
var url = "https://wttr.in"
func headerEqual(req *http.Request, headers map[string][]string) bool {
for key, value := range req.Header {
if !reflect.DeepEqual(value, headers[key]) {
fmt.Printf("Failed to get expected headers \"%s\": %s != %s", key, value, headers[key])
return false
}
}
return true
}
type newRequestResults struct {
headers map[string]string
expectedURL string
expectedMethod string
expectedHeaders map[string][]string
expectedProto string
}
var newRequestTestResults = []newRequestResults{
{make(map[string]string), url, "GET", map[string][]string{"Content-Type": []string{"text/plain; charset=utf-8"}, "User-Agent": []string{"curl"}}, "HTTP/1.1"},
{map[string]string{"Content-Type": "text/html"}, url, "GET", map[string][]string{"Content-Type": []string{"text/html"}, "User-Agent": []string{"curl"}, "Language": []string{"fr"}}, "HTTP/1.1"},
{map[string]string{"Language": "fr"}, url, "GET", map[string][]string{"Content-Type": []string{"text/plain; charset=utf-8"}, "User-Agent": []string{"curl"}, "Language": []string{"fr"}}, "HTTP/1.1"},
{map[string]string{"Language": "fr", "Location": "Berlin"}, url, "GET", map[string][]string{"Content-Type": []string{"text/plain; charset=utf-8"}, "User-Agent": []string{"curl"}, "Language": []string{"fr"}, "Location": []string{"Berlin"}}, "HTTP/1.1"},
}
func TestNewRequest(t *testing.T) {
w := weather{url}
for _, requestResult := range newRequestTestResults {
req := w.newRequest(requestResult.headers)
if req.URL.String() != requestResult.expectedURL {
t.Fatalf("Failed to get expected URL: %s != %s", req.URL.String(), requestResult.expectedURL)
}
if req.Method != requestResult.expectedMethod {
t.Fatalf("Failed to get expected method: %s != %s", req.Method, requestResult.expectedMethod)
}
if req.Proto != requestResult.expectedProto {
t.Fatalf("Failed to get expected protocol: %s != %s", req.Proto, requestResult.expectedProto)
}
if !headerEqual(req, requestResult.expectedHeaders) {
t.Fatal()
}
}
}
func TestFormatHeader(t *testing.T) {
w := weather{url}
req := httptest.NewRequest("GET", url, nil)
for _, requestResult := range newRequestTestResults {
newReq := w.formatHeader(req, requestResult.headers)
if !headerEqual(newReq, requestResult.expectedHeaders) {
t.Fatal()
}
}
}
type generatedParams struct {
switches []*bool
freeStyle string
format string
oneLiner bool
png bool
addFrame bool
transparency int
download bool
expectedAffix string
expectedDownload bool
}
var boolTrue = true
var boolFalse = false
var generatedParamsResults = []generatedParams{
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?m", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?u", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?M", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?0", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?1", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?2", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?A", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?F", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?nq", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse}, "", "", false, false, false, 0, false, "?Q", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue}, "", "", false, false, false, 0, false, "?T", false},
{[]*bool{&boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?mu", false},
{[]*bool{&boolTrue, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?mM", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?m0", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?m1", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?m2", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?mA", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?mF", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?mnq", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse}, "", "", false, false, false, 0, false, "?mQ", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue}, "", "", false, false, false, 0, false, "?mT", false},
{[]*bool{&boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?mu", false},
{[]*bool{&boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?uM", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?u0", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?u1", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?u2", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?uA", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?uF", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?unq", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse}, "", "", false, false, false, 0, false, "?uQ", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue}, "", "", false, false, false, 0, false, "?uT", false},
{[]*bool{&boolTrue, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?mM", false},
{[]*bool{&boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?uM", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?M0", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?M1", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?M2", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?MA", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?MF", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?Mnq", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse}, "", "", false, false, false, 0, false, "?MQ", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue}, "", "", false, false, false, 0, false, "?MT", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?m0", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?u0", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?M0", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?01", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?02", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?0A", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?0F", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?0nq", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse}, "", "", false, false, false, 0, false, "?0Q", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue}, "", "", false, false, false, 0, false, "?0T", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?m1", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?u1", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?M1", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?01", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?12", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?1A", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?1F", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?1nq", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse}, "", "", false, false, false, 0, false, "?1Q", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue}, "", "", false, false, false, 0, false, "?1T", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?m2", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?u2", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?M2", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?02", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?12", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?2A", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?2F", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?2nq", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse}, "", "", false, false, false, 0, false, "?2Q", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue}, "", "", false, false, false, 0, false, "?2T", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?mA", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?uA", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?MA", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?0A", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?1A", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?2A", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?AF", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?Anq", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse}, "", "", false, false, false, 0, false, "?AQ", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue}, "", "", false, false, false, 0, false, "?AT", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?mF", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?uF", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?MF", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?0F", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?1F", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?2F", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?AF", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolTrue, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?Fnq", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolTrue, &boolFalse}, "", "", false, false, false, 0, false, "?FQ", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolTrue}, "", "", false, false, false, 0, false, "?FT", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?mn", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?un", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?Mn", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?0n", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?1n", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?2n", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?An", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?Fn", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolTrue, &boolFalse}, "", "", false, false, false, 0, false, "?nQ", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolTrue}, "", "", false, false, false, 0, false, "?nT", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?mq", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?uq", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?Mq", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?0q", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?1q", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?2q", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?Aq", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolTrue, &boolFalse, &boolFalse}, "", "", false, false, false, 0, false, "?Fq", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse}, "", "", false, false, false, 0, false, "?qQ", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolTrue}, "", "", false, false, false, 0, false, "?qT", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse}, "", "", false, false, false, 0, false, "?mQ", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse}, "", "", false, false, false, 0, false, "?uQ", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse}, "", "", false, false, false, 0, false, "?MQ", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse}, "", "", false, false, false, 0, false, "?0Q", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse}, "", "", false, false, false, 0, false, "?1Q", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse}, "", "", false, false, false, 0, false, "?2Q", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse}, "", "", false, false, false, 0, false, "?AQ", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolTrue, &boolFalse}, "", "", false, false, false, 0, false, "?FQ", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolTrue, &boolFalse}, "", "", false, false, false, 0, false, "?nqQ", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue}, "", "", false, false, false, 0, false, "?QT", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue}, "", "", false, false, false, 0, false, "?mT", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue}, "", "", false, false, false, 0, false, "?uT", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue}, "", "", false, false, false, 0, false, "?MT", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue}, "", "", false, false, false, 0, false, "?0T", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue}, "", "", false, false, false, 0, false, "?1T", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue}, "", "", false, false, false, 0, false, "?2T", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue}, "", "", false, false, false, 0, false, "?AT", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolTrue}, "", "", false, false, false, 0, false, "?FT", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolTrue}, "", "", false, false, false, 0, false, "?nqT", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue}, "", "", false, false, false, 0, false, "?QT", false},
// FreeStyle
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "freestyle", "", false, false, false, 0, false, "freestyle", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "freestyle", "", false, false, false, 0, false, "freestyle", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "freestyle", "", true, false, false, 0, false, "freestyle", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "freestyle", "", false, true, false, 0, false, "freestyle", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "freestyle", "", false, false, true, 0, false, "freestyle", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "freestyle", "", true, true, false, 0, false, "freestyle", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "freestyle", "", true, false, true, 0, false, "freestyle", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "freestyle", "", true, true, true, 0, false, "freestyle", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "freestyle", "", false, false, false, 100, false, "freestyle", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse}, "freestyle", "", true, false, false, 100, false, "freestyle", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse}, "freestyle", "", false, true, false, 100, false, "freestyle", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue}, "freestyle", "", false, false, true, 100, false, "freestyle", false},
{[]*bool{&boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "freestyle", "", true, false, true, 100, false, "freestyle", false},
{[]*bool{&boolTrue, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "freestyle", "", true, true, false, 100, false, "freestyle", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "freestyle", "", true, true, true, 100, false, "freestyle", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "freestyle", "format", false, false, false, 0, true, "freestyle", true},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "freestyle", "format", false, true, false, 0, true, "freestyle", true},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "freestyle", "format", false, false, true, 0, true, "freestyle", true},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "freestyle", "format", true, false, false, 0, true, "freestyle", true},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse}, "freestyle", "format", true, true, false, 0, true, "freestyle", true},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse}, "freestyle", "format", true, false, true, 0, true, "freestyle", true},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue}, "freestyle", "format", true, true, true, 0, true, "freestyle", true},
// Format
{[]*bool{&boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "format", false, false, false, 0, false, "?format=\"format\"", false},
{[]*bool{&boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "format", true, false, false, 0, false, "?format=\"format\"", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "format", false, true, false, 100, false, "?format=\"format\"", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "format", false, false, true, 0, false, "?format=\"format\"", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "format", true, true, false, 100, false, "?format=\"format\"", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "format", true, false, true, 0, false, "?format=\"format\"", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "format", true, true, true, 100, false, "?format=\"format\"", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse}, "", "format", false, false, false, 0, true, "?format=\"format\"", true},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse}, "", "format", false, false, false, 100, true, "?format=\"format\"", true},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue}, "", "format", false, false, false, 0, true, "?format=\"format\"", true},
{[]*bool{&boolTrue, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", true, false, false, 0, false, "?format=3", false},
{[]*bool{&boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, true, false, 0, false, "_uM_transparency=0.png", true},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, true, 0, false, "?M0", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", true, true, false, 0, false, "?format=3", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", true, false, true, 0, false, "?format=3", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", true, true, true, 0, false, "?format=3", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 100, false, "?MF", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse}, "", "", true, false, false, 100, false, "?format=3", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolFalse}, "", "", false, true, false, 100, false, "_MQ_transparency=100.png", true},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolTrue}, "", "", false, false, true, 100, false, "?MT", false},
{[]*bool{&boolTrue, &boolFalse, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", true, true, false, 100, false, "?format=3", false},
{[]*bool{&boolFalse, &boolTrue, &boolFalse, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", true, false, true, 100, false, "?format=3", false},
{[]*bool{&boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", true, true, true, 100, false, "?format=3", false},
{[]*bool{&boolFalse, &boolFalse, &boolFalse, &boolTrue, &boolTrue, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse, &boolFalse}, "", "", false, false, false, 0, true, "?01", true},
}
func TestGenerateParamFormat(t *testing.T) {
for _, p := range generatedParamsResults {
f, d, _ := generateParamFormat(p.switches, &p.freeStyle, &p.format, &p.oneLiner, &p.png, &p.addFrame, &p.transparency, &p.download)
if f != p.expectedAffix {
t.Fatalf("Failed to get expected affix: %s != %s", f, p.expectedAffix)
}
if d != p.expectedDownload {
t.Fatalf("Failed to get expected download: %t != %t", d, p.expectedDownload)
}
}
}
type generateURLResults struct {
domain string
v2 bool
location string
lang string
affix string
expectedURL string
expectedHeaders map[string]string
}
var domain = "wttr.in"
var generateURLTestResults = []generateURLResults{
{domain, false, "", "", "", "https://wttr.in/", map[string]string{}},
{domain, false, "", "de", "", "https://wttr.in/", map[string]string{"Accept-Language": "de"}},
{domain, false, "", "de", "?affix", "https://wttr.in/?affix", map[string]string{"Accept-Language": "de"}},
{domain, false, "Paris", "", "", "https://wttr.in/Paris", map[string]string{}},
{domain, false, "Paris", "de", "", "https://wttr.in/Paris", map[string]string{"Accept-Language": "de"}},
{domain, false, "Paris", "de", "?affix", "https://wttr.in/Paris?affix", map[string]string{"Accept-Language": "de"}},
{domain, true, "", "", "", "https://v2.wttr.in/", map[string]string{}},
{domain, true, "", "de", "", "https://v2.wttr.in/", map[string]string{"Accept-Language": "de"}},
{domain, true, "", "de", "?affix", "https://v2.wttr.in/?affix", map[string]string{"Accept-Language": "de"}},
{domain, true, "Paris", "", "", "https://v2.wttr.in/Paris", map[string]string{}},
{domain, true, "Paris", "de", "", "https://v2.wttr.in/Paris", map[string]string{"Accept-Language": "de"}},
{domain, true, "Paris", "de", "?affix", "https://v2.wttr.in/Paris?affix", map[string]string{"Accept-Language": "de"}},
}
func TestGenerateURL(t *testing.T) {
for _, g := range generateURLTestResults {
a, h := generateURL(g.domain, g.v2, g.location, g.lang, g.affix)
if a != g.expectedURL {
t.Fatalf("Failed to get expected URL: %s != %s", a, g.expectedURL)
}
if !reflect.DeepEqual(h, g.expectedHeaders) {
t.Fatalf("Failed to get expected headers: %s != %s", h, g.expectedHeaders)
}
}
}