Time expressions

A time expression is an expression that happens (or not) in a recurrent way

For example:

Non-recurring

Thursday, February 22, 2018.

Recurring

Every X days from one date to another date

Every 3 days from Thursday, February 22, 2018 to March 15, 2018.

Day Y every X months from a month to another month

On the 8th of each month from January 2018 to August 2019.

The Y every X months from a month to another month

The 3rd Friday every 2 months from January 2018 to August 2019.

The Y every X years from a year to another year

On August 8 every year from 2018 to 2024.

What do I have to do ?

Write the corresponding implementations in TimeExpression to pass the test cases of TimeExpressionTest.

Why do I have to do it ?

We want to see how you design the model of the domain and how you apply TDD as a software development technique

Important !

In the test cases you can create new types that replace primitives like int.