Skip to content

tests: add edge-case tests for str_flatten() and str_flatten_comma()#613

Closed
LeonidasZhak wants to merge 1 commit into
tidyverse:mainfrom
LeonidasZhak:tests/str-flatten-edge-cases
Closed

tests: add edge-case tests for str_flatten() and str_flatten_comma()#613
LeonidasZhak wants to merge 1 commit into
tidyverse:mainfrom
LeonidasZhak:tests/str-flatten-edge-cases

Conversation

@LeonidasZhak

Copy link
Copy Markdown

Summary

Adds edge-case tests for str_flatten() and str_flatten_comma() covering empty input, single-element input, all-NA input, and NA handling with the last parameter.

Motivation

str_flatten() and str_flatten_comma() are common data cleaning functions for collapsing character vectors into summary strings. The existing tests cover basic usage but miss several edge cases relevant to data cleaning pipelines:

  • Empty input with last parameter
  • Single-element input with last parameter
  • All-NA input with na.rm = TRUE
  • str_flatten_comma() with empty input
  • str_flatten_comma() with NA values, last, and na.rm

Tests Added (7 test blocks)

  1. str_flatten handles empty input with last — Empty character vector with last parameter
  2. str_flatten handles single element with last — Single element with last parameter
  3. str_flatten handles all-NA input with na.rm — All-NA with na.rm = TRUE
  4. str_flatten_comma handles empty input with last — Empty input with last parameter
  5. str_flatten_comma handles single element with last — Single element with last
  6. str_flatten_comma handles NA with last and na.rm — NA in various positions with last and na.rm

Validation

  • Rscript -e 'testthat::test_file("tests/testthat/test-flatten.R")' — 0 failures, 23 passes
  • No regressions in existing tests

- Test empty input with zhak       ttys020                         Sat Jun  6 05:30 - 05:30  (00:00)
zhak       ttys020                         Sat Jun  6 02:30 - 02:30  (00:00)
zhak       ttys020                         Fri Jun  5 23:28 - 23:28  (00:00)
zhak       ttys021                         Fri Jun  5 18:39 - 18:39  (00:00)
zhak       ttys020                         Fri Jun  5 17:27 - 17:27  (00:00)
zhak       ttys019                         Fri Jun  5 17:22   still logged in
zhak       ttys018                         Fri Jun  5 17:22   still logged in
zhak       ttys017                         Fri Jun  5 17:22   still logged in
zhak       ttys015                         Fri Jun  5 17:22   still logged in
zhak       ttys016                         Fri Jun  5 17:22   still logged in
zhak       ttys015                         Fri Jun  5 17:22 - 17:22  (00:00)
zhak       ttys014                         Fri Jun  5 17:22   still logged in
zhak       ttys013                         Fri Jun  5 17:22   still logged in
zhak       ttys012                         Fri Jun  5 17:22   still logged in
zhak       ttys011                         Fri Jun  5 17:22   still logged in
zhak       ttys010                         Fri Jun  5 17:22   still logged in
zhak       ttys009                         Fri Jun  5 17:22   still logged in
zhak       ttys011                         Fri Jun  5 17:02 - 17:02  (00:00)
zhak       ttys010                         Fri Jun  5 17:02 - 17:02  (00:00)
zhak       ttys009                         Fri Jun  5 17:02 - 17:02  (00:00)
zhak       ttys008                         Fri Jun  5 17:02   still logged in
zhak       ttys007                         Fri Jun  5 17:02   still logged in
zhak       ttys006                         Fri Jun  5 17:02   still logged in
zhak       ttys005                         Fri Jun  5 17:02   still logged in
zhak       ttys004                         Fri Jun  5 17:02   still logged in
zhak       ttys003                         Fri Jun  5 17:02   still logged in
zhak       ttys002                         Fri Jun  5 17:02   still logged in
zhak       ttys000                         Fri Jun  5 17:02   still logged in
zhak       ttys001                         Fri Jun  5 17:02   still logged in
zhak       ttys021                         Fri Jun  5 08:25 - 08:25  (00:00)
zhak       ttys020                         Fri Jun  5 08:21 - 08:21  (00:00)
zhak       ttys019                         Fri Jun  5 08:21 - 08:21  (00:00)
zhak       ttys018                         Fri Jun  5 08:21 - 08:21  (00:00)
zhak       ttys017                         Fri Jun  5 08:21 - 08:21  (00:00)
zhak       ttys013                         Thu Jun  4 23:07 - 23:07  (00:00)
zhak       ttys014                         Thu Jun  4 16:33 - 16:33  (00:00)
zhak       ttys013                         Thu Jun  4 16:33 - 16:33  (00:00)

