package configloader

import (
    "testing"
)

// Tests that the list of parsers is not empty.
func TestListParserReturnsNonEmptyResult(t *testing.T) {

    parserList := ListParsers()
    if len(parserList) == 0 {
        t.Fatalf("The list of returned parsers is empty")
    }

}

// Ensures that validating a parser will not accept an invalid parser name.
func TestInvalidParserIsNotAccepted(t *testing.T) {

    parser, err := ValidateParser("Liddasfasdo")
    if parser != "" {
        t.Fatalf("ValidateParser() should return an empty string + error")
    }
    if err == nil {
        t.Fatalf("ValidateParser() did not return an error where it should")
    }

}

// Ensures that a parser is valid at its expected name.
func TestValidParserIsAccepted(t *testing.T) {

    parser, err := ValidateParser("Lido")
    if parser != "Lido" {
        t.Fatalf("Test expected validated parser for input 'Lido' to be 'Lido'")
    }
    if err != nil {
        t.Fatalf("ValidateParser() returned an error where it should not")
    }

}

// Prepending the prefix "Parser" to a parser name should work as well.
// In this case, the prefix should be removed by ValidateParser().
func TestValidParserIsAcceptedAndCleaned(t *testing.T) {

    parser, err := ValidateParser("ParserLido")
    if parser != "Lido" {
        t.Fatalf("Test expected validated parser for input 'ParserLido' to be 'Lido'")
    }
    if err != nil {
        t.Fatalf("ValidateParser() returned an error where it should not")
    }

}
