1 // ========================================================================== 2 // SeqAn - The Library for Sequence Analysis 3 // ========================================================================== 4 // Copyright (c) 2006-2018, Knut Reinert, FU Berlin 5 // All rights reserved. 6 // 7 // Redistribution and use in source and binary forms, with or without 8 // modification, are permitted provided that the following conditions are met: 9 // 10 // * Redistributions of source code must retain the above copyright 11 // notice, this list of conditions and the following disclaimer. 12 // * Redistributions in binary form must reproduce the above copyright 13 // notice, this list of conditions and the following disclaimer in the 14 // documentation and/or other materials provided with the distribution. 15 // * Neither the name of Knut Reinert or the FU Berlin nor the names of 16 // its contributors may be used to endorse or promote products derived 17 // from this software without specific prior written permission. 18 // 19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22 // ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE 23 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 25 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 26 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 29 // DAMAGE. 30 // 31 // ========================================================================== 32 // Author: Rene Rahn <rene.rahn@fu-berlin.de> 33 // ========================================================================== 34 35 #ifndef TESTS_ALIGN_TEST_MOCK_H_ 36 #define TESTS_ALIGN_TEST_MOCK_H_ 37 38 namespace impl 39 { 40 namespace test_align_mock 41 { 42 43 struct TestAlignSimdVariableLength_; 44 using VariableLengthSimd = seqan::Tag<TestAlignSimdVariableLength_>; 45 46 struct TestAlignSimdEqualLength_; 47 using EqualLengthSimd = seqan::Tag<TestAlignSimdEqualLength_>; 48 49 template <typename TAlphabet, typename TSimdLength> 50 struct TestSequences_; 51 52 template <> 53 struct TestSequences_<seqan::Dna, EqualLengthSimd> 54 { 55 using TSeq = seqan::String<seqan::Dna>; 56 57 static auto 58 getSequences() 59 { 60 seqan::StringSet<TSeq> set; 61 appendValue(set, "AGCGACTGCAAACATCAGATCAGAG"); 62 appendValue(set, "TAATACTAGCATGCGATAAGTCCCT"); 63 appendValue(set, "GGCACGTGGATGGTTTAGAGGAATC"); 64 appendValue(set, "AGATTCAAGTCTGGTTAACCATCAA"); 65 appendValue(set, "ACAGGTCTTGAGTCTAAAATTGTCG"); 66 appendValue(set, "TCTCCTGCGTACGAGATGGAAATAC"); 67 appendValue(set, "TAGGTAACTACAGGGACTCCGACGT"); 68 appendValue(set, "TATGTACGTTGCTCCGTCAGAGGCG"); 69 70 appendValue(set, "CCATTCAGGATCACGTTACCGCGAA"); 71 appendValue(set, "AAAAAGGGACCAGGAGCTCTTCTCC"); 72 appendValue(set, "CCTGCGGTCACGTCTATAGAAATTA"); 73 appendValue(set, "CACCATTAACCCTCCTGAGAACCGG"); 74 appendValue(set, "GAGGCGGGAATCCGTCACGTATGAG"); 75 appendValue(set, "AAGGTATTTGCCCGATAATCAATAC"); 76 appendValue(set, "CCCAGGCTTCTAACTTTTTCCACTC"); 77 appendValue(set, "GCTTGAGCCGGCTAGGCCTTTCTGC"); 78 79 appendValue(set, "ATCTCGGGTCCTGCCCAACCGGTCT"); 80 appendValue(set, "AACAAGGGACCAGGAGCTCTTCTCC"); 81 appendValue(set, "ACACGCTAATATAGCGAATCACCGA"); 82 appendValue(set, "GAACCCGGCGCCACGCAATGGAACG"); 83 appendValue(set, "TCCTTAACTCCGGCAGGCAATTAAA"); 84 appendValue(set, "ACAGAAAAATAGGCGAATGAATCTT"); 85 appendValue(set, "GGGAACGTATGTATAACGCAAAAAA"); 86 appendValue(set, "TTCTCTGTGTATCGAAGAATGGCCT"); 87 88 appendValue(set, "CCGAAGTTTCGATGGACTGGTGCCA"); 89 appendValue(set, "ACGCGCAGGCATAGTTTTAGGAGAA"); 90 appendValue(set, "TTATTCGGGGGCAGTGACAACCAAC"); 91 92 seqan::StringSet<TSeq> set2(set); 93 std::sort(seqan::begin(set2, seqan::Standard()), seqan::end(set2, seqan::Standard()), 94 [](auto& strA, auto& strB){ return seqan::isLess(strA, strB); }); 95 return std::make_tuple(set, set2); 96 } 97 }; 98 99 template <> 100 struct TestSequences_<seqan::Dna, VariableLengthSimd> 101 { 102 using TSeq = seqan::String<seqan::Dna>; 103 104 static auto 105 getSequences() 106 { 107 seqan::StringSet<TSeq> set; 108 appendValue(set, "AGCGACTGCAAACATCAGATCAGAGGTAGAG"); 109 appendValue(set, "TAATACTAGCATGCGATAAGTCCCT"); 110 appendValue(set, "GGCACGTGTGGTTTAGAGGAATC"); 111 appendValue(set, "AGATTCAAGTCTGGTTAACCATCAA"); 112 appendValue(set, "ACAGGTCTTGAGTCTAAAATTGTCGAA"); 113 appendValue(set, "TCTCCTGCGTACGAGATGGAAATAC"); 114 appendValue(set, "TAGGTAACTACAGGGACACGT"); 115 appendValue(set, "TATGTACGTCTCCGTCAGAGGCG"); 116 117 appendValue(set, "CCATTCAGGATCACGTTACCGCGAAGTACCC"); 118 appendValue(set, "AAGGGACCAGGAGCTCTTCTCC"); 119 appendValue(set, "CCTGCGGTCACGTCTATAGAAATT"); 120 appendValue(set, "CACCATTAACCCTCCTGAGAACCGAGTAGG"); 121 appendValue(set, "GAGGCGGGAATCCGTCACGTATGAG"); 122 appendValue(set, "AAGGTATTTGCCCGATAATCAATACGATGAGATAGAGAGATAGAATAGAGAAGGGACCGCGCATGACTACGATCGACTGACTACGA"); 123 appendValue(set, "CGAGTATATCGAGAGAGGTCACG"); 124 appendValue(set, "GCTTGAGCCGGCTAGGCTCTGC"); 125 126 appendValue(set, "ATCTCGGGTCCTGCCAACCGGTCT"); 127 appendValue(set, "AAAAAGGGACCAGGAGCTCTTCTCC"); 128 appendValue(set, "ACACGCTAATATAGCGAATCACCGA"); 129 appendValue(set, "AATGGAACG"); 130 appendValue(set, "TCCTTAACTCCGGCAGGCAATTATACCGGACTGACACTTAAA"); 131 appendValue(set, "ACAGAAAAATAGGCGAATGAAACACTCTT"); 132 appendValue(set, "GGGAACGTATGTATAACGCAAAAA"); 133 appendValue(set, "TTCTCTGTGTATCGAAGAATGCT"); 134 135 appendValue(set, "CCGAAGTTTCGATGGATGGATTCCACACACCTGGTGCCA"); 136 appendValue(set, "ACGCGCAGGCATAGTTGGAGAA"); 137 appendValue(set, "TTATTCGGGGGCAGTGACAACACTTAGCGACTAC"); 138 139 auto set2(set); 140 std::sort(seqan::begin(set2, seqan::Standard()), seqan::end(set2, seqan::Standard()), 141 [](auto& strA, auto& strB){ return seqan::isLess(strA, strB); }); 142 return std::make_tuple(set, set2); 143 } 144 }; 145 146 template <> 147 struct TestSequences_<seqan::AminoAcid, EqualLengthSimd> 148 { 149 using TSeq = seqan::String<seqan::AminoAcid>; 150 151 static auto 152 getSequences() 153 { 154 seqan::StringSet<TSeq> set; 155 appendValue(set, "FNQSAEYPDISLHCGVLKWRATLGT"); 156 appendValue(set, "EIKSDVLLHRPGNIGMQVAESYFAT"); 157 appendValue(set, "PIIMWSMKNRTIERLPTGVLMISHT"); 158 appendValue(set, "FMATNEKVHCACGADYQMIIDCNEA"); 159 appendValue(set, "MFHQTSNANWMFVSNKFHIKFGTLD"); 160 appendValue(set, "SNEMGQCFPHEPACFFDKDFRLFIN"); 161 appendValue(set, "FPWAHYVVHTLREHRKDANHRSTSY"); 162 appendValue(set, "QYRNTESMGCEMRCFTETIMIAGVA"); 163 164 appendValue(set, "VVRMDGKEVLKQHVPTYADKHPTGQ"); 165 appendValue(set, "TMLKWCEWCFAEFPPFASEPKFPPN"); 166 appendValue(set, "GTWGWVDGVHHTMGEQCGPGRACWG"); 167 appendValue(set, "ECDFQTWYFYCVNQEIFELFICCMG"); 168 appendValue(set, "KRRELNGQERGGWWTVDGPGVSMGT"); 169 appendValue(set, "CWAAHYVCWRTKQKQLVAFQRLNCI"); 170 appendValue(set, "NRLVGFQIHCFLIRCVEPGQTHTID"); 171 appendValue(set, "AYYVRGFMMGQMYGRPVILMTFTKP"); 172 173 appendValue(set, "SFTQPVELHIPHYWWHLAYFMIMFY"); 174 appendValue(set, "PMNKMFDFNNHQDLLTFTKRFPTPW"); 175 appendValue(set, "VIPMIYHDWSIISALMMQKDIYYIA"); 176 appendValue(set, "TPGMWGMATLTGNFNSIFVSKYVKN"); 177 appendValue(set, "GKELWGMVIARAGMAVQNMYSRDTF"); 178 appendValue(set, "VHASDLYAKCYSNCVYQENIDIAEV"); 179 appendValue(set, "KQSGTLSGPQYWENVHRVLEDYPKE"); 180 appendValue(set, "DPHGYCFYEGTFAWDVEVHEFNNKD"); 181 182 appendValue(set, "NMQDVIGGKSLAQHSSVTYKAQQEH"); 183 appendValue(set, "CQTPRWECSLNFDEKEAADLMIDVS"); 184 appendValue(set, "PMMDLDHCMLIECLRPHNRDNCARH"); 185 186 decltype(set) set2(set); 187 std::sort(seqan::begin(set2, seqan::Standard()), seqan::end(set2, seqan::Standard()), 188 [](auto& strA, auto& strB){ return seqan::isLess(strA, strB); }); 189 return std::make_tuple(set, set2); 190 } 191 }; 192 193 template <> 194 struct TestSequences_<seqan::AminoAcid, VariableLengthSimd> 195 { 196 using TSeq = seqan::String<seqan::AminoAcid>; 197 198 static auto 199 getSequences() { 200 seqan::StringSet<TSeq> set; 201 appendValue(set, "FNQSAEYPDISHCGVMQLKWRATLGT"); 202 appendValue(set, "EIKSDVLLHRWSMKNPGNILMIDVGMQVAESYFAT"); 203 appendValue(set, "PIIMWSMKNRTIEPTGLMISHT"); 204 appendValue(set, "FMATNEKVHCACGWSMKNADLMIDVYQMIIDCNEA"); 205 appendValue(set, "MWSMKNFHQTSNANWMFVSNMQKFHIKFGTLD"); 206 appendValue(set, "SNEGQCFPHEPACFWSMKFDKDFRLFIN"); 207 appendValue(set, "FPWAHYVVHTLREHMQRKDANHRSTSY"); 208 appendValue(set, "QYRNTWSMKNESMGCEMRFLMIVTETIMIAGVA"); 209 210 appendValue(set, "VVRMDGKEVLWSMKNKQHVPTYADKHPTGQ"); 211 appendValue(set, "TMLKWCEWCFALMIDVEFPPFASEPKFPPN"); 212 appendValue(set, "GTWGVDGVHHWSMWSMKNLMIDVTMGEQCGPGRACWG"); 213 appendValue(set, "ECDFQTWYFYCVNQMQEIFELFICCMG"); 214 appendValue(set, "KRREWSMKNLNGQERGGWWTVDGPGVSMGT"); 215 appendValue(set, "CWAAHYCWRWWSMKNSMKNTKLMIDVQMQKQLVAFQRLNCI"); 216 appendValue(set, "NRLVGFQIHCFIRCVEPGQTHTID"); 217 appendValue(set, "AYYVRGFMMGQMMQYGRPVILMTFTKP"); 218 219 appendValue(set, "SFTQPVELHIPHYWLMIDVWHLAYFMIMFY"); 220 appendValue(set, "PMNKMFDFNHQMQDLLTFTKPTPW"); 221 appendValue(set, "VIPMIYHDWSIISALMMLMIDVQKDIYYIA"); 222 appendValue(set, "TPGMWGMATLTGMQNFNSFVSKYVKN"); 223 appendValue(set, "GKELWGMVIARAGMAVQNLMIDVMYSRDTF"); 224 appendValue(set, "VHASDLWSNYAKCYSNCVYQEIDIAEV"); 225 appendValue(set, "KQSGTLSMQGPYWENVHRVLLMIDVEDYPKE"); 226 appendValue(set, "DPHGYCFMQYEGTFAWDVEVHEFNNKD"); 227 228 appendValue(set, "NMQDVIGGKSLAQHSSVTYAQQEH"); 229 appendValue(set, "CQTPRWECMQSLNFDEKEAADLMIDVS"); 230 appendValue(set, "PMMDLDWSMKNMLIECLRPHNRMQDNLMIDVCARH"); 231 232 auto set2(set); 233 std::sort(seqan::begin(set2, seqan::Standard()), seqan::end(set2, seqan::Standard()), 234 [](auto& strA, auto& strB){ return seqan::isLess(strA, strB); }); 235 return std::make_tuple(set, set2); 236 } 237 }; 238 } // namespace test_align_mock 239 } // namespace impl 240 #endif // TEST_MOCK_H_ 241