blob: 1ef280807b08698c17415ebb26eec6bb649c7189 [file] [log] [blame]
# Page numbering and ETA tests
test_that("page numbering is displayed correctly in sequential mode", {
skip_if_offline()
kco <- KorAPConnection(verbose = TRUE, cache = FALSE)
q <- kco %>% corpusQuery("Test", "pubDate since 2014", fields = c("sigle"))
# Capture output - we need to use sink to capture the actual console output
temp_file <- tempfile()
sink(temp_file)
q <- fetchNext(q, maxFetch = 75)
cat("\n")
sink()
# Read the captured output
output <- readLines(temp_file)
unlink(temp_file)
# Echo the output to console
cat("\nCaptured output from sequential mode:\n")
cat(paste(output, collapse = "\n"))
# Combined output string for all tests
output_str <- paste(output, collapse = "\n")
# Test 1: Check page numbering format
expect_match(
output_str,
"Retrieved page .+/\\d+ \\(page \\d+ of \\d+ total\\)",
info = "Page numbering format not found in output"
)
# Test 2: Check that ETA is displayed with time values (not "N/A")
expect_match(
output_str,
"ETA: [^N][^/][^A]", # Negative pattern to ensure "N/A" is not in the ETA
info = "ETA format is not correct or contains N/A"
)
# Test 3: Check that completion time is shown in parentheses
expect_match(
output_str,
"\\(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\)",
info = "Completion time format not found in output"
)
})
test_that("page numbering and ETA are displayed correctly in randomized mode", {
skip_if_offline()
kco <- KorAPConnection(verbose = TRUE, cache = FALSE)
q <- kco %>% corpusQuery("Test", "pubDate since 2014", fields = c("sigle"))
# Set a fixed seed for reproducible tests
set.seed(123)
# Capture output - we need to use sink to capture the actual console output
temp_file <- tempfile()
sink(temp_file)
q <- fetchNext(q, maxFetch = 75, randomizePageOrder = TRUE)
cat("\n")
sink()
# Read the captured output
output <- readLines(temp_file)
unlink(temp_file)
# Echo the output to console
cat("\nCaptured output from randomized mode:\n")
cat(paste(output, collapse = "\n"))
# Combined output string for all tests
output_str <- paste(output, collapse = "\n")
# Test 1: Check page numbering format in randomized mode
expect_match(
output_str,
"Retrieved page .+/\\d+ \\(actual page \\d+\\)",
info = "Randomized page numbering format not found in output"
)
# Test 2: Check that ETA is displayed and doesn't contain "N/A (random order)"
expect_match(
output_str,
"ETA: [^N][^/][^A]", # Ensure "N/A" is not in the ETA
info = "ETA format is incorrect or contains N/A"
)
# Test 3: Check that proper time values and completion time are shown
expect_match(
output_str,
"ETA: \\d+s \\(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\)",
info = "Time format or completion time not found in output"
)
})
test_that("page numbering and ETA are displayed correctly in subsequent calls with randomized mode", {
skip_if_offline()
kco <- KorAPConnection(verbose = TRUE, cache = FALSE)
q <- kco %>% corpusQuery("Test", "pubDate since 2014", fields = c("sigle"))
# Set a fixed seed for reproducible tests
set.seed(123)
# First call to fetchNext (we don't need to test this part)
q <- fetchNext(q, maxFetch = 75, randomizePageOrder = TRUE)
# Capture output from the subsequent call
temp_file <- tempfile()
sink(temp_file)
q <- fetchNext(q, maxFetch = 50, randomizePageOrder = TRUE)
cat("\n")
sink()
# Read the captured output
output <- readLines(temp_file)
unlink(temp_file)
# Echo the output to console
cat("\nCaptured output from subsequent call with randomized mode:\n")
cat(paste(output, collapse = "\n"))
# Combined output string for all tests
output_str <- paste(output, collapse = "\n")
# Test 1: Check that page numbering format is correct and not negative
expect_match(
output_str,
"Retrieved page [1-9]\\d*/\\d+ \\(actual page \\d+\\)",
info = "Randomized page numbering format is incorrect or negative in subsequent call"
)
# Test 2: Check that ETA is displayed - we're now ensuring it contains digits followed by 's'
expect_match(
output_str,
"ETA: \\d+s",
info = "ETA format should show digits followed by 's'"
)
# Test 3: Check that completion time is shown in parentheses
expect_match(
output_str,
"\\(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\)",
info = "Completion time not found in subsequent call output"
)
})