Exemplo n.º 1
0
        /// <summary>
        /// Instantiates a ColleyMatrix client object; creates an n by n sparse matrix, where n is the number of teams in the defined league
        /// </summary>
        /// <param name="numberOfTeams">Number of teams in the league</param>
        public ColleyMatrix(int numberOfTeams)
        {
            _numberOfTeams = numberOfTeams;
            IJsonSerializationProvider jsonSerializationProvider = new NewtonSoftJsonSerializationProvider();
            IMatrixProvider            matrixProvider            = new MathDotNetSparseMatrixProvider(jsonSerializationProvider, numberOfTeams);
            IValidatorService          validatorService          = new ValidatorService(matrixProvider);

            _colleyMatrixService = new ColleyMatrixService(matrixProvider, validatorService);
        }
        public void Should_GetDimensions_ForStandardInput()
        {
            //arrange
            int dimensions = 2;
            IJsonSerializationProvider jsonSerializationProvider = A.Fake <IJsonSerializationProvider>();
            IMatrixProvider            matrixProvider            = new MathDotNetSparseMatrixProvider(jsonSerializationProvider, dimensions);

            //act
            double actualOutput = matrixProvider.GetDimensions();

            //assert
            actualOutput.Should().Be(dimensions);
        }
        public void Should_SerializeToJson_ForStandardInput()
        {
            //arrange
            int dimensions = 2;
            IJsonSerializationProvider jsonSerializationProvider = A.Fake <IJsonSerializationProvider>();
            IMatrixProvider            matrixProvider            = new MathDotNetSparseMatrixProvider(jsonSerializationProvider, dimensions);

            //act
            matrixProvider.SerializeToJson();

            //assert
            A.CallTo(() => jsonSerializationProvider.Serialize(null)).WithAnyArguments().MustHaveHappened();
        }
        public void Should_ConstructMatrixProvider_ForStandardInput()
        {
            //arrange
            int dimensions = 2;
            IJsonSerializationProvider jsonSerializationProvider = A.Fake <IJsonSerializationProvider>();

            //act
            IMatrixProvider matrixProvider = new MathDotNetSparseMatrixProvider(jsonSerializationProvider, dimensions);

            //assert
            matrixProvider.GetValue(0, 0).Should().Be(2);
            matrixProvider.GetValue(0, 1).Should().Be(0);
            matrixProvider.GetValue(1, 0).Should().Be(0);
            matrixProvider.GetValue(1, 1).Should().Be(2);
        }
        public void Should_SetValue_ForStandardInput()
        {
            //arrange
            int    dimensions = 2;
            double newValue   = 5;
            IJsonSerializationProvider jsonSerializationProvider = A.Fake <IJsonSerializationProvider>();
            IMatrixProvider            matrixProvider            = new MathDotNetSparseMatrixProvider(jsonSerializationProvider, dimensions);

            matrixProvider.SetValue(0, 0, newValue);

            //act
            double actualOutput = matrixProvider.GetValue(0, 0);

            //assert
            actualOutput.Should().Be(newValue);
        }
        public void Should_LowerUpperFactorization_ForStandardInput()
        {
            //arrange
            int dimensions = 2;

            double[] ratings        = new double[] { 0.5, 0.5 };
            double[] expectedOutput = new double[] { 0.25, 0.25 };
            IJsonSerializationProvider jsonSerializationProvider = A.Fake <IJsonSerializationProvider>();
            IMatrixProvider            matrixProvider            = new MathDotNetSparseMatrixProvider(jsonSerializationProvider, dimensions);

            //act
            matrixProvider.SerializeToJson();
            IEnumerable <double> actualOutput = matrixProvider.LowerUpperFactorizeAndSolve(ratings);

            //assert
            actualOutput.Should().BeEquivalentTo(expectedOutput);
        }