using System;
using System.ComponentModel;
using System.Globalization;
namespace LightWebTestFramework.Rules
{
[LocalizableDescription("ConditionalRuleDescriptionContextParameterExistence"), LocalizableDisplayName("ConditionalRuleNameContextParameterExistence")]
public class ContextParameterExistenceRule : ConditionalRule
{
private string m_contextParameterName;
private bool m_checkForExistence;
[LocalizableDescription("PropertyDescriptionContextParameterNameToFind"), LocalizableDisplayName("PropertyNameContextParameterName"), IsContextParameterName(false)]
public string ContextParameterName
{
get
{
return this.m_contextParameterName;
}
set
{
this.m_contextParameterName = value;
}
}
[LocalizableDescription("PropertyDescriptionCheckForParameterExistence"), LocalizableDisplayName("PropertyNameCheckForExistence"), DefaultValue(true)]
public bool CheckForExistence
{
get
{
return this.m_checkForExistence;
}
set
{
this.m_checkForExistence = value;
}
}
public override void CheckCondition(object sender, ConditionalEventArgs e)
{
if (this.m_checkForExistence && e.WebTest.Context.ContainsKey(this.m_contextParameterName))
{
e.IsMet = true;
return;
}
if (!this.m_checkForExistence && !e.WebTest.Context.ContainsKey(this.m_contextParameterName))
{
e.IsMet = true;
return;
}
e.IsMet = false;
}
public override string StringRepresentation()
{
if (this.m_checkForExistence)
{
return string.Format(CultureInfo.CurrentCulture, Resources.StringRepresentationCheckForParameterExistence, new object[]
{
this.m_contextParameterName
});
}
return string.Format(CultureInfo.CurrentCulture, Resources.StringRepresentationCheckForParameterAbsence, new object[]
{
this.m_contextParameterName
});
}
}
}