test_that("input argument checks", {
  expect_error(rtf_title(r2rtf_tbl1, title = 1))
  expect_error(rtf_title(r2rtf_tbl1, subtitle = NA))
  expect_error(rtf_title(r2rtf_tbl1, text_font = "a"))
  expect_error(rtf_title(r2rtf_tbl1, text_font_size = "b"))
  expect_error(rtf_title(r2rtf_tbl1, text_format = "z"))
})

test_that("title format", {
  ## expect NULL if title is NULL
  x <- r2rtf_tbl1 |> rtf_title(title = NULL, subtitle = "Sub-Title", text_format = "b")
  expect_equal(attr(attr(x, "rtf_title"), "title"), NULL)
  expect_equal(attr(x, "rtf_title")[[1]], "Sub-Title")
  expect_equal(attr(attr(x, "rtf_title"), "text_format")[1], "b")

  x <- r2rtf_tbl1 |> rtf_title(title = "Title", subtitle = "Sub-Title", text_format = "b")
  expect_equal(attributes(x)$rtf_title[[1]], "Title")
  expect_equal(attributes(x)$rtf_title[[2]], "Sub-Title")
})

test_that("title font color and background color", {
  x <- r2rtf_tbl1 |> rtf_title(title = "Title", text_color = "green", text_background_color = "blue")
  expect_equal(attr(attr(x, "rtf_title"), "text_color")[1], "green")
  expect_equal(attr(attr(x, "rtf_title"), "text_background_color")[1], "blue")
})

test_that("title justification, spacing and indentation", {
  x <- r2rtf_tbl1 |> rtf_title(
    title = "Title",
    text_justification = "l",
    text_space = 60,
    text_space_before = 6,
    text_space_after = 10,
    text_indent_first = 20,
    text_indent_left = 2,
    text_indent_right = 3
  )
  expect_equal(attr(attr(x, "rtf_title"), "text_justification")[1], "l")
  expect_equal(attr(attr(x, "rtf_title"), "text_space")[1], 60)
  expect_equal(attr(attr(x, "rtf_title"), "text_space_before")[1], 6)
  expect_equal(attr(attr(x, "rtf_title"), "text_space_after")[1], 10)
  expect_equal(attr(attr(x, "rtf_title"), "text_indent_first")[1], 20)
  expect_equal(attr(attr(x, "rtf_title"), "text_indent_left")[1], 2)
  expect_equal(attr(attr(x, "rtf_title"), "text_indent_right")[1], 3)

  expect_error(r2rtf_tbl1 |> rtf_title(justification = "xxx"))
  expect_error(r2rtf_tbl1 |> rtf_title(space = "xxx"))
  expect_error(r2rtf_tbl1 |> rtf_title(indent_first = "xxx"))
})

test_that("multiple subtitles", {
  x <- r2rtf_tbl1 |> rtf_title(title = "Title 1", subtitle = c("Sub-Title 1", "Sub-Title 2", "Sub-Title 3"))
  expect_equal(attributes(x)$rtf_title[[1]], "Title 1")
  expect_equal(attributes(x)$rtf_title[[2]], "Sub-Title 1")
  expect_equal(attributes(x)$rtf_title[[3]], "Sub-Title 2")
  expect_equal(attributes(x)$rtf_title[[4]], "Sub-Title 3")

  x <- r2rtf_tbl1 |> rtf_title(subtitle = c("Sub-Title 1", "Sub-Title 2", "Sub-Title 3"))
  expect_equal(attributes(x)$rtf_title[[1]], "Sub-Title 1")
  expect_equal(attributes(x)$rtf_title[[2]], "Sub-Title 2")
  expect_equal(attributes(x)$rtf_title[[3]], "Sub-Title 3")
})
