Exemple #1
0
        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),
            }
                             ));
        }