/** * @covers ::convert */ public function testConvert() { $source = $this->getMock('CL\\CurrencyConvert\\NullSource', array('getRateBetween')); $converter = new Converter($source); $bgn = new Currency('BGN'); $gbp = new Currency('GBP'); $source->expects($this->exactly(3))->method('getRateBetween')->will($this->returnValueMap(array(array($bgn, $gbp, 0.5), array($gbp, $bgn, 2)))); $from = new Money(5000, $bgn); $result = $converter->convert($from, $gbp); $this->assertEquals(new Money(2500, $gbp), $result); $from = new Money(5000, $gbp); $result = $converter->convert($from, $bgn); $this->assertEquals(new Money(10000, $bgn), $result); $from = new Money(155, $bgn); $result = $converter->convert($from, $gbp, PHP_ROUND_HALF_DOWN); $this->assertEquals(new Money(77, $gbp), $result); }