tests/testthat/test_datetimes.R

context("Dates and times")

quakes <- iNZightTools::smart_read("quakes.csv")
# quakes <- iNZightTools::smart_read("tests/testthat/quakes.csv")
quakes$felt <- as.factor(sample(c("yes", "no"), nrow(quakes), replace = TRUE))

test_that("Datetimes plot OK", {
    expect_is(iNZightPlot(origintime, data = quakes), "inzplotoutput")
    expect_is(iNZightPlot(origintime, magnitude, data = quakes), "inzplotoutput")
    expect_is(iNZightPlot(magnitude, origintime, data = quakes), "inzplotoutput")
    expect_is(iNZightPlot(origintime, felt, data = quakes), "inzplotoutput")
    expect_is(iNZightPlot(felt, origintime, data = quakes), "inzplotoutput")

    expect_is(
        iNZightPlot(magnitude, g1 = origintime, data = quakes),
        "inzplotoutput"
    )
    expect_is(
        iNZightPlot(magnitude,
            g1 = felt,
            g2 = origintime,
            g2.level = "_MULTI",
            data = quakes
        ),
        "inzplotoutput"
    )
})

quakes <- iNZightTools::extract_part(quakes, "origintime", "Date only", "date")
test_that("Dates plot OK", {
    expect_is(iNZightPlot(date, data = quakes), "inzplotoutput")
    expect_is(iNZightPlot(date, magnitude, data = quakes), "inzplotoutput")
    expect_is(iNZightPlot(magnitude, date, data = quakes), "inzplotoutput")
    expect_is(iNZightPlot(date, felt, data = quakes), "inzplotoutput")
    expect_is(iNZightPlot(felt, date, data = quakes), "inzplotoutput")

    expect_is(
        iNZightPlot(magnitude, g1 = date, data = quakes),
        "inzplotoutput"
    )
    expect_is(
        iNZightPlot(magnitude,
            g1 = felt,
            g2 = date,
            g2.level = "_MULTI",
            data = quakes
        ),
        "inzplotoutput"
    )
})

quakes <- iNZightTools::extract_part(quakes, "origintime", "Time only", "time")
test_that("Times plot OK", {
    expect_is(iNZightPlot(time, data = quakes), "inzplotoutput")
    expect_is(iNZightPlot(time, magnitude, data = quakes), "inzplotoutput")
    expect_is(iNZightPlot(magnitude, time, data = quakes), "inzplotoutput")
    expect_is(iNZightPlot(time, felt, data = quakes), "inzplotoutput")
    expect_is(iNZightPlot(felt, time, data = quakes), "inzplotoutput")

    skip_if(
        packageVersion("chron") <= numeric_version("2.3.57") &&
            getRversion() >= numeric_version("4.3")
    )
    expect_is(
        iNZightPlot(magnitude, g1 = time, data = quakes),
        "inzplotoutput"
    )
    expect_is(
        iNZightPlot(magnitude,
            g1 = felt,
            g2 = time,
            g2.level = "_MULTI",
            data = quakes
        ),
        "inzplotoutput"
    )
})

test_that("Summaries provide a reasonable summary", {
    dt.smry <- getPlotSummary(origintime, data = quakes)
    date.smry <- getPlotSummary(date, data = quakes)
    time.smry <- getPlotSummary(time, data = quakes)

    expect_is(dt.smry, "inzight.plotsummary")
    expect_is(date.smry, "inzight.plotsummary")
    expect_is(time.smry, "inzight.plotsummary")

    dti <- grep("Sample Size", dt.smry)

    dx <- strsplit(gsub("  +", "|", dt.smry[dti + 1]), "\\|")[[1]][-1]
    names(dx) <- strsplit(gsub("  +", "|", dt.smry[dti]), "\\|")[[1]][-1]
    expect_equal(
        names(dx),
        c("Start Time", "End Time", "Time Range", "Sample Size")
    )
    expect_equal(
        as.character(dx),
        c(
            as.character(range(quakes$origintime)),
            as.character(
                lubridate::seconds_to_period(
                    diff(as.integer(range(quakes$origintime)))
                )
            ),
            nrow(quakes)
        )
    )

    dti <- grep("Sample Size", date.smry)
    dx <- strsplit(gsub("  +", "|", date.smry[dti + 1]), "\\|")[[1]][-1]
    names(dx) <- strsplit(gsub("  +", "|", date.smry[dti]), "\\|")[[1]][-1]
    expect_equal(
        names(dx),
        c("Start Date", "End Date", "Date Range", "Sample Size")
    )
    expect_equal(
        as.character(dx),
        c(
            as.character(range(quakes$date)),
            sprintf("%i days", as.integer(diff(range(quakes$date)))),
            nrow(quakes)
        )
    )

    dti <- grep("Sample Size", time.smry)
    dx <- strsplit(gsub("  +", "|", time.smry[dti + 1]), "\\|")[[1]][-1]
    names(dx) <- strsplit(gsub("  +", "|", time.smry[dti]), "\\|")[[1]][-1]
    expect_equal(
        names(dx),
        c("Earliest Time", "Latest Time", "Sample Size")
    )
    expect_equal(
        as.character(dx),
        c(
            as.character(range(quakes$time)),
            nrow(quakes)
        )
    )
})

test_that("Axes switched correctly for dt/factor", {
    p1 <- iNZightPlot(time, felt, data = quakes)
    p2 <- iNZightPlot(felt, time, data = quakes)

    expect_equal(p1$gen$opts$transform$x, "time")
    expect_equal(p2$gen$opts$transform$x, "time")
})

test_that("HMS time values supported", {
    d <- data.frame(t = hms::parse_hms(c("12:00:00", "13:00:00")), x = 2:3)
    expect_is(inzplot(x ~ t, data = d), "inzplotoutput")
})

Try the iNZightPlots package in your browser

Any scripts or data that you put into this service are public.

iNZightPlots documentation built on Oct. 14, 2023, 9:13 a.m.