Skip to content

Instantly share code, notes, and snippets.

@wickkidd
Created January 6, 2020 17:30
Show Gist options
  • Select an option

  • Save wickkidd/05453f0b20619e3862211a5872dae611 to your computer and use it in GitHub Desktop.

Select an option

Save wickkidd/05453f0b20619e3862211a5872dae611 to your computer and use it in GitHub Desktop.

Revisions

  1. wickkidd created this gist Jan 6, 2020.
    24 changes: 24 additions & 0 deletions TimeCop.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,24 @@
    package my.awesome.namespace;

    import org.joda.time.DateTime;
    import org.joda.time.DateTimeUtils;

    public class TimeCop {
    public static void freezeDuring(Runnable block) {
    DateTimeUtils.setCurrentMillisFixed(DateTime.now().getMillis());

    block.run();

    DateTimeUtils.setCurrentMillisSystem();
    };
    }

    // usage example
    TimeUnit defaultUnit = TimeUnit.HOURS;
    int defaultInterval = 1;

    TimeCop.freezeDuring(() -> {
    myDate = new Date(System.currentTimeMillis() + defaultUnit.toMillis(defaultInterval));

    ClassUnderTest.someMethodThatTriggersADateCreationInAPrivateDelegateMethod();
    });