Giter VIP home page Giter VIP logo

Comments (8)

moodymudskipper avatar moodymudskipper commented on July 21, 2024

Thanks!

More minimal reprex :

constructive::construct(as.Date(Inf))
#> as.Date(NA_character_)
#> Error in `constructive::construct()`:
#> ! {constructive} couldn't create code that reproduces perfectly the output
#>  `original`: Inf
#> `recreated`:  NA
#> ℹ use `check = FALSE` to ignore this error

Created on 2022-08-16 by the reprex package (v2.0.1)

This is due to the code using format(x) to use as.Date() on the character representation of dates.
as.Date(Inf) is formatted as NA by R so constructive uses as.Date(NA_character_).

I'm not sure if there's a pretty way to handle it since we cannot do : as.Date(c(Inf, "2021-07-31")) as it would be coerced to character. So I believe we need to fall back on this format if date vectors contain infinite values:

as.Date(c(Inf, 18839), origin = "1970-01-01")
#> [1] NA           "2021-07-31"

Created on 2022-08-16 by the reprex package (v2.0.1)

from constructive.

moodymudskipper avatar moodymudskipper commented on July 21, 2024

#17 should do it!

df <- structure(
  list(
    regular = structure(c(18839, 18900), class = "Date"),
    plus_inf = structure(c(Inf, 18900), class = "Date"),
    minus_inf = structure(c(18839, -Inf), class = "Date")
    ),
  class = "data.frame",
  row.names = c(NA, -2L))

df
#>      regular   plus_inf  minus_inf
#> 1 2021-07-31       <NA> 2021-07-31
#> 2 2021-09-30 2021-09-30       <NA>

constructive::construct(df)
#> data.frame(
#>   regular = as.Date(c("2021-07-31", "2021-09-30")),
#>   plus_inf = as.Date(c(Inf, 18900), origin = "1970-01-01"),
#>   minus_inf = as.Date(c(18839, -Inf), origin = "1970-01-01")
#> )

Created on 2022-08-16 by the reprex package (v2.0.1)

from constructive.

Cevior avatar Cevior commented on July 21, 2024

Cool! Thank you! Great pakcage btw, helps a lot writing tests!

from constructive.

moodymudskipper avatar moodymudskipper commented on July 21, 2024

Thanks, If I may ask, do you use it for snapshot test outputs, or to build test inputs ?

from constructive.

Cevior avatar Cevior commented on July 21, 2024

As test inputs for reproducable tests in order to keep the 80 margin column in RStudio. Compared to dput it saves a lot of manual formatting work. 👍

But actually a good idea for test outputs to have a more interactive test... 🤔 (and benefitting from prettycode) 👍

from constructive.

moodymudskipper avatar moodymudskipper commented on July 21, 2024

Thanks for the feedback, it helps a lot

from constructive.

Cevior avatar Cevior commented on July 21, 2024

You're welcome, great work! 👍

from constructive.

github-actions avatar github-actions commented on July 21, 2024

This old thread has been automatically locked. If you think you have found something related to this, please open a new issue and link to this old issue if necessary.

from constructive.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.