wtmp begins Wed Jun  3 22:33:24 CST 2026 parameter
- Test single element with zhak       ttys020                         Sat Jun  6 05:30 - 05:30  (00:00)
zhak       ttys020                         Sat Jun  6 02:30 - 02:30  (00:00)
zhak       ttys020                         Fri Jun  5 23:28 - 23:28  (00:00)
zhak       ttys021                         Fri Jun  5 18:39 - 18:39  (00:00)
zhak       ttys020                         Fri Jun  5 17:27 - 17:27  (00:00)
zhak       ttys019                         Fri Jun  5 17:22   still logged in
zhak       ttys018                         Fri Jun  5 17:22   still logged in
zhak       ttys017                         Fri Jun  5 17:22   still logged in
zhak       ttys015                         Fri Jun  5 17:22   still logged in
zhak       ttys016                         Fri Jun  5 17:22   still logged in
zhak       ttys015                         Fri Jun  5 17:22 - 17:22  (00:00)
zhak       ttys014                         Fri Jun  5 17:22   still logged in
zhak       ttys013                         Fri Jun  5 17:22   still logged in
zhak       ttys012                         Fri Jun  5 17:22   still logged in
zhak       ttys011                         Fri Jun  5 17:22   still logged in
zhak       ttys010                         Fri Jun  5 17:22   still logged in
zhak       ttys009                         Fri Jun  5 17:22   still logged in
zhak       ttys011                         Fri Jun  5 17:02 - 17:02  (00:00)
zhak       ttys010                         Fri Jun  5 17:02 - 17:02  (00:00)
zhak       ttys009                         Fri Jun  5 17:02 - 17:02  (00:00)
zhak       ttys008                         Fri Jun  5 17:02   still logged in
zhak       ttys007                         Fri Jun  5 17:02   still logged in
zhak       ttys006                         Fri Jun  5 17:02   still logged in
zhak       ttys005                         Fri Jun  5 17:02   still logged in
zhak       ttys004                         Fri Jun  5 17:02   still logged in
zhak       ttys003                         Fri Jun  5 17:02   still logged in
zhak       ttys002                         Fri Jun  5 17:02   still logged in
zhak       ttys000                         Fri Jun  5 17:02   still logged in
zhak       ttys001                         Fri Jun  5 17:02   still logged in
zhak       ttys021                         Fri Jun  5 08:25 - 08:25  (00:00)
zhak       ttys020                         Fri Jun  5 08:21 - 08:21  (00:00)
zhak       ttys019                         Fri Jun  5 08:21 - 08:21  (00:00)
zhak       ttys018                         Fri Jun  5 08:21 - 08:21  (00:00)
zhak       ttys017                         Fri Jun  5 08:21 - 08:21  (00:00)
zhak       ttys013                         Thu Jun  4 23:07 - 23:07  (00:00)
zhak       ttys014                         Thu Jun  4 16:33 - 16:33  (00:00)
zhak       ttys013                         Thu Jun  4 16:33 - 16:33  (00:00)

