/** Tests the comparions of symbols */ public void TestEquals() { char[] adenine = { 'A', 'd', 'e', 'n', 'i', 'n', 'e' }; Symbol sym1 = new Symbol('a', "Ade", new string(adenine)); Symbol sym2 = new Symbol('a', "Ade", "Adenine"); Symbol sym3 = new Symbol('u', "Ura", "Uracil"); Assert.AreEqual(true, sym1.Equals(sym2)); Assert.AreEqual(true, sym2.Equals(sym1)); Assert.AreEqual(false, sym1.Equals(sym3)); Assert.AreEqual(false, sym3.Equals(sym1)); }
/// <summary> /// Compares two symbol and returns the "similarity" (weight) between the symbols /// </summary> /// <param name="symbol1">First symbol.</param> /// <param name="symbol2">Second symbol.</param> /// <returns>Returns the "similarity" (weight) between the symbols.</returns> protected double Compare (Symbol symbol1, Symbol symbol2) { if (repeat.weights == null) return symbol1.Equals(symbol2) ? 1.0 : 0.0; return repeat.Weight(symbol1, symbol2); }
/** Tests the comparision with a meta symbol */ public void TestEquals() { SymbolMeta sym = new SymbolMeta('X', "XXX", "Unknown"); Symbol sym2 = new Symbol('a', "Ade", "Adenine"); Symbol sym3 = new Symbol('u', "Ura", "Uracil"); Assert.AreEqual(true, sym.Equals(sym2)); Assert.AreEqual(true, sym2.Equals(sym)); sym.Add(sym2); Assert.AreEqual(true, sym.Equals(sym2)); Assert.AreEqual(true, sym2.Equals(sym)); Assert.AreEqual(false, sym.Equals(sym3)); Assert.AreEqual(false, sym3.Equals(sym)); sym.Add(sym3); Assert.AreEqual(true, sym.Equals(sym)); Assert.AreEqual(true, sym.Equals(sym2)); Assert.AreEqual(true, sym.Equals(sym3)); }
/// <summary> /// Two symbols are equal if the have same name or at least on of the is /// a meta symbol which matches a set of symbols. This methods expects /// a non-null symbol as argument. /// <para></para> /// First the name of symbol is compared and 2nd comparison is done based on its meta type /// </summary> /// <param name="symbol">symbol Symbol to compare with.</param> /// <returns>true: symbols are equal, false: otherwise.</returns> public virtual Boolean Equals(Symbol symbol) { if (symbol.Name == this.Name) return true; if(symbol is SymbolMeta) return symbol.Equals(this); return false; }