package hugolib

import (
	"strings"
	"testing"
)

var PAGE_YAML_WITH_INDEXES_A = `---
tags: ['a', 'b', 'c']
categories: 'd'
---
YAML frontmatter with tags and categories index.`

var PAGE_YAML_WITH_INDEXES_B = `---
tags:
 - "a"
 - "b"
 - "c"
categories: 'd'
---
YAML frontmatter with tags and categories index.`

var PAGE_JSON_WITH_INDEXES = `{
  "categories": "d",
  "tags": [
    "a",
    "b",
    "c"
  ]
}
JSON Front Matter with tags and categories`

var PAGE_TOML_WITH_INDEXES = `+++
tags = [ "a", "b", "c" ]
categories = "d"
+++
TOML Front Matter with tags and categories`

func TestParseIndexes(t *testing.T) {
	for _, test := range []string{PAGE_TOML_WITH_INDEXES,
		PAGE_JSON_WITH_INDEXES,
		PAGE_YAML_WITH_INDEXES_A,
		PAGE_YAML_WITH_INDEXES_B,
	} {
		p, err := ReadFrom(strings.NewReader(test), "page/with/index")
		if err != nil {
			t.Fatalf("Failed parsing %q: %s", test, err)
		}

		param := p.GetParam("tags")
		params := param.([]string)

		expected := []string{"a", "b", "c"}
		if !compareStringSlice(params, expected) {
			t.Errorf("Expected %s: got: %s", expected, params)
		}

		param = p.GetParam("categories")
		singleparam := param.(string)

		if singleparam != "d" {
			t.Fatalf("Expected: d, got: %s", singleparam)
		}
	}
}

func compareStringSlice(a, b []string) bool {
	if len(a) != len(b) {
		return false
	}

	for i, v := range a {
		if b[i] != v {
			return false
		}
	}

	return true
}
