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); }
public void ShouldProduceValidResultInSameUnit(DegreeAngle originalDegreeAngle, DegreeAngle expectedDegreeAngle) { // arrange // act var result = originalDegreeAngle.ToNormalized(); // assert result.TotalSeconds.Should().BeApproximately(expectedDegreeAngle.TotalSeconds); }
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(); }
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)'"); }
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)'"); }
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); }
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>(); }
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); }
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); }
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); }
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); }
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); }
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(); }
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); }
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); }
public GeoCoordinate GetDestinationPoint(Length distance, DegreeAngle bearing) => GetDestinationPoint(distance, bearing.ToRadianAngle());
public static number Tan(DegreeAngle a) => Tan(a.ToRadianAngle());
public static number Sin(DegreeAngle a) => Sin(a.ToRadianAngle());
public static number Cos(DegreeAngle a) => Cos(a.ToRadianAngle());