test_that("rbind.ddf_col() and rbind.tbl_ddf() work", { tbl_ddf1 <- dibble(x = 1:12, y = 13:24, .dim_names = list(axis1 = 1:4, axis2 = 1:3)) tbl_ddf2 <- dibble(x = 1:12, y = 13:24, .dim_names = list(axis1 = 5:8, axis2 = 4:6)) expect_error(rbind(tbl_ddf1, tbl_ddf1)) tbl_ddf3 <- broadcast(rbind(tbl_ddf1, tbl_ddf2), dim_names = c("axis1", "axis2")) expect_equal(dimnames(tbl_ddf3)[["axis1"]], vec_c(dimnames(tbl_ddf1)[["axis1"]], dimnames(tbl_ddf2)[["axis1"]])) expect_equal(tbl_ddf3 |> filter(axis1 %in% dimnames(tbl_ddf2)[["axis1"]], axis2 %in% dimnames(tbl_ddf2)[["axis2"]]), tbl_ddf2) ddf_col1 <- tbl_ddf1[[1]] ddf_col2 <- tbl_ddf2[[1]] expect_error(rbind(ddf_col1, ddf_col1)) ddf_col3 <- broadcast(rbind(ddf_col1, ddf_col2), dim_names = c("axis1", "axis2")) expect_equal(dimnames(ddf_col3)[["axis1"]], vec_c(dimnames(ddf_col1)[["axis1"]], dimnames(ddf_col2)[["axis1"]])) expect_equal(ddf_col3 |> filter(axis1 %in% dimnames(ddf_col2)[["axis1"]], axis2 %in% dimnames(ddf_col2)[["axis2"]]), ddf_col2) # works when the number of key rows is 1 (#23) data_1 <- tidyr::expand_grid(key = tibble::tibble(col_1 = 1, col_2 = 1)) |> tibble::add_column(value = 1) |> dibble_by("key") data_2 <- tidyr::expand_grid(key = tibble::tibble(col_1 = 2:3, col_2 = 2:3)) |> tibble::add_column(value = 2) |> dibble_by("key") data_3 <- tidyr::expand_grid(key = tibble::tibble(col_1 = 2, col_2 = 2)) |> tibble::add_column(value = 2) |> dibble_by("key") data_4 <- tidyr::expand_grid(key = tibble::tibble(col_1 = 2, col_2 = 2), key_2 = tibble::tibble(col_1 = 2)) |> tibble::add_column(value = 2) |> dibble_by("key", "key_2") expect_no_error(broadcast(rbind(data_1, data_2), "key")) expect_no_error(broadcast(rbind(data_1, data_3), "key")) expect_no_error(broadcast(rbind(data_1, data_4), c("key", "key_2"))) })