Loading tests/testSequenceA.cpp +89 −4 Original line number Diff line number Diff line Loading @@ -18,29 +18,100 @@ bool failExample(const char* testName, const string& msg, string expected, strin return false; } bool test_0() { template <size_t N, typename = void> struct has_sequence : std::false_type {}; template <size_t N> struct has_sequence<N, std::void_t< decltype(sequence(std::declval<const std::vector<std::array<char,N>>&>())) >> : std::true_type {}; bool test_0_5() { const char* T = "sequence 3a"; { vector<array<char,7>> reads = {{ {'A','B','C','D','E','F','G'} {'A','B','C','D','E'} }}; string got = sequence(reads); string expected = "ABCDE"; if (got != expected) warnExample(T, "single read", expected, got); } { vector<array<char,7>> read7 = {{ {'A','B','C','D','E'}, {'B','C','D','E','F'}, {'C','D','E','F','G'} }}; string got = sequence(read7); string expected = "ABCDEFG"; if (got != expected) return failExample(T, "simple overlap chain", expected, got); } return true; } bool test_0_6() { const char* T = "sequence 3a"; { vector<array<char,6>> reads = {{ {'A','B','C','D','E','F'} }}; string got = sequence(reads); string expected = "ABCDEF"; if (got != expected) warnExample(T, "single read", expected, got); } { vector<array<char,7>> read7 = {{ {'A','B','C','D','E','F'}, {'B','C','D','E','F','G'}, {'C','D','E','F','G','H'} }}; string got = sequence(read7); string expected = "ABCDEFGH"; if (got != expected) return failExample(T, "simple overlap chain", expected, got); } return true; } bool test_0_7() { const char* T = "sequence 3a"; { vector<array<char,7>> reads = {{ {'A','B','C','D','E','F','G'} }}; string got = sequence(reads); string expected = "ABCDEFG"; if (got != expected) warnExample(T, "single read", expected, got); } { vector<array<char,7>> read7 = {{ {'A','B','C','D','E','F','G'}, {'B','C','D','E','F','G','H'}, {'C','D','E','F','G','H','I'} }}; string got = sequence(reads); string got = sequence(read7); string expected = "ABCDEFGHI"; if (got != expected) Loading @@ -50,8 +121,22 @@ bool test_0() { return true; } auto results_maker() { if constexpr (has_sequence<5>::value) { return std::array<bool,1>{ test_0_5() }; } else if constexpr (has_sequence<6>::value) { return std::array<bool,1>{ test_0_6() }; } else if constexpr (has_sequence<7>::value) { return std::array<bool,1>{ test_0_7() }; } else { static_assert(has_sequence<5>::value || has_sequence<6>::value || has_sequence<7>::value, "No supported sequence() overload found"); } } int main() { bool results[] = { test_0() }; bool results[] = results_maker(); bool allPassed = true; for (size_t i = 0; i < std::size(results); i++) { Loading Loading
tests/testSequenceA.cpp +89 −4 Original line number Diff line number Diff line Loading @@ -18,29 +18,100 @@ bool failExample(const char* testName, const string& msg, string expected, strin return false; } bool test_0() { template <size_t N, typename = void> struct has_sequence : std::false_type {}; template <size_t N> struct has_sequence<N, std::void_t< decltype(sequence(std::declval<const std::vector<std::array<char,N>>&>())) >> : std::true_type {}; bool test_0_5() { const char* T = "sequence 3a"; { vector<array<char,7>> reads = {{ {'A','B','C','D','E','F','G'} {'A','B','C','D','E'} }}; string got = sequence(reads); string expected = "ABCDE"; if (got != expected) warnExample(T, "single read", expected, got); } { vector<array<char,7>> read7 = {{ {'A','B','C','D','E'}, {'B','C','D','E','F'}, {'C','D','E','F','G'} }}; string got = sequence(read7); string expected = "ABCDEFG"; if (got != expected) return failExample(T, "simple overlap chain", expected, got); } return true; } bool test_0_6() { const char* T = "sequence 3a"; { vector<array<char,6>> reads = {{ {'A','B','C','D','E','F'} }}; string got = sequence(reads); string expected = "ABCDEF"; if (got != expected) warnExample(T, "single read", expected, got); } { vector<array<char,7>> read7 = {{ {'A','B','C','D','E','F'}, {'B','C','D','E','F','G'}, {'C','D','E','F','G','H'} }}; string got = sequence(read7); string expected = "ABCDEFGH"; if (got != expected) return failExample(T, "simple overlap chain", expected, got); } return true; } bool test_0_7() { const char* T = "sequence 3a"; { vector<array<char,7>> reads = {{ {'A','B','C','D','E','F','G'} }}; string got = sequence(reads); string expected = "ABCDEFG"; if (got != expected) warnExample(T, "single read", expected, got); } { vector<array<char,7>> read7 = {{ {'A','B','C','D','E','F','G'}, {'B','C','D','E','F','G','H'}, {'C','D','E','F','G','H','I'} }}; string got = sequence(reads); string got = sequence(read7); string expected = "ABCDEFGHI"; if (got != expected) Loading @@ -50,8 +121,22 @@ bool test_0() { return true; } auto results_maker() { if constexpr (has_sequence<5>::value) { return std::array<bool,1>{ test_0_5() }; } else if constexpr (has_sequence<6>::value) { return std::array<bool,1>{ test_0_6() }; } else if constexpr (has_sequence<7>::value) { return std::array<bool,1>{ test_0_7() }; } else { static_assert(has_sequence<5>::value || has_sequence<6>::value || has_sequence<7>::value, "No supported sequence() overload found"); } } int main() { bool results[] = { test_0() }; bool results[] = results_maker(); bool allPassed = true; for (size_t i = 0; i < std::size(results); i++) { Loading