@@ -4,3 +4,39 @@ test_that("binned scales only support continuous data", {
44 p <- ggplot(mtcars ) + geom_point(aes(disp , mpg , colour = as.character(gear ))) + scale_color_binned()
55 expect_snapshot_error(ggplot_build(p ))
66})
7+
8+ test_that(' binned scales can calculate breaks on dates' , {
9+
10+ data <- seq(as.Date(" 2000-01-01" ), as.Date(" 2020-01-01" ), length.out = 100 )
11+
12+ scale <- scale_x_binned(trans = " date" )
13+ scale $ train(scale $ transform(data ))
14+ breaks <- scale $ trans $ inverse(scale $ get_breaks())
15+
16+ expect_s3_class(breaks , " Date" )
17+ expect_equal(
18+ unname(breaks ),
19+ as.Date(paste0(seq(2002 , 2018 , by = 2 ), " -01-01" ))
20+ )
21+ })
22+
23+ test_that(' binned scales can calculate breaks on date-times' , {
24+ data <- seq(
25+ strptime(" 2000-01-01" , " %Y-%m-%d" ),
26+ strptime(" 2020-01-01" , " %Y-%m-%d" ),
27+ length.out = 100
28+ )
29+
30+ scale <- scale_x_binned(trans = " time" )
31+ scale $ train(scale $ transform(data ))
32+ breaks <- scale $ trans $ inverse(scale $ get_breaks())
33+
34+ expect_s3_class(breaks , " POSIXct" )
35+ expect_equal(
36+ unname(unclass(breaks )),
37+ unclass(as.POSIXct(strptime(
38+ paste0(seq(2002 , 2018 , by = 2 ), " -01-01" ),
39+ " %Y-%m-%d"
40+ )))
41+ )
42+ })
0 commit comments