/* * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9) * Copyright (C) 2015 The Jalview Authors * * This file is part of Jalview. * * Jalview is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 3 * of the License, or (at your option) any later version. * * Jalview is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Jalview. If not, see . * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.datamodel; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertFalse; import static org.testng.AssertJUnit.assertTrue; import org.testng.annotations.Test; public class SearchResultsTest { @Test(groups = { "Functional" }) public void testToString() { SequenceI seq = new Sequence("", "abcdefghijklm"); SearchResults sr = new SearchResults(); sr.addResult(seq, 1, 1); assertEquals("0a", sr.toString()); sr.addResult(seq, 3, 5); assertEquals("0a2cde", sr.toString()); seq = new Sequence("", "pqrstuvwxy"); sr.addResult(seq, 6, 7); assertEquals("0a2cde5uv", sr.toString()); } @Test(groups = { "Functional" }) public void testGetCharacters() { SequenceI seq = new Sequence("", "abcdefghijklm"); SearchResults sr = new SearchResults(); sr.addResult(seq, 1, 1); assertEquals("a", sr.getCharacters()); sr.addResult(seq, 3, 5); assertEquals("acde", sr.getCharacters()); seq = new Sequence("", "pqrstuvwxy"); sr.addResult(seq, 6, 7); assertEquals("acdeuv", sr.getCharacters()); } @Test(groups = { "Functional" }) public void testEquals() { SequenceI seq1 = new Sequence("", "abcdefghijklm"); SearchResults sr1 = new SearchResults(); SearchResults sr2 = new SearchResults(); assertFalse(sr1.equals(null)); // null object assertFalse(sr1.equals(seq1)); // wrong type assertTrue(sr1.equals(sr1)); // self assertTrue(sr1.equals(sr2)); // empty assertTrue(sr2.equals(sr1)); // reflexive /* * only one result is not empty */ sr1.addResult(seq1, 1, 1); assertTrue(sr1.equals(sr1)); assertFalse(sr1.equals(sr2)); assertFalse(sr2.equals(sr1)); /* * both the same */ sr2.addResult(seq1, 1, 1); assertTrue(sr1.equals(sr2)); assertTrue(sr2.equals(sr1)); /* * both have three matches */ sr1.addResult(seq1, 3, 4); sr1.addResult(seq1, 6, 8); sr2.addResult(seq1, 3, 4); sr2.addResult(seq1, 6, 8); assertTrue(sr1.equals(sr1)); assertTrue(sr2.equals(sr2)); assertTrue(sr1.equals(sr2)); assertTrue(sr2.equals(sr1)); } /** * Matches that are similar but for distinct sequences are not equal */ @Test(groups = { "Functional" }) public void testEquals_distinctSequences() { SequenceI seq1 = new Sequence("", "abcdefghijklm"); SequenceI seq2 = new Sequence("", "abcdefghijklm"); SearchResults sr1 = new SearchResults(); SearchResults sr2 = new SearchResults(); sr1.addResult(seq1, 1, 1); sr2.addResult(seq2, 1, 1); assertFalse(sr1.equals(sr2)); assertFalse(sr2.equals(sr1)); } /** * Matches that are the same except for ordering are not equal */ @Test(groups = { "Functional" }) public void testEquals_orderDiffers() { SequenceI seq1 = new Sequence("", "abcdefghijklm"); SearchResults sr1 = new SearchResults(); SearchResults sr2 = new SearchResults(); sr1.addResult(seq1, 1, 1); sr1.addResult(seq1, 2, 2); sr2.addResult(seq1, 2, 2); sr2.addResult(seq1, 1, 1); assertFalse(sr1.equals(sr2)); assertFalse(sr2.equals(sr1)); } /** * Verify that hashCode matches for equal objects */ @Test(groups = { "Functional" }) public void testHashcode() { SequenceI seq1 = new Sequence("", "abcdefghijklm"); SearchResults sr1 = new SearchResults(); SearchResults sr2 = new SearchResults(); /* * both empty */ assertEquals(sr1.hashCode(), sr2.hashCode()); /* * both one match */ sr1.addResult(seq1, 1, 1); sr2.addResult(seq1, 1, 1); assertEquals(sr1.hashCode(), sr2.hashCode()); /* * both three matches */ sr1.addResult(seq1, 3, 4); sr1.addResult(seq1, 6, 8); sr2.addResult(seq1, 3, 4); sr2.addResult(seq1, 6, 8); assertEquals(sr1.hashCode(), sr2.hashCode()); } }