コード例 #1
0
        public bool TryBuild(out DegreeAngle result)
        {
            number?totalSeconds = TotalSeconds;

            if (totalSeconds.HasValue)
            {
                result = new DegreeAngle(totalSeconds.Value);
                return(true);
            }

            int?   circles    = Circles;
            int?   degrees    = Degrees;
            int?   minutes    = Minutes;
            number?seconds    = Seconds;
            bool?  isNegative = IsNegative;

            if (circles.HasValue &&
                degrees.HasValue &&
                minutes.HasValue &&
                seconds.HasValue &&
                isNegative.HasValue)
            {
                result = new DegreeAngle(
                    circles.Value, degrees.Value, minutes.Value, seconds.Value, isNegative.Value);
                return(true);
            }

            result = default(DegreeAngle);
            return(false);
        }
コード例 #2
0
            public void ShouldProduceValidResultInSameUnit(DegreeAngle originalDegreeAngle, DegreeAngle expectedDegreeAngle)
            {
                // arrange
                // act
                var result = originalDegreeAngle.ToNormalized();

                // assert
                result.TotalSeconds.Should().BeApproximately(expectedDegreeAngle.TotalSeconds);
            }
コード例 #3
0
        public GeoCoordinate(DegreeAngle latitude, DegreeAngle longitude)
        {
            Assert.IsInRange(latitude, MinLatitude, MaxLatitude, nameof(latitude));
            Assert.IsInRange(longitude, MinLongitude, MaxLongitude, nameof(longitude));

            _latitude         = latitude;
            _longitude        = longitude;
            _latitudeRadians  = latitude.ToRadianAngle();
            _longitudeRadians = longitude.ToRadianAngle();
        }
コード例 #4
0
            public void DegreeAngleCreateUsingParamlessConstructor_ShouldBeEqualToZeroDegrees()
            {
                // arrange
                var zeroDegreeAngle = new DegreeAngle(Constants.Zero);
                var paramlessConstructedDegreeAngle = new DegreeAngle();

                // act
                // assert
                zeroDegreeAngle.Equals(paramlessConstructedDegreeAngle).Should().BeTrue(because: "'new DegreeAngle(Constants.Zero)' should be equal 'new DegreeAngle()'");
                paramlessConstructedDegreeAngle.Equals(zeroDegreeAngle).Should().BeTrue(because: "'new DegreeAngle()' should be equal 'new DegreeAngle(Constants.Zero)'");
            }
コード例 #5
0
            public void DefaultDegreeAngle_ShouldBeEqualToZeroDegrees()
            {
                // arrange
                var defaultDegreeAngle = default(DegreeAngle);
                var zeroDegreeAngle    = new DegreeAngle(Constants.Zero);

                // act
                // assert
                zeroDegreeAngle.Equals(defaultDegreeAngle).Should().BeTrue(because: "'new DegreeAngle(Constants.Zero)' should be equal 'default(DegreeAngle)'");
                defaultDegreeAngle.Equals(zeroDegreeAngle).Should().BeTrue(because: "'default(DegreeAngle)' should be equal 'new DegreeAngle(Constants.Zero)'");
            }
コード例 #6
0
            public void FromAngle_ShouldCreateValidDegreeAngle()
            {
                // arrange
                var angle = Fixture.Create <Angle>();

                // act
                var degreeAngle = DegreeAngle.FromAngle(angle);

                // assert
                degreeAngle.TotalSeconds.Should().BeApproximately((number)angle.Convert(AngleUnit.Arcsecond).Value);
            }
コード例 #7
0
            public void DivideByZero_ShouldThrow()
            {
                // arrange
                var degreeAngle = CreateDegreeAngle();
                var denominator = new DegreeAngle(Constants.Zero);

                // act
                Func <number> divideByZero = () => degreeAngle / denominator;

                // assert
                divideByZero.Should().Throw <DivideByZeroException>();
            }
コード例 #8
0
            public void ShouldProduceValidResult()
            {
                // arrange
                var nominator   = CreateDegreeAngle();
                var denominator = new DegreeAngle(Fixture.CreateNonZeroNumber());

                // act
                number result = nominator / denominator;

                // assert
                result.Should().Be(nominator.TotalSeconds / denominator.TotalSeconds);
            }
