예제 #1
0
        public int CompareTo([CanBeNull] AffordanceDevice other)
        {
            if (other == null)
            {
                return(0);
            }
            if (TimeOffset != other.TimeOffset)
            {
                return(decimal.Compare(TimeOffset, other.TimeOffset));
            }
            if (other.Name != Name)
            {
                return(string.CompareOrdinal(Name, other.Name));
            }
            if (TimeProfile != other.TimeProfile && TimeProfile != null && other.TimeProfile != null)
            {
                return(TimeProfile.CompareTo(other.TimeProfile));
            }
            if (LoadType != null && other.LoadType != null && LoadType != other.LoadType)
            {
                return(LoadType.CompareTo(other.LoadType));
            }

            return(_probability.CompareTo(other.Probability));
        }
예제 #2
0
 public TimeProfileView(TimeProfile profile)
 {
     UnderlyingProfile = profile;
     Nodes             = new List <TimeNodeView>();
     foreach (var node in UnderlyingProfile.Nodes)
     {
         Nodes.Add(new TimeNodeView(node));
     }
 }
예제 #3
0
        public static string Serialize(TimeProfile profile)
        {
            var sb     = new StringBuilder();
            var stream = new StringWriter(sb);

            Serializer.Serialize(stream, profile);

            return(sb.ToString());
        }
예제 #4
0
        public override void WarmsUpProperly()
        {
            var tp     = new TimeProfile(20);
            var time   = new DateTime(2020, 8, 1);
            var period = ((IIndicatorWarmUpPeriodProvider)tp).WarmUpPeriod;

            for (var i = 0; i < period; i++)
            {
                tp.Update(time.AddDays(i), i);
                Assert.AreEqual(i == period - 1, tp.IsReady);
            }
        }
예제 #5
0
        public static void SaveProfile(TimeProfile profile)
        {
            var profileString = TimeProfileSerializer.Serialize(profile);

            var directory = System.IO.Path.GetDirectoryName(_savedProfilePath);

            if (!Directory.Exists(directory))
            {
                Directory.CreateDirectory(directory);
            }

            File.WriteAllText(_savedProfilePath, profileString, Encoding.UTF8);

            Log.Info("Profile saved");
        }
예제 #6
0
        public TimeKeeper(TimeProfile profile)
        {
            _profile = profile;

            var monitors = new List <ITemperatureMonitor>();

            foreach (var monitor in Monitors.Create())
            {
                var wrappedMonitor = new LerpedValuesMonitor(new CachedValuesMonitor(monitor));
                monitors.Add(wrappedMonitor);
                wrappedMonitor.CurrentChanged += WrappedMonitor_CurrentChanged;
            }

            _allMonitors = new Monitors(monitors);
        }
예제 #7
0
        public override void WarmsUpProperly()
        {
            var tp        = new TimeProfile(20);
            var reference = new DateTime(2000, 1, 1);
            var period    = ((IIndicatorWarmUpPeriodProvider)tp).WarmUpPeriod;

            // Check TimeProfile indicator assigns properly a WarmUpPeriod
            Assert.AreEqual(20, period);
            for (var i = 0; i < period; i++)
            {
                tp.Update(new TradeBar()
                {
                    Symbol = Symbols.AAPL, Low = 1, High = 2, Volume = 100, Time = reference.AddDays(1 + i)
                });
                Assert.AreEqual(i == period - 1, tp.IsReady);
            }
        }
예제 #8
0
        public void TestItNow()
        {
            var originalProfile = new TimeProfile
            {
                Name = "Test time profile"
            };
            var originalNode = new TimeNode(TimeSpan.FromHours(7));

            originalNode.Properties.Add(new NodeProperty(NodeProperty.Brightness, 20));
            originalNode.Properties.Add(new NodeProperty(NodeProperty.ColorTemperature, 3300));
            originalProfile.AddNode(originalNode);

            var str = TimeProfileSerializer.Serialize(originalProfile);

            Assert.IsNotNull(str);

            var deserializedProfile = TimeProfileSerializer.Deserialize(str) as TimeProfile;

            Assert.IsNotNull(deserializedProfile);
            Assert.AreEqual(originalProfile.Name, deserializedProfile.Name);
            Assert.AreEqual(originalProfile.Nodes.Count, deserializedProfile.Nodes.Count);

            var deserializedNode = deserializedProfile.Nodes[0];

            Assert.AreEqual(originalNode.TimeOfDay, deserializedNode.TimeOfDay);

            var originalBrightnessProperty     = originalNode.Properties.First(_ => _.Name == NodeProperty.Brightness);
            var deserializedBrightnessProperty = deserializedNode.Properties.First(_ => _.Name == NodeProperty.Brightness);

            Assert.AreEqual(originalBrightnessProperty.Name, deserializedBrightnessProperty.Name);
            Assert.AreEqual(originalBrightnessProperty.Value, deserializedBrightnessProperty.Value);

            var originalColorTemperatureProperty     = originalNode.Properties.First(_ => _.Name == NodeProperty.Brightness);
            var deserializedColorTemperatureProperty = deserializedNode.Properties.First(_ => _.Name == NodeProperty.Brightness);

            Assert.AreEqual(originalColorTemperatureProperty.Name, deserializedColorTemperatureProperty.Name);
            Assert.AreEqual(originalColorTemperatureProperty.Value, deserializedColorTemperatureProperty.Value);
        }