public function dataProvider()
{
$mockTaxableBuilder = $this->getMockBuilder('CommerceGuys\\Tax\\TaxableInterface');
$physicalTaxable = $mockTaxableBuilder->getMock();
$physicalTaxable->expects($this->any())->method('isPhysical')->will($this->returnValue(true));
$digitalTaxable = $mockTaxableBuilder->getMock();
$mockAddressBuilder = $this->getMockBuilder('CommerceGuys\\Addressing\\Address');
$serbianAddress = $mockAddressBuilder->getMock();
$serbianAddress->expects($this->any())->method('getCountryCode')->will($this->returnValue('RS'));
$frenchAddress = $mockAddressBuilder->getMock();
$frenchAddress->expects($this->any())->method('getCountryCode')->will($this->returnValue('FR'));
$germanAddress = $mockAddressBuilder->getMock();
$germanAddress->expects($this->any())->method('getCountryCode')->will($this->returnValue('DE'));
$usAddress = $mockAddressBuilder->getMock();
$usAddress->expects($this->any())->method('getCountryCode')->will($this->returnValue('US'));
$date1 = new \DateTime('2014-02-24');
$date2 = new \DateTime('2015-02-24');
$notApplicable = EuTaxTypeResolver::NO_APPLICABLE_TAX_TYPE;
return [[$physicalTaxable, $this->getContext($germanAddress, $frenchAddress, '123'), 'eu_ic_vat'], [$physicalTaxable, $this->getContext($frenchAddress, $frenchAddress, '123'), 'fr_vat'], [$physicalTaxable, $this->getContext($germanAddress, $frenchAddress), 'fr_vat'], [$physicalTaxable, $this->getContext($germanAddress, $frenchAddress, '', ['DE']), 'de_vat'], [$digitalTaxable, $this->getContext($germanAddress, $frenchAddress, '', [], $date1), 'fr_vat'], [$digitalTaxable, $this->getContext($germanAddress, $frenchAddress, '', [], $date2), 'de_vat'], [$digitalTaxable, $this->getContext($germanAddress, $usAddress, '', [], $date2), []], [$digitalTaxable, $this->getContext($germanAddress, $usAddress, '', ['FR'], $date2), 'de_vat'], [$digitalTaxable, $this->getContext($germanAddress, $usAddress, '123', ['FR'], $date2), $notApplicable], [$physicalTaxable, $this->getContext($serbianAddress, $frenchAddress), []], [$physicalTaxable, $this->getContext($frenchAddress, $serbianAddress), []]];
}