<?php

namespace Brazanation\Documents\Tests\StateRegistration;

use Brazanation\Documents\AbstractDocument;
use Brazanation\Documents\StateRegistration;
use Brazanation\Documents\StateRegistration\MatoGrosso;
use Brazanation\Documents\Tests\DocumentTestCase;

class MatoGrossoTest extends DocumentTestCase
{
    public function createDocument(string $number) : AbstractDocument
    {
        return new StateRegistration($number, new MatoGrosso());
    }

    public function createDocumentFromString(string $number)
    {
        return StateRegistration::createFromString($number, MatoGrosso::SHORT_NAME);
    }

    public function provideValidNumbers() : array
    {
        return [
            ['0013193686-7'],
            ['0013193686-7'],
            ['0013053551-6'],
            ['0013056071-5'],
            ['0013076269-5'],
            ['0013015257-9'],
            ['0013125061-2'],
            ['0013146383-7'],
            ['0013151173-4'],
            ['0013198869-7'],
            ['0013198868-9'],
            ['0013191575-4'],
            ['0013178718-7'],
            ['0013191879-6'],
            ['0013197541-2'],
            ['0013197542-0'],
            ['0013197556-0'],
            ['0013198333-4'],
            ['0013198870-0'],
            ['0013198872-7'],
            ['0013205160-5'],
            ['0013199075-6'],
            ['0013199463-8'],
            ['0013198871-9'],
            ['0013199464-6'],
            ['0013210743-0'],
            ['0013211337-6'],
            ['0013210747-3'],
            ['0013236559-6'],
            ['0013236558-8'],
            ['0013241890-8'],
            ['0013246644-9'],
            ['0013256554-4'],
            ['0013284135-5'],
            ['0013286376-6'],
            ['0013286372-3'],
            ['0013335740-6'],
            ['0013329659-8'],
            ['0013325238-8'],
            ['0013321779-5'],
            ['0013316631-7'],
            ['0013315986-8'],
            ['0013314253-1'],
            ['0013311864-9'],
            ['0013307025-5'],
            ['0013306973-7'],
            ['0013304830-6'],
            ['0013303486-0'],
            ['0013294120-1'],
            ['0013290722-4'],
            ['0013283924-5'],
            ['0013281414-5'],
            ['0013277927-7'],
            ['0013265692-2'],
            ['0013263194-6'],
            ['0013262435-4'],
            ['0013260274-1'],
            ['0013249876-6'],
            ['0013247098-5'],
            ['0013241159-8'],
            ['0013227586-4'],
            ['00130365630-0'],
            ['00130234200-0'],
            ['00130181544-3'],
            ['00130181541-9'],
            ['00130181537-0'],
            ['00130181535-4'],
            ['00130181534-6'],
            ['00130181533-8'],
            ['00130181532-0'],
            ['00130181531-1'],
            ['00130181530-3'],
            ['00130181529-0'],
            ['00130181528-1'],
            ['00130181527-3'],
            ['00130181526-5'],
            ['00130181525-7'],
            ['00130181524-9'],
            ['00130181523-0'],
            ['00130181522-2'],
            ['00130181521-4'],
            ['00130181520-6'],
            ['00130181519-2'],
            ['00130181518-4'],
            ['00130181517-6'],
            ['00130181516-8'],
            ['00064573571-0'],
            ['00064573571-0'],
            ['00064573571-0'],
        ];
    }

    public function provideValidNumbersAndExpectedFormat() : array
    {
        return [
            ['00131936867', '0013193686-7'],
            ['133357406', '0013335740-6'],
            ['1303656300', '0130365630-0'],

        ];
    }

    public function provideEmptyData() : array
    {
        return [
            [MatoGrosso::LONG_NAME, ''],
            [MatoGrosso::LONG_NAME, null],
        ];
    }

    public function provideInvalidNumber() : array
    {
        return [
            [MatoGrosso::LONG_NAME, '11111111111'],
            [MatoGrosso::LONG_NAME, '99874773539'],
        ];
    }
}