コード例 #9
0
        public void Serialize_ShouldReturnValidJson(DegreeAngleJsonSerializationFormat format, number totalSeconds, string expectedJson)
        {
            // arrange
            var angle     = new DegreeAngle(totalSeconds);
            var converter = new DegreeAngleJsonConverter(format);

            // act
            string actualJson = JsonConvert.SerializeObject(angle, converter);

            // assert
            actualJson.Should().Be(expectedJson);
        }
コード例 #10
0
                public void ShouldReturnValidResult()
                {
                    // arrange
                    var    source = Fixture.CreateMany <DegreeAngle>(3).Select(e => new TestObject <DegreeAngle>(e));
                    number expectedResultInMetres = Enumerable.Sum(source, e => e.Property.TotalSeconds);
                    var    expectedResult         = new DegreeAngle(expectedResultInMetres);

                    // act
                    var result = AngularEnumerableExtensions.Sum(source, e => e.Property);

                    // assert
                    result.TotalSeconds.Should().Be(expectedResult.TotalSeconds);
                }
コード例 #11
0
                public void ShouldReturnValidResult()
                {
                    // arrange
                    var    source = Fixture.CreateMany <DegreeAngle>(3);
                    number expectedResultInTotalSeconds = Enumerable.Sum(source, e => e.TotalSeconds);
                    var    expectedResult = new DegreeAngle(expectedResultInTotalSeconds);

                    // act
                    var result = AngularEnumerableExtensions.Sum(source);

                    // assert
                    result.TotalSeconds.Should().Be(expectedResult.TotalSeconds);
                }
コード例 #12
0
            public void ShouldCreateWithGivenValues(number latitudeDegrees, number longitudeDegrees)
            {
                // arrange
                var latitude  = new DegreeAngle(latitudeDegrees);
                var longitude = new DegreeAngle(longitudeDegrees);

                // act
                var sut = new GeoCoordinate(latitude, longitude);

                // assert
                sut.Latitude.Should().Be(latitude);
                sut.Longitude.Should().Be(longitude);
            }
コード例 #13
0
            public void DefaultDegreeAngleAndZeroWithOtherUnit_ShouldProduceZeroWithOtherUnit()
            {
                // arrange
                var defaultDegreeAngle = default(DegreeAngle);
                var zeroDegrees        = new DegreeAngle(Constants.Zero);

                // act
                var result1 = defaultDegreeAngle + zeroDegrees;
                var result2 = zeroDegrees + defaultDegreeAngle;

                // assert
                result1.IsZero().Should().BeTrue();
                result2.IsZero().Should().BeTrue();
            }
コード例 #14
0
            public void ConstructorForTotalSeconds_ShouldCreateValidDegreeAngle(number totalSeconds, int expectedCircles, int expectedDegrees, int expectedMinutes, number expectedSeconds, bool expectedIsNegative)
            {
                // arrange
                // act
                var degreeAngle = new DegreeAngle(totalSeconds);

                // assert
                degreeAngle.TotalSeconds.Should().Be(totalSeconds);
                degreeAngle.Circles.Should().Be(expectedCircles);
                degreeAngle.Degrees.Should().Be(expectedDegrees);
                degreeAngle.Minutes.Should().Be(expectedMinutes);
                degreeAngle.Seconds.Should().Be(expectedSeconds);
                degreeAngle.IsNegative.Should().Be(expectedIsNegative);
            }
コード例 #15
0
            public void LongitudeOutOfRange_ShouldThrow(number longitudeTotalSeconds)
            {
                // arrange
                var longitude = new DegreeAngle(longitudeTotalSeconds);

                // act
                Action create = () => new GeoCoordinate(DegreeAngle.Zero, longitude);

                // assert
                var exception = create.Should().Throw <ArgumentOutOfRangeException>().And;

                exception.ParamName.Should().Be("longitude");
                exception.ActualValue.Should().Be(longitude);
            }
コード例 #16
0
 public GeoCoordinate GetDestinationPoint(Length distance, DegreeAngle bearing) =>
 GetDestinationPoint(distance, bearing.ToRadianAngle());
コード例 #17
0
ファイル: MathA.cs プロジェクト: jabarij/QuantitativeWorld
 public static number Tan(DegreeAngle a) =>
 Tan(a.ToRadianAngle());
コード例 #18
0
ファイル: MathA.cs プロジェクト: jabarij/QuantitativeWorld
 public static number Sin(DegreeAngle a) =>
 Sin(a.ToRadianAngle());
コード例 #19
0
ファイル: MathA.cs プロジェクト: jabarij/QuantitativeWorld
 public static number Cos(DegreeAngle a) =>
 Cos(a.ToRadianAngle());