Example #1
0
 /**
  * @param string $operator
  * @return $this
  */
 public function operator($operator)
 {
     $this->process(OperatorFactory::createOperator($operator));
     return $this;
 }
<?php

use Calculator\OperatorFactory;
describe('OperatorFactory', function () {
    describe('createOperator', function () {
        it('creates operator object', function () {
            expect(OperatorFactory::createOperator('+'))->toBeAnInstanceOf('Calculator\\Operator\\Add');
            expect(OperatorFactory::createOperator('-'))->toBeAnInstanceOf('Calculator\\Operator\\Subtract');
            expect(OperatorFactory::createOperator('*'))->toBeAnInstanceOf('Calculator\\Operator\\Multiply');
            expect(OperatorFactory::createOperator('/'))->toBeAnInstanceOf('Calculator\\Operator\\Divide');
            expect(OperatorFactory::createOperator('^'))->toBeAnInstanceOf('Calculator\\Operator\\Pow');
            expect(OperatorFactory::createOperator('√'))->toBeAnInstanceOf('Calculator\\Operator\\SquareRoot');
            expect(OperatorFactory::createOperator('sqrt'))->toBeAnInstanceOf('Calculator\\Operator\\SquareRoot');
            expect(OperatorFactory::createOperator('sin'))->toBeAnInstanceOf('Calculator\\Operator\\Sine');
            expect(OperatorFactory::createOperator('cos'))->toBeAnInstanceOf('Calculator\\Operator\\Cosine');
            expect(OperatorFactory::createOperator('tan'))->toBeAnInstanceOf('Calculator\\Operator\\Tangent');
            expect(OperatorFactory::createOperator('asin'))->toBeAnInstanceOf('Calculator\\Operator\\ArcSine');
            expect(OperatorFactory::createOperator('acos'))->toBeAnInstanceOf('Calculator\\Operator\\ArcCosine');
            expect(OperatorFactory::createOperator('atan'))->toBeAnInstanceOf('Calculator\\Operator\\ArcTangent');
        });
        it('does not create an operator object', function () {
            expect(function () {
                OperatorFactory::createOperator('£');
            })->toThrow(new \Calculator\Exception\InvalidOperatorException('£'));
            expect(function () {
                OperatorFactory::createOperator(null);
            })->toThrow(new \Calculator\Exception\InvalidOperatorException(null));
        });
    });
});