コード例 #1
0
        public void CheckGfc()
        {
            var expected = 6;
            var actual   = FractionHelper.Gfc(36, 42);

            Assert.Equal(expected, actual);
        }
コード例 #2
0
        public void CheckLcm()
        {
            var expected = 252;
            var actual   = FractionHelper.Lcm(36, 42);

            Assert.Equal(expected, actual);
        }
コード例 #3
0
 public void FractionConverterTest()
 {
     //var onefifth = FractionConverter.Convert(0.2m);
     //var oneThird = FractionConverter.Convert(0.333333m);
     var twoThird  = FractionHelper.Convert(0.666666m);
     var oneEighth = FractionHelper.Convert(0.125m);
 }
コード例 #4
0
        /// <summary>
        /// Formats the value to be used on the axis.
        /// </summary>
        /// <param name="x">The value to format.</param>
        /// <returns>The formatted value.</returns>
        protected override string FormatValueOverride(double x)
        {
            if (this.FormatAsFractions)
            {
                return(FractionHelper.ConvertToFractionString(x, this.FractionUnit, this.FractionUnitSymbol, 1e-6, this.ActualCulture, this.StringFormat));
            }

            return(base.FormatValueOverride(x));
        }
コード例 #5
0
        public IActionResult OnPost()
        {
            var models = new List <Fraction>();

            foreach (var fraction in Fractions)
            {
                if (FractionHelper.TryParseFraction(fraction, out Fraction res))
                {
                    models.Add(res);
                }
                else
                {
                    throw new Exception("Invalid Fraction!");
                }
            }

            Fraction output = models[0];

            for (int i = 1; i < models.Count; i++)
            {
                switch (Option)
                {
                case "Add":
                    output += models[i];
                    break;

                case "Subtract":
                    output -= models[i];
                    break;

                case "Divide":
                    output /= models[i];
                    break;

                case "Multiply":
                    output *= models[i];
                    break;

                case "LCDGCD":
                    var dens = models.Select(x => x.Denominator);
                    Result = $"LCD: {FractionHelper.FindGreatestCommonFactor(dens.ToArray())} GCD: {FractionHelper.FindGreatestCommonFactor(dens.ToArray())}";
                    break;

                default:
                    Result = "Something went wrong :(";
                    break;
                }
            }
            if (Option != "LCDGCD")
            {
                Result = output.ToString();
            }

            return(Page());
        }
コード例 #6
0
        public void CanFractionBeSimplifiedIncorrectly_Of49Over98_ReturnsTrue()
        {
            // Arrange
            var numerator   = 49;
            var denominator = 98;

            // Act
            var result = FractionHelper.CanFractionBeSimplifiedIncorrectly(numerator, denominator);

            // Assert
            result.Should().BeTrue();
        }
コード例 #7
0
        public void GetListOfFractionsThatCanBeSimplifiedIncorrectly_WithAtMost2Digits_Returns4()
        {
            // Arrange
            var maxSizeOfFractionalParts  = 99;
            var expectedNumberOfFractions = 4;

            // Act
            var result = FractionHelper.GetListOfFractionsThatCanBeSimplifiedIncorrectly(maxSizeOfFractionalParts);

            // Assert
            result.Should().HaveCount(expectedNumberOfFractions);
        }
コード例 #8
0
        public IFractal CompileFromXml(string xmlFractal)
        {
            if (string.IsNullOrEmpty(xmlFractal))
            {
                throw new FractalCompilerException("fractal string cannot be null");
            }
            XmlDocument fractalDoc = new XmlDocument();

            fractalDoc.LoadXml(xmlFractal);
            XmlNode fractalNode = fractalDoc.SelectSingleNode("fractal");

            if (fractalNode == null)
            {
                throw new FractalCompilerException("you must have a node <fractal name=\"nameOfFractal\">");
            }
            string      name = fractalNode.Attributes.GetNamedItem("name").Value;
            XmlNodeList transformationNodes = fractalNode.SelectNodes("transformation");
            List <IFractalTransformation> transformations = new List <IFractalTransformation>();

            foreach (XmlNode node in transformationNodes)
            {
                string transformationType = node.Attributes.GetNamedItem("type").Value;
                switch (transformationType)
                {
                case "SimilarityFractalTransformation":
                    transformations.Add(new SimilarityFractalTransformation()
                    {
                        ScaleX = FractionHelper.FractionToDouble(node.Attributes.GetNamedItem("ScaleX").Value),
                        ScaleY = FractionHelper.FractionToDouble(node.Attributes.GetNamedItem("ScaleY").Value),
                        AnticlockWiseRotationAngle = FractionHelper.FractionToDouble(node.Attributes.GetNamedItem("AnticlockWiseRotationAngle").Value),
                        TranslationX = FractionHelper.FractionToDouble(node.Attributes.GetNamedItem("TranslationX").Value),
                        TranslationY = FractionHelper.FractionToDouble(node.Attributes.GetNamedItem("TranslationY").Value),
                        Probability  = FractionHelper.FractionToDouble(node.Attributes.GetNamedItem("Probability").Value)
                    });
                    break;

                case "AffineFractalTransformation":
                    transformations.Add(new AffineFractalTransformation()
                    {
                        Cell_11      = FractionHelper.FractionToDouble(node.Attributes.GetNamedItem("Cell_11").Value),
                        Cell_12      = FractionHelper.FractionToDouble(node.Attributes.GetNamedItem("Cell_12").Value),
                        Cell_21      = FractionHelper.FractionToDouble(node.Attributes.GetNamedItem("Cell_21").Value),
                        Cell_22      = FractionHelper.FractionToDouble(node.Attributes.GetNamedItem("Cell_22").Value),
                        TranslationX = FractionHelper.FractionToDouble(node.Attributes.GetNamedItem("TranslationX").Value),
                        TranslationY = FractionHelper.FractionToDouble(node.Attributes.GetNamedItem("TranslationY").Value),
                        Probability  = FractionHelper.FractionToDouble(node.Attributes.GetNamedItem("Probability").Value)
                    });
                    break;
                }
            }
            CompileTransformations(transformations);
            return(new CustomFractal(name, transformations));
        }
コード例 #9
0
        public void ToLowestTerms_Of49Over98_Returns1Over2()
        {
            // Arrange
            var numerator      = 49;
            var denominator    = 98;
            var expectedResult = (1, 2);

            // Act
            var result = FractionHelper.ToLowestTerms(numerator, denominator);

            // Assert
            result.Should().Be(expectedResult);
        }
コード例 #10
0
        public void FractionLCMTest()
        {
            int[] ints = { 3, 4, 5, 6 };
            var   lcm  = FractionHelper.LCM(ints);

            Assert.AreEqual(60, lcm);

            int[] ints2 = { 3, 4 };
            var   lcm2  = FractionHelper.LCM(ints2);

            Assert.AreEqual(12, lcm2);

            int[] ints3 = { 5, 7 };
            var   lcm3  = FractionHelper.LCM(ints3);

            Assert.AreEqual(35, lcm3);
        }
コード例 #11
0
 public void ConvertToFractionString_WithUnit()
 {
     Assert.AreEqual("2pi", FractionHelper.ConvertToFractionString(Math.PI * 2, Math.PI, "pi"));
 }
コード例 #12
0
 public void ConvertToFractionString()
 {
     Assert.AreEqual("3/4", FractionHelper.ConvertToFractionString(0.75));
 }