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