wtmp begins Wed Jun  3 22:33:24 CST 2026 parameter
- Test all-NA input with na.rm = TRUE
- Test str_flatten_comma() with empty input and zhak       ttys020                         Sat Jun  6 05:30 - 05:30  (00:00)
zhak       ttys020                         Sat Jun  6 02:30 - 02:30  (00:00)
zhak       ttys020                         Fri Jun  5 23:28 - 23:28  (00:00)
zhak       ttys021                         Fri Jun  5 18:39 - 18:39  (00:00)
zhak       ttys020                         Fri Jun  5 17:27 - 17:27  (00:00)
zhak       ttys019                         Fri Jun  5 17:22   still logged in
zhak       ttys018                         Fri Jun  5 17:22   still logged in
zhak       ttys017                         Fri Jun  5 17:22   still logged in
zhak       ttys015                         Fri Jun  5 17:22   still logged in
zhak       ttys016                         Fri Jun  5 17:22   still logged in
zhak       ttys015                         Fri Jun  5 17:22 - 17:22  (00:00)
zhak       ttys014                         Fri Jun  5 17:22   still logged in
zhak       ttys013                         Fri Jun  5 17:22   still logged in
zhak       ttys012                         Fri Jun  5 17:22   still logged in
zhak       ttys011                         Fri Jun  5 17:22   still logged in
zhak       ttys010                         Fri Jun  5 17:22   still logged in
zhak       ttys009                         Fri Jun  5 17:22   still logged in
zhak       ttys011                         Fri Jun  5 17:02 - 17:02  (00:00)
zhak       ttys010                         Fri Jun  5 17:02 - 17:02  (00:00)
zhak       ttys009                         Fri Jun  5 17:02 - 17:02  (00:00)
zhak       ttys008                         Fri Jun  5 17:02   still logged in
zhak       ttys007                         Fri Jun  5 17:02   still logged in
zhak       ttys006                         Fri Jun  5 17:02   still logged in
zhak       ttys005                         Fri Jun  5 17:02   still logged in
zhak       ttys004                         Fri Jun  5 17:02   still logged in
zhak       ttys003                         Fri Jun  5 17:02   still logged in
zhak       ttys002                         Fri Jun  5 17:02   still logged in
zhak       ttys000                         Fri Jun  5 17:02   still logged in
zhak       ttys001                         Fri Jun  5 17:02   still logged in
zhak       ttys021                         Fri Jun  5 08:25 - 08:25  (00:00)
zhak       ttys020                         Fri Jun  5 08:21 - 08:21  (00:00)
zhak       ttys019                         Fri Jun  5 08:21 - 08:21  (00:00)
zhak       ttys018                         Fri Jun  5 08:21 - 08:21  (00:00)
zhak       ttys017                         Fri Jun  5 08:21 - 08:21  (00:00)
zhak       ttys013                         Thu Jun  4 23:07 - 23:07  (00:00)
zhak       ttys014                         Thu Jun  4 16:33 - 16:33  (00:00)
zhak       ttys013                         Thu Jun  4 16:33 - 16:33  (00:00)

wtmp begins Wed Jun  3 22:33:24 CST 2026
- Test str_flatten_comma() with single element and zhak       ttys020                         Sat Jun  6 05:30 - 05:30  (00:00)
zhak       ttys020                         Sat Jun  6 02:30 - 02:30  (00:00)
zhak       ttys020                         Fri Jun  5 23:28 - 23:28  (00:00)
zhak       ttys021                         Fri Jun  5 18:39 - 18:39  (00:00)
zhak       ttys020                         Fri Jun  5 17:27 - 17:27  (00:00)
zhak       ttys019                         Fri Jun  5 17:22   still logged in
zhak       ttys018                         Fri Jun  5 17:22   still logged in
zhak       ttys017                         Fri Jun  5 17:22   still logged in
zhak       ttys015                         Fri Jun  5 17:22   still logged in
zhak       ttys016                         Fri Jun  5 17:22   still logged in
zhak       ttys015                         Fri Jun  5 17:22 - 17:22  (00:00)
zhak       ttys014                         Fri Jun  5 17:22   still logged in
zhak       ttys013                         Fri Jun  5 17:22   still logged in
zhak       ttys012                         Fri Jun  5 17:22   still logged in
zhak       ttys011                         Fri Jun  5 17:22   still logged in
zhak       ttys010                         Fri Jun  5 17:22   still logged in
zhak       ttys009                         Fri Jun  5 17:22   still logged in
zhak       ttys011                         Fri Jun  5 17:02 - 17:02  (00:00)
zhak       ttys010                         Fri Jun  5 17:02 - 17:02  (00:00)
zhak       ttys009                         Fri Jun  5 17:02 - 17:02  (00:00)
zhak       ttys008                         Fri Jun  5 17:02   still logged in
zhak       ttys007                         Fri Jun  5 17:02   still logged in
zhak       ttys006                         Fri Jun  5 17:02   still logged in
zhak       ttys005                         Fri Jun  5 17:02   still logged in
zhak       ttys004                         Fri Jun  5 17:02   still logged in
zhak       ttys003                         Fri Jun  5 17:02   still logged in
zhak       ttys002                         Fri Jun  5 17:02   still logged in
zhak       ttys000                         Fri Jun  5 17:02   still logged in
zhak       ttys001                         Fri Jun  5 17:02   still logged in
zhak       ttys021                         Fri Jun  5 08:25 - 08:25  (00:00)
zhak       ttys020                         Fri Jun  5 08:21 - 08:21  (00:00)
zhak       ttys019                         Fri Jun  5 08:21 - 08:21  (00:00)
zhak       ttys018                         Fri Jun  5 08:21 - 08:21  (00:00)
zhak       ttys017                         Fri Jun  5 08:21 - 08:21  (00:00)
zhak       ttys013                         Thu Jun  4 23:07 - 23:07  (00:00)
zhak       ttys014                         Thu Jun  4 16:33 - 16:33  (00:00)
zhak       ttys013                         Thu Jun  4 16:33 - 16:33  (00:00)

