protected ObjectColor GetColor(IMetricTypeCacheReadObject metricType, IMetricCacheReadObject metric, double?value) { var conditionRed = metric.ConditionRed ?? metricType.ConditionRed; var conditionYellow = metric.ConditionYellow ?? metricType.ConditionYellow; var conditionGreen = metric.ConditionGreen ?? metricType.ConditionGreen; var color = metric.ElseColor ?? metricType.ElseColor ?? ObjectColor.Gray; var parameters = new[] { new KeyValuePair <string, double?>("value", value) }; if (ConditionChecker.Check(parameters, conditionRed)) { color = ObjectColor.Red; } else if (ConditionChecker.Check(parameters, conditionYellow)) { color = ObjectColor.Yellow; } else if (ConditionChecker.Check(parameters, conditionGreen)) { color = ObjectColor.Green; } return(color); }
public void EmptyConditionTest() { var parameters = new[] { new KeyValuePair <string, double?>("HDD", null) }; var condition = @""; var result = ConditionChecker.Check(parameters, condition); Assert.False(result); }
public void IsNullConditionTest() { var parameters = new[] { new KeyValuePair <string, double?>("HDD", null) }; var condition = @"HDD == null"; var result = ConditionChecker.Check(parameters, condition); Assert.True(result); }
public void NullAndZero2Test() { var parameters = new[] { new KeyValuePair <string, double?>("value", null), }; var condition = @"value > 10"; var result = ConditionChecker.Check(parameters, condition); Assert.False(result); }
public void UnSatisfiedConditionTest() { var parameters = new[] { new KeyValuePair <string, double?>("HDD", 100), new KeyValuePair <string, double?>("MEM", 500), }; var condition = @"HDD <= 100 && MEM <= 100"; var result = ConditionChecker.Check(parameters, condition); Assert.False(result); }
public void PerformanceTest() { var startDate = DateTime.Now; for (var i = 0; i < 10000; i++) { var parameters = new[] { new KeyValuePair <string, double?>("HDD", 1) }; var condition = @"HDD > 100"; var result = ConditionChecker.Check(parameters, condition); } var endDate = DateTime.Now; var duration = (int)(endDate - startDate).TotalMilliseconds; Console.WriteLine(duration + " ms"); }
public void NoFilesAccessTest() { bool exceptionFlag = false; var parameters = new[] { new KeyValuePair <string, double?>("HDD", null) }; var condition = @"(new ActiveXObject('Scripting.FileSystemObject').CreateTextFile('C:\\test.txt', true).WriteLine('TEST') == 0)"; try { var result = ConditionChecker.Check(parameters, condition); } catch (Exception) { exceptionFlag = true; } Assert.True(exceptionFlag); }
public void NoCLRAccessTest() { bool exceptionFlag = false; var parameters = new[] { new KeyValuePair <string, double?>("HDD", null) }; var condition = @"(new System.Text.StringBuilder()).Count == 0"; try { var result = ConditionChecker.Check(parameters, condition); } catch (Exception) { exceptionFlag = true; } Assert.True(exceptionFlag); }
/// <summary> /// Получить этапы программирования в зависимости от программатора /// (бутлоадер например, не может записать самого себя) /// </summary> /// <param name="E"></param> /// <returns></returns> public Action[] GetActions(State S) { var Acts = new List <Action>(); var SE = new ScriptExec(); foreach (var A in Actions) { if (A.Cond == null) { Acts.Add(A); } else { if (ConditionChecker.Check(A.Cond, S)) { Acts.Add(A); } } } return(Acts.ToArray()); }