Nothing
# SETUP ----
char_atp <- c("mA", "mY", "nbA", "nsA")
sq_unt <- sq(c("PQNVIXFD", "PDOQXN-FI", "SPBI-F-XXS"), alphabet = "unt")
sq_atp <- sq(c("mAmYmY", "nbAnsAmA", ""), alphabet = char_atp)
sq_dna <- sq(c("TTCAGGGCTAG", "CGATTGC", "CAGTTTA"), alphabet = "dna_bsc")
sq_empty <- sq(character(), alphabet = "rna_bsc")
NA_warning <- "some sequences are subsetted with index bigger than length - NA introduced"
NA_letter <- getOption("tidysq_NA_letter")
# CORRECT PROTOTYPE OF RETURNED VALUE ----
test_that("bite() returns an sq object of original type", {
suppressWarnings({
expect_vector(bite(sq_unt, 2:5),
ptype = sq_ptype(vec_data(alphabet(sq_unt)), "unt"),
size = vec_size(sq_unt))
expect_vector(bite(sq_atp, 2:5),
ptype = sq_ptype(char_atp, "atp"),
size = vec_size(sq_atp))
expect_vector(bite(sq_dna, 2:5),
ptype = sq_ptype(CPP_get_standard_alphabet("dna_bsc"), "dna_bsc"),
size = vec_size(sq_dna))
expect_vector(bite(sq_empty, 2:5),
ptype = sq_ptype(CPP_get_standard_alphabet("rna_bsc"), "rna_bsc"),
size = vec_size(sq_empty))
})
})
# ERROR FOR NON-SQ OBJECTS ----
test_sq_only(bite, indices = 4:6)
# HANDLING INDICES INSIDE SEQUENCE ORIGINAL LENGTH ----
test_that("bite() interprets positive indices correctly", {
expect_equal(as.character(bite(sq_unt, c(4, 2, 1))),
c("VQP", "QDP", "IPS"))
expect_equal(as.character(bite(sq_dna, 4:7)),
c("AGGG", "TTGC", "TTTA"))
})
test_that("bite() correctly interpretes '-1' index (unknown as '-0' in C++)", {
expect_equal(as.character(bite(sq_dna, -1)),
c("TCAGGGCTAG", "GATTGC", "AGTTTA"))
})
test_that("bite() interprets negative indices correctly", {
expect_equal(as.character(bite(sq_unt, -6)),
c("PQNVIFD", "PDOQX-FI", "SPBI--XXS"))
expect_equal(as.character(bite(sq_dna, -3:-7)),
c("TTCTAG", "CG", "CA"))
})
# HANDLING INDICES OUT OF SEQUENCE ORIGINAL LENGTH ----
test_that("bite() raises a warning when indices reach outside original length", {
expect_warning(bite(sq_unt, 13:16), NA_warning)
expect_warning(bite(sq_atp, 13:16), NA_warning)
expect_warning(bite(sq_dna, 13:16), NA_warning)
})
test_that("bite() returns NA_letter for each index outside of original length", {
suppressWarnings({
expect_equal(as.character(bite(sq_unt, 13:16)),
rep(paste0(rep(NA_letter, 4), collapse = ""), vec_size(sq_unt)))
expect_equal(as.character(bite(sq_atp, 3:5)),
paste0(c("mY", "mA", NA_letter),
paste0(rep(NA_letter, 2), collapse = "")))
expect_equal(as.character(bite(sq_dna, c(16, 20, 13))),
rep(paste0(rep(NA_letter, 3), collapse = ""), vec_size(sq_dna)))
})
})
test_that("bite() ignores negative indices outside of original length", {
expect_equal(as.character(bite(sq_unt, c(-6, -20))),
c("PQNVIFD", "PDOQX-FI", "SPBI--XXS"))
expect_equal(as.character(bite(sq_dna, -15:-19)),
c("TTCAGGGCTAG", "CGATTGC", "CAGTTTA"))
expect_equal(as.character(bite(sq_atp, c(-2, -5))),
c("mAmY", "nbAmA", ""))
})
# CORNER/EDGE CASES ----
test_that("bite() does nothing on empty sq objects", {
expect_equal(bite(sq_empty, 2), sq_empty)
expect_equal(bite(sq_empty, 5:9), sq_empty)
expect_equal(bite(sq_empty, c(7, 16, 3)), sq_empty)
expect_equal(bite(sq_empty, -c(8, 2, 1)), sq_empty)
})
test_that("bite() ignores multiple instances of the same negative index", {
expect_identical(as.character(bite(sq_unt, c(-6, -6, -6))),
c("PQNVIFD", "PDOQX-FI", "SPBI--XXS"))
expect_identical(as.character(bite(sq_dna, c(-4, -1, -1, -7, -4))),
c("TCGGCTAG", "GATG", "AGTT"))
})
test_that("bite() throws an error when passed mixed positive and negative indices", {
expect_error(bite(sq_dna, -5:5))
expect_error(bite(sq_empty, c(6, -1, 0, 5)))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.