private static IEnumerable <ContextWithCastByRatio> BuildContexts() { var namespaces = new UnitNamespaces(Resource.NamespaceAngle); var zeroTestCase = new CastRatioTestCase(0d, 0d, 0d); yield return(new ContextWithCastByRatio( context: namespaces + new UnitDefinition("Radian", "rad"), ratio: new CastRatio(1, "1", "RadianRatio"), testCases: new[] { zeroTestCase, new CastRatioTestCase(Math.PI / 6, 1e3 * Math.PI / 6, 30d), new CastRatioTestCase(Math.PI / 4, 1e3 * Math.PI / 4, 45d), new CastRatioTestCase(Math.PI / 3, 1e3 * Math.PI / 3, 60d), new CastRatioTestCase(Math.PI / 2, 1e3 * Math.PI / 2, 90d), new CastRatioTestCase(Math.PI, 1e3 * Math.PI, 180d), new CastRatioTestCase(Math.PI * 3 / 2d, 1e3 * Math.PI * 3 / 2, 270d), new CastRatioTestCase(Math.PI * 2, 1e3 * Math.PI * 2, 360d), new CastRatioTestCase(-Math.PI, 1e3 * -Math.PI, -180d), })); yield return(new ContextWithCastByRatio( context: namespaces + new UnitDefinition("Milliradian", "mrad"), ratio: new CastRatio(1e-3, "0.001d", "RadianRatio"), testCases: new[] { zeroTestCase, new CastRatioTestCase(1e3 * Math.PI / 6, Math.PI / 6, 30d), new CastRatioTestCase(1e3 * Math.PI / 4, Math.PI / 4, 45d), new CastRatioTestCase(1e3 * Math.PI / 3, Math.PI / 3, 60d), new CastRatioTestCase(1e3 * Math.PI / 2, Math.PI / 2, 90d), new CastRatioTestCase(1e3 * Math.PI, Math.PI, 180d), new CastRatioTestCase(1e3 * Math.PI * 3 / 2d, Math.PI * 3 / 2, 270d), new CastRatioTestCase(1e3 * Math.PI * 2, Math.PI * 2, 360d), new CastRatioTestCase(1e3 * -Math.PI, -Math.PI, -180d), })); yield return(new ContextWithCastByRatio( context: namespaces + new UnitDefinition("Degree", "°"), ratio: new CastRatio(Math.PI / 180d, "System.Math.PI / 180d", "RadianRatio"), testCases: new[] { zeroTestCase, new CastRatioTestCase(30d, Math.PI / 6, 1e3 * Math.PI / 6), new CastRatioTestCase(45d, Math.PI / 4, 1e3 * Math.PI / 4), new CastRatioTestCase(60d, Math.PI / 3, 1e3 * Math.PI / 3), new CastRatioTestCase(90d, Math.PI / 2, 1e3 * Math.PI / 2), new CastRatioTestCase(180d, Math.PI, 1e3 * Math.PI), new CastRatioTestCase(270d, Math.PI * 3 / 2, 1e3 * Math.PI * 3 / 2), new CastRatioTestCase(360d, Math.PI * 2, 1e3 * Math.PI * 2), new CastRatioTestCase(-180d, -Math.PI, 1e3 * -Math.PI), })); }
private static IEnumerable <ContextWithCastByRatio> BuildContexts() { var namespaces = new UnitNamespaces(Resource.NamespaceImperialLength); var zeroTestCase = new CastRatioTestCase(0d, 0d, 0d, 0d); yield return(new ContextWithCastByRatio( context: namespaces + new UnitDefinition("inch", "in"), ratio: new CastRatio(1d / 12, "1d / 12d", "FootRatio"), testCases: new[] { zeroTestCase, new CastRatioTestCase(1d, 0.0833333d, 0.0277778d, 1.5783e-5d), new CastRatioTestCase(10d, 0.833333d, 0.277778d, 1.5783e-4d), new CastRatioTestCase(-0.5d, -0.0416667d, -0.0138889d, -7.8914204545e-6d), })); yield return(new ContextWithCastByRatio( context: namespaces + new UnitDefinition("foot", "ft"), ratio: new CastRatio(1, "1", "FootRatio"), testCases: new[] { zeroTestCase, new CastRatioTestCase(1d, 12d, 0.333333d, 0.000189394d), new CastRatioTestCase(10d, 120d, 3.33333d, 0.00189394d), new CastRatioTestCase(-0.5d, -6d, -0.166667d, -9.4697e-5d), })); yield return(new ContextWithCastByRatio( context: namespaces + new UnitDefinition("yard", "yd"), ratio: new CastRatio(3, "3", "FootRatio"), testCases: new[] { zeroTestCase, new CastRatioTestCase(1d, 36d, 3d, 0.000568182d), new CastRatioTestCase(10d, 360d, 30d, 0.00568182d), new CastRatioTestCase(-0.5d, -18d, -1.5d, -0.000284091d), })); yield return(new ContextWithCastByRatio( context: namespaces + new UnitDefinition("mile", "mi"), ratio: new CastRatio(5_280, "5_280", "FootRatio"), testCases: new[] { zeroTestCase, new CastRatioTestCase(1d, 63360d, 5280d, 1760d), new CastRatioTestCase(10d, 633600d, 52800d, 17600d), new CastRatioTestCase(-0.5d, -31680d, -2640d, -880d), })); }
private static IEnumerable <ContextWithCastByRatio> BuildContexts() { var zeroTestCase = new CastRatioTestCase(0, 0, 0, 0, 0, 0, 0, 0); var namespaces = new UnitNamespaces(Resource.NamespaceTime); yield return(new ContextWithCastByRatio( context: namespaces + new UnitDefinition("year", "years"), ratio: new CastRatio(146_097d / 400d, "/* ~365.2425 */ 146_097d / 400d", "DayPortion"), testCases: new[] { zeroTestCase, new CastRatioTestCase(1, MonthsPerYear, WeeksPerYear, DaysPerYear, HoursPerYear, MinutesPerYear, SecondsPerYear, MillisecondsPerYear), new CastRatioTestCase(4, 4 * MonthsPerYear, 4 * WeeksPerYear, 4 * 365.25, 1461 * HoursPerDay, 1461 * MinutesPerDay, 1461 * SecondsPerDay, 1461 * MillisecondsPerDay), } )); yield return(new ContextWithCastByRatio( context: namespaces + new UnitDefinition("month", "months"), ratio: new CastRatio(48_699d / 1_600d, "/* ~30.436875 */ 48_699d / 1_600d", "DayPortion"), testCases: new[] { zeroTestCase, new CastRatioTestCase(1, 1 / MonthsPerYear, WeeksPerMonth, DaysPerMonth, HoursPerMonth, MinutesPerMonth, SecondsPerMonth, MillisecondsPerMonth), new CastRatioTestCase(MonthsPerYear, 1d, WeeksPerYear, DaysPerYear, HoursPerYear, MinutesPerYear, SecondsPerYear, MillisecondsPerYear), } )); yield return(new ContextWithCastByRatio( context: namespaces + new UnitDefinition("week", "weeks"), ratio: new CastRatio(7, "7", "DayPortion"), testCases: new[] { zeroTestCase, new CastRatioTestCase(1, DaysPerWeek / DaysPerYear, DaysPerWeek / DaysPerMonth, DaysPerWeek, HoursPerWeek, MinutesPerWeek, SecondsPerWeek, MillisecondsPerWeek), new CastRatioTestCase(WeeksPerYear, 1, MonthsPerYear, DaysPerYear, HoursPerYear, MinutesPerYear, SecondsPerYear, MillisecondsPerYear), } )); yield return(new ContextWithCastByRatio( context: namespaces + new UnitDefinition("day", "days"), ratio: new CastRatio(1, "1", "DayPortion"), testCases: new[] { zeroTestCase, new CastRatioTestCase(1, 1 / DaysPerYear, 1 / DaysPerMonth, 1 / DaysPerWeek, HoursPerDay, MinutesPerDay, SecondsPerDay, MillisecondsPerDay), new CastRatioTestCase(DaysPerMonth, 1 / MonthsPerYear, 1, WeeksPerMonth, HoursPerMonth, MinutesPerMonth, SecondsPerMonth, MillisecondsPerMonth), new CastRatioTestCase(DaysPerYear, 1, MonthsPerYear, WeeksPerYear, HoursPerYear, MinutesPerYear, SecondsPerYear, MillisecondsPerYear), } )); yield return(new ContextWithCastByRatio( context: namespaces + new UnitDefinition("hour", "hours"), ratio: new CastRatio(1d / 24d, "1d / 24d", "DayPortion"), testCases: new[] { zeroTestCase, new CastRatioTestCase(1, 1 / HoursPerYear, 1 / HoursPerMonth, 1 / HoursPerWeek, 1 / HoursPerDay, MinutesPerHour, SecondsPerHour, MillisecondsPerHour), new CastRatioTestCase(HoursPerDay, 1 / DaysPerYear, 1 / DaysPerMonth, 1 / DaysPerWeek, 1, MinutesPerDay, SecondsPerDay, MillisecondsPerDay), } )); yield return(new ContextWithCastByRatio( context: namespaces + new UnitDefinition("minute", "minutes"), ratio: new CastRatio(1d / (24d * 60d), "1d / (24d * 60d)", "DayPortion"), testCases: new[] { zeroTestCase, new CastRatioTestCase(1, 1 / MinutesPerYear, 1 / MinutesPerMonth, 1 / MinutesPerWeek, 1 / MinutesPerDay, 1 / MinutesPerHour, SecondsPerMinute, MillisecondsPerMinute), new CastRatioTestCase(MinutesPerHour, 1 / HoursPerYear, 1 / HoursPerMonth, 1 / HoursPerWeek, 1 / HoursPerDay, 1, SecondsPerHour, MillisecondsPerHour), } )); yield return(new ContextWithCastByRatio( context: namespaces + new UnitDefinition("second", "seconds"), ratio: new CastRatio(1d / (24d * 60d * 60d), "1d / (24d * 60d * 60d)", "DayPortion"), testCases: new[] { zeroTestCase, new CastRatioTestCase(1, 1 / SecondsPerYear, 1 / SecondsPerMonth, 1 / SecondsPerWeek, 1 / SecondsPerDay, 1 / SecondsPerHour, 1 / SecondsPerMinute, MillisecondsPerSecond), new CastRatioTestCase(SecondsPerDay, 1 / DaysPerYear, 1 / DaysPerMonth, 1 / DaysPerWeek, 1, HoursPerDay, MinutesPerDay, MillisecondsPerDay), } )); yield return(new ContextWithCastByRatio( context: namespaces + new UnitDefinition("millisecond", "milliseconds"), ratio: new CastRatio(1d / (24d * 60d * 60d * 1_000d), "1d / (24d * 60d * 60d * 1_000d)", "DayPortion"), testCases: new[] { zeroTestCase, new CastRatioTestCase(1, 1 / MillisecondsPerYear, 1 / MillisecondsPerMonth, 1 / MillisecondsPerWeek, 1 / MillisecondsPerDay, 1 / MillisecondsPerHour, 1 / MillisecondsPerMinute, 1 / MillisecondsPerSecond), new CastRatioTestCase(MillisecondsPerHour, 1 / HoursPerYear, 1 / HoursPerMonth, 1 / HoursPerWeek, 1 / HoursPerDay, 1, MinutesPerHour, SecondsPerHour), } )); }