wtmp begins Wed Jun  3 22:33:24 CST 2026
- Test str_flatten_comma() with NA values, zhak       ttys020                         Sat Jun  6 05:30 - 05:30  (00:00)
zhak       ttys020                         Sat Jun  6 02:30 - 02:30  (00:00)
zhak       ttys020                         Fri Jun  5 23:28 - 23:28  (00:00)
zhak       ttys021                         Fri Jun  5 18:39 - 18:39  (00:00)
zhak       ttys020                         Fri Jun  5 17:27 - 17:27  (00:00)
zhak       ttys019                         Fri Jun  5 17:22   still logged in
zhak       ttys018                         Fri Jun  5 17:22   still logged in
zhak       ttys017                         Fri Jun  5 17:22   still logged in
zhak       ttys015                         Fri Jun  5 17:22   still logged in
zhak       ttys016                         Fri Jun  5 17:22   still logged in
zhak       ttys015                         Fri Jun  5 17:22 - 17:22  (00:00)
zhak       ttys014                         Fri Jun  5 17:22   still logged in
zhak       ttys013                         Fri Jun  5 17:22   still logged in
zhak       ttys012                         Fri Jun  5 17:22   still logged in
zhak       ttys011                         Fri Jun  5 17:22   still logged in
zhak       ttys010                         Fri Jun  5 17:22   still logged in
zhak       ttys009                         Fri Jun  5 17:22   still logged in
zhak       ttys011                         Fri Jun  5 17:02 - 17:02  (00:00)
zhak       ttys010                         Fri Jun  5 17:02 - 17:02  (00:00)
zhak       ttys009                         Fri Jun  5 17:02 - 17:02  (00:00)
zhak       ttys008                         Fri Jun  5 17:02   still logged in
zhak       ttys007                         Fri Jun  5 17:02   still logged in
zhak       ttys006                         Fri Jun  5 17:02   still logged in
zhak       ttys005                         Fri Jun  5 17:02   still logged in
zhak       ttys004                         Fri Jun  5 17:02   still logged in
zhak       ttys003                         Fri Jun  5 17:02   still logged in
zhak       ttys002                         Fri Jun  5 17:02   still logged in
zhak       ttys000                         Fri Jun  5 17:02   still logged in
zhak       ttys001                         Fri Jun  5 17:02   still logged in
zhak       ttys021                         Fri Jun  5 08:25 - 08:25  (00:00)
zhak       ttys020                         Fri Jun  5 08:21 - 08:21  (00:00)
zhak       ttys019                         Fri Jun  5 08:21 - 08:21  (00:00)
zhak       ttys018                         Fri Jun  5 08:21 - 08:21  (00:00)
zhak       ttys017                         Fri Jun  5 08:21 - 08:21  (00:00)
zhak       ttys013                         Thu Jun  4 23:07 - 23:07  (00:00)
zhak       ttys014                         Thu Jun  4 16:33 - 16:33  (00:00)
zhak       ttys013                         Thu Jun  4 16:33 - 16:33  (00:00)

wtmp begins Wed Jun  3 22:33:24 CST 2026, and na.rm
@LeonidasZhak

Copy link
Copy Markdown
Author

Withdrawing this small automated PR while I consolidate an oversized batch of contributions and reduce maintainer review burden. Sorry for the noise, and thank you for maintaining the project.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant