1context("Detecting patterns") 2 3test_that("special cases are correct", { 4 expect_equal(str_detect(NA, "x"), NA) 5 expect_equal(str_detect(character(), "x"), logical()) 6}) 7 8test_that("vectorised patterns work", { 9 expect_equal(str_detect("ab", c("a", "b", "c")), c(T, T, F)) 10 expect_equal(str_detect(c("ca", "ab"), c("a", "c")), c(T, F)) 11 12 # negation works 13 expect_equal(str_detect("ab", c("a", "b", "c"), negate = TRUE), c(F, F, T)) 14}) 15 16test_that("modifiers work", { 17 expect_false(str_detect("ab", "AB")) 18 expect_true(str_detect("ab", regex("AB", TRUE))) 19 20 expect_true(str_detect("abc", "ab[c]")) 21 expect_false(str_detect("abc", fixed("ab[c]"))) 22 expect_true(str_detect("ab[c]", fixed("ab[c]"))) 23 expect_true(str_detect("ab[c]", coll("ab[c]"))) 24 25 expect_true(str_detect("abc", "(?x)a b c")) 26}) 27 28test_that("str_starts works", { 29 expect_true(str_starts("ab", "a")) 30 expect_false(str_starts("ab", "b")) 31 32 # negation 33 expect_false(str_starts("ab", "a", TRUE)) 34 expect_true(str_starts("ab", "b", TRUE)) 35 36 # Special typing of patterns. 37 expect_true(str_starts("ab", fixed("A", ignore_case = TRUE))) 38 expect_true(str_starts("ab", regex("A", ignore_case = TRUE))) 39}) 40 41test_that("str_ends works", { 42 expect_true(str_ends("ab", "b")) 43 expect_false(str_ends("ab", "a")) 44 45 # negation 46 expect_false(str_ends("ab", "b", TRUE)) 47 expect_true(str_ends("ab", "a", TRUE)) 48 49 # Special typing of patterns. 50 expect_true(str_ends("ab", fixed("B", ignore_case = TRUE))) 51}) 52