Esempio n. 1
0
        public void DateSpanConstructorTest()
        {
            Time time = "10:30 PM";
            var  ds1  = new DateSpan(time);
            var  ds2  = new DateSpan(new Time(22, 30));

            Assert.AreEqual(ds2, ds1);

            ds1.ToDateTime();
            ds2.ToDateTime();

            time = "2:15am";
            var ds3 = new DateSpan(time);
            var ds4 = new DateSpan(new Time(2, 15));

            Assert.AreEqual(ds3, ds4);

            ds3.ToDateTime();
            ds4.ToDateTime();

            Assert.IsTrue(ds1.After(ds3));
            Assert.IsFalse(ds1.Before(ds3));
            Assert.IsTrue(ds3.Before(ds1));
            Assert.IsFalse(ds3.After(ds1));
        }
Esempio n. 2
0
        public void BeforeAfterTest()
        {
            var ds1 = new DateSpan(2017, 1, 1, 12, 30, 0, 0);
            var ds2 = new DateSpan(2017, 1, 2, 12, 30, 0, 0);

            Assert.True(ds1.Before(ds2));
            Assert.True(ds2.After(ds1));
            Assert.False(ds1.After(ds2));
        }
Esempio n. 3
0
            public float GetDimmingLevel()
            {
                if (currentState == -1)
                {
                    autoDimmingLevel = 0;
                }
                else
                {
                    DateSpan start, end, now = DateSpan.Now;
                    if (lightingStates[currentState].startTime.Before(lightingStates[currentState].endTime))
                    {
                        start = new DateSpan(lightingStates[currentState].startTime);
                        end   = new DateSpan(lightingStates[currentState].endTime);
                    }
                    else
                    {
                        var otherDay = DateSpan.Now;
                        // its after midnight
                        if (now.Before(lightingStates[currentState].endTime))
                        {
                            otherDay.AddDays(-1);
                            start = new DateSpan(otherDay, lightingStates[currentState].startTime);
                            end   = new DateSpan(lightingStates[currentState].endTime);
                        }
                        else
                        {
                            otherDay.AddDays(1);
                            start = new DateSpan(lightingStates[currentState].startTime);
                            end   = new DateSpan(otherDay, lightingStates[currentState].endTime);
                        }
                    }

                    if (lightingStates[currentState].type == LightingStateType.LinearRamp)
                    {
                        autoDimmingLevel = Utils.CalcLinearRamp(
                            start,
                            end,
                            now,
                            lightingStates[currentState].startingDimmingLevel,
                            lightingStates[currentState].endingDimmingLevel);
                    }
                    else if (lightingStates[currentState].type == LightingStateType.HalfParabolaRamp)
                    {
                        autoDimmingLevel = Utils.CalcHalfParabola(
                            start,
                            end,
                            now,
                            lightingStates[currentState].startingDimmingLevel,
                            lightingStates[currentState].endingDimmingLevel);
                    }
                    else if (lightingStates[currentState].type == LightingStateType.On)
                    {
                        autoDimmingLevel = lightingStates[currentState].startingDimmingLevel;
                    }
                }

                autoDimmingLevel = autoDimmingLevel.Constrain(0, 100);
                if (plugState)
                {
                    if (dimmingMode == Mode.Auto)
                    {
                        requestedDimmingLevel = autoDimmingLevel;
                    }

                    currentDimmingLevel = rateOfChangeLimiter.RateOfChange(requestedDimmingLevel);
                }

                return(currentDimmingLevel);
            }