ianmcook commented on a change in pull request #9999:
URL: https://github.com/apache/arrow/pull/9999#discussion_r624227933



##########
File path: r/tests/testthat/test-dplyr-mutate.R
##########
@@ -185,6 +164,238 @@ test_that("mutate with single value for recycling", {
   )
 })
 
+# similar to 
https://github.com/tidyverse/dplyr/blob/master/tests/testthat/test-mutate.r#L12-L6
+test_that("rownames are preserved", {
+  skip("Row names are not preserved")
+  df <- data.frame(x = c(1, 2), row.names = c("a", "b"))
+  expect_dplyr_equal(input %>% mutate(y = c(3, 4)) %>% collect() %>% 
rownames(), df)
+})
+
+# similar to 
https://github.com/tidyverse/dplyr/blob/master/tests/testthat/test-mutate.r#L18-L29
+test_that("mutations are applied progressively", {
+  df <- tibble(x = 1)
+
+  expect_dplyr_equal(
+    input %>% mutate(y = x + 1, z = y + 1) %>% collect(),
+    df
+  )
+  expect_dplyr_equal(
+    input %>% mutate(x = x + 1, x = x + 1) %>% collect(),
+    df
+  )
+  expect_dplyr_equal(
+    input %>% mutate(y = x + 1, z = y + 1) %>% collect(),
+    df
+  )
+
+  df <- data.frame(x = 1, y = 2)
+  expect_equal(
+    df %>% Table$create() %>% mutate(x2 = x, x3 = x2 + 1) %>% collect(),
+    df %>% Table$create() %>% mutate(x2 = x + 0, x3 = x2 + 1) %>% collect()
+  )
+})
+
+# similar to 
https://github.com/tidyverse/dplyr/blob/master/tests/testthat/test-mutate.r#L37-L54
+test_that("can remove variables with NULL (dplyr #462)", {
+  df <- tibble(x = 1:3, y = 1:3)
+  gf <- group_by(df, x)
+
+  expect_dplyr_equal(input %>% mutate(y = NULL) %>% collect(), df)
+  expect_dplyr_equal(input %>% mutate(y = NULL) %>% collect(), gf)
+
+  # even if it doesn't exist
+  expect_dplyr_equal(input %>% mutate(z = NULL) %>% collect(), df)
+  # or was just created
+  expect_dplyr_equal(input %>% mutate(z = rep(1, nrow(input)), z = NULL) %>% 
collect(), df)
+
+  # regression test for https://github.com/tidyverse/dplyr/issues/4974
+  expect_dplyr_equal(
+    input %>% mutate(z = 1, x = NULL, y = NULL) %>% collect(),
+    data.frame(x = 1, y = 1)
+  )
+})
+
+# similar to 
https://github.com/tidyverse/dplyr/blob/master/tests/testthat/test-mutate.r#L71-L75
+test_that("assignments don't overwrite variables (dplyr #315)", {
+  expect_dplyr_equal(
+    input %>% mutate(z = {x <- 10; x}) %>% collect(),
+    tibble(x = 1, y = 2)
+  )
+})
+
+# similar to 
https://github.com/tidyverse/dplyr/blob/master/tests/testthat/test-mutate.r#L77-L81
+test_that("can mutate a data frame with zero columns and `NULL` column names", 
{
+  df <- vctrs::new_data_frame(n = 2L)
+  colnames(df) <- NULL
+  expect_dplyr_equal(
+    input %>% mutate(x = c(1,2)) %>% collect(),
+    df
+  )
+})
+
+# similar to 
https://github.com/tidyverse/dplyr/blob/master/tests/testthat/test-mutate.r#L102-L106
+test_that("mutate disambiguates NA and NaN (#1448)", {
+  expect_dplyr_equal(
+    input %>% mutate(y = x * 1) %>% select(y) %>% collect(),
+    tibble(x = c(1, NA, NaN))
+  )
+})
+
+# similar to 
https://github.com/tidyverse/dplyr/blob/master/tests/testthat/test-mutate.r#L117-L127
+test_that("mutate handles data frame columns", {
+  expect_dplyr_equal(
+    input %>% mutate(new_col = data.frame(x = 1:3)) %>% select(new_col) %>% 
collect(),
+    data.frame(x = 1:3)
+  )
+
+  # mutate() on grouped data not supported in Arrow; this will be pulling data 
back into R
+  expect_warning(expect_dplyr_equal(
+    input %>%
+      group_by(x) %>%
+      mutate(new_col = x) %>%
+      ungroup() %>%
+      select(new_col) %>%
+      collect(),
+    data.frame(x = 1:3)
+  ), "not supported in Arrow")
+
+  skip("rowwise() is not (yet) implemented in Arrow")
+  expect_dplyr_equal(
+    input %>%
+      rowwise(x) %>%
+      mutate(new_col = x) %>%
+      ungroup() %>%
+      select(new_col) %>%
+      collect(),
+    data.frame(x = 1:3)
+  )
+})
+
+# similar to 
https://github.com/tidyverse/dplyr/blob/master/tests/testthat/test-mutate.r#L129-L142
+test_that("unnamed data frames are automatically unspliced", {
+  # this works in arrow
+  expect_dplyr_equal(
+    input %>% mutate(tibble(b = 2)) %>% collect(),
+    tibble(a = 1)
+  )
+
+  # not this
+  expect_error(expect_dplyr_equal(
+    input %>% mutate(tibble(b = 2), tibble(b = 3)) %>% collect(),
+    tibble(a = 1)
+  ))
+
+  # nor this
+  expect_error(expect_dplyr_equal(
+    input %>% mutate(tibble(b = 2), c = b) %>% collect(),
+    tibble(a = 1)
+  ))
+})
+
+# similar to 
https://github.com/tidyverse/dplyr/blob/master/tests/testthat/test-mutate.r#L144-L148
+test_that("named data frames are packed", {
+  expect_warning(expect_dplyr_equal(
+    input %>% mutate(y = tibble(x = a)) %>% collect(),
+    tibble(a = 1)
+  ), "not supported in Arrow")
+})
+
+# similar to 
https://github.com/tidyverse/dplyr/blob/master/tests/testthat/test-mutate.r#L150-L158
+test_that("ts class columns in arrow", {

Review comment:
       The tests that this is based on ("ts class columns in arrow") are not 
applicable to arrow, so I think this can be removed




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to