1context("xml_nodeset")
2
3test_that("methods work on empty nodesets", {
4
5  x <- read_xml("<a><b/></a>")
6  empty <- xml_find_all(x, "//c")
7
8  expect_error(empty[[1]], "subscript out of bounds")
9  expect_identical(empty[1], empty)
10  test <- empty
11
12  xml_attr(test, "test") <- 1
13  expect_identical(test, empty)
14
15  xml_attrs(test) <- c("test" = 1)
16  expect_identical(test, empty)
17
18  xml_name(test) <- "test"
19  expect_identical(test, empty)
20
21  xml_text(test) <- "test"
22  expect_identical(test, empty)
23
24  expect_identical(as.character(empty), character(0))
25  expect_identical(as_list(empty), list())
26  expect_identical(nodeset_apply(empty, identical), empty)
27  expect_output(print(empty), "\\{xml_nodeset \\(0\\)\\}")
28  expect_output(tree_structure(empty), NA)
29
30  xml_add_child(test, "test")
31  expect_identical(test, empty)
32
33  xml_add_sibling(test, "test")
34  expect_identical(test, empty)
35
36  expect_identical(xml_attr(empty, "test"), character())
37  expect_identical(xml_attrs(empty), list())
38  expect_identical(xml_double(empty), numeric())
39  expect_identical(xml_find_all(empty), empty)
40  expect_identical(xml_find_chr(empty), character())
41  expect_identical(xml_find_first(empty), empty)
42  expect_identical(xml_find_lgl(empty), logical())
43  expect_identical(xml_find_num(empty), numeric())
44  expect_identical(xml_integer(empty), integer())
45  expect_identical(xml_length(empty), 0L)
46  expect_identical(xml_name(empty), character())
47  expect_identical(xml_ns(empty), character())
48  expect_identical(xml_parent(empty), empty)
49  expect_identical(xml_path(empty), character())
50
51  xml_remove(test)
52  expect_identical(test, empty)
53
54  xml_replace(test)
55  expect_identical(test, empty)
56
57  xml_set_attr(test, "test", 1)
58  expect_identical(test, empty)
59
60  xml_set_attrs(test, c("test" = 1))
61  expect_identical(test, empty)
62
63  xml_set_name(test, "test")
64  expect_identical(test, empty)
65
66  xml_set_text(test, "test")
67  expect_identical(test, empty)
68
69  expect_identical(xml_siblings(empty), empty)
70  expect_output(xml_structure(empty), NA)
71
72  expect_identical(xml_text(empty), character())
73  expect_identical(xml_type(empty), character())
74  expect_identical(xml_url(empty), character())
75})
76