using System; using JetBrains.ProjectModel; using JetBrains.ReSharper.UnitTestExplorer; namespace MbUnit.ReSharperRunner.Elements { internal class MbUnitChildTestElement : MbUnitTestElement, IEquatable { private readonly MbUnitTestElement currentTest; public MbUnitChildTestElement(MbUnitTestElement parentTest, IUnitTestProvider provider, IProjectModelElement project, string declaringTypeName, string methodName, string childTestTyp) : base(provider, parentTest, parentTest.Fixture, project, declaringTypeName, methodName, childTestTyp ) { currentTest = parentTest; } public MbUnitTestElement Test { get { return currentTest; } } #region IEquatable Members public bool Equals(MbUnitChildTestElement mbUnitTestElement) { if (mbUnitTestElement == null) { return false; } if (!base.Equals(mbUnitTestElement)) { return false; } if (!Equals(currentTest, mbUnitTestElement.currentTest)) { return false; } return true; } #endregion public override string GetTitle() { return string.Format("{0}.{1}", currentTest.GetTitle(), MethodName); } public override bool Matches(string filter) { return (Fixture.Matches(filter) || (MethodName.IndexOf(filter, StringComparison.CurrentCultureIgnoreCase) != -1)); } public override bool Equals(object obj) { if (ReferenceEquals(this, obj)) { return true; } return Equals(obj as MbUnitTestElement); } public override int GetHashCode() { int result = base.GetHashCode(); result = 29 * result + (currentTest != null ? currentTest.GetHashCode() : 0); return result; } } }