Skip to content

Commit

Permalink
Issue 156 | Resolve "every day" conflict of DOM segment with DOW segm…
Browse files Browse the repository at this point in the history
…ent (#176)

* Issue-156  Resolve every day conflict when DOM is defined

* issue-156 Modify Ro tests to resolve everyday conflict
  • Loading branch information
ZaneGeiser authored Jan 2, 2025
1 parent eef5a3e commit 13806b1
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 19 deletions.
7 changes: 7 additions & 0 deletions lib/ExpressionDescriptor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -486,6 +486,13 @@ protected string GetDayOfMonthDescription()
description = String.Format(GetString("CommaDaysBeforeTheLastDayOfTheMonth"), offSetDays);
break;
}
else if (expression == "*" && m_expressionParts[5] != "*")
{
// DOW is specified, but DOM is *, so do not generate DOM description.
// Otherwise, we could get a contradiction like "every day, on Tuesday"
description = string.Empty;
break;
}
else
{
description = GetSegmentDescription(expression,
Expand Down
12 changes: 9 additions & 3 deletions test/TestFormats.en.cs
Original file line number Diff line number Diff line change
Expand Up @@ -544,9 +544,15 @@ public void Sunday7()
}

[Fact]
public void EveryYear(){
Assert.Equal("Every 10 minutes, Monday through Friday", GetDescription("0/10 * ? * MON-FRI *"));

public void Tuesday9()
{
Assert.Equal("At 09:00 AM, only on Tuesday", GetDescription("0 9 * * 2"));
}

[Fact]
public void EveryYear()
{
Assert.Equal("Every 10 minutes, Monday through Friday", GetDescription("0/10 * ? * MON-FRI *"));
}
}
}
22 changes: 11 additions & 11 deletions test/TestFormats.ro.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public void TestEveryHour()
public void TestTimeOfDayCertainDaysOfWeek()
{
Harness(cron: "0 23 ? * MON-FRI", expected: "La 23:00, de luni până vineri"
, expectedVerbose: "La 23:00, în fiecare zi, de luni până vineri");
, expectedVerbose: "La 23:00, de luni până vineri");
}

[Fact]
Expand Down Expand Up @@ -87,7 +87,7 @@ public void TestWeekdaysAtTime()
{
Harness(cron: "30 11 * * 1-5",
expected: "La 11:30, de luni până vineri",
expectedVerbose: "La 11:30, în fiecare zi, de luni până vineri");
expectedVerbose: "La 11:30, de luni până vineri");
}

[Fact]
Expand Down Expand Up @@ -134,7 +134,7 @@ public void TestThreeTimesDaily()
[Fact]
public void TestOnceAWeek()
{
Harness(cron: "46 9 * * 1", expected: "La 09:46, doar luni", expectedVerbose: "La 09:46, în fiecare zi, doar luni");
Harness(cron: "46 9 * * 1", expected: "La 09:46, doar luni", expectedVerbose: "La 09:46, doar luni");
}

[Fact]
Expand Down Expand Up @@ -177,31 +177,31 @@ public void TestMonthNameRange3()
[Fact]
public void TestDayOfWeekName()
{
Harness(cron: "23 12 * * SUN", expected: "La 12:23, doar duminică", expectedVerbose: "La 12:23, în fiecare zi, doar duminică");
Harness(cron: "23 12 * * SUN", expected: "La 12:23, doar duminică", expectedVerbose: "La 12:23, doar duminică");
}

[Fact]
public void TestDayOfWeekRange()
{
Harness(cron: "*/5 15 * * MON-FRI",
expected: "La fiecare 5 minute, între 15:00 și 15:59, de luni până vineri",
expectedVerbose: "La fiecare 5 minute, între 15:00 și 15:59, în fiecare zi, de luni până vineri");
expectedVerbose: "La fiecare 5 minute, între 15:00 și 15:59, de luni până vineri");
}

[Fact]
public void TestDayOfWeekOnceInMonth()
{
Harness(cron: "* * * * MON#3",
expected: "În fiecare minut, în a treia luni a lunii",
expectedVerbose: "În fiecare minut, în fiecare oră, în fiecare zi, în a treia luni a lunii");
expectedVerbose: "În fiecare minut, în fiecare oră, în a treia luni a lunii");
}

[Fact]
public void TestLastDayOfTheWeekOfTheMonth()
{
Harness(cron: "* * * * 4L",
expected: "În fiecare minut, în ultima joi a lunii",
expectedVerbose: "În fiecare minut, în fiecare oră, în fiecare zi, în ultima joi a lunii");
expectedVerbose: "În fiecare minut, în fiecare oră, în ultima joi a lunii");
}

[Fact]
Expand Down Expand Up @@ -303,7 +303,7 @@ public void TestMinutesPastTheHourRange()
Harness(
cron: "0 30 10-13 ? * WED,FRI",
expected: "La și 30 de minute, între 10:00 și 13:59, doar miercuri și vineri",
expectedVerbose: "La și 30 de minute, între 10:00 și 13:59, în fiecare zi, doar miercuri și vineri");
expectedVerbose: "La și 30 de minute, între 10:00 și 13:59, doar miercuri și vineri");
}

[Fact]
Expand Down Expand Up @@ -392,7 +392,7 @@ public void TestDayOfWeekModifier()
{
Harness(cron: "23 12 * * SUN#2",
expected: "La 12:23, în a doua duminică a lunii",
expectedVerbose: "La 12:23, în fiecare zi, în a doua duminică a lunii");
expectedVerbose: "La 12:23, în a doua duminică a lunii");
}

[Fact]
Expand Down Expand Up @@ -430,7 +430,7 @@ public void TestsEvery3DayOfTheWeek()
{
Harness(cron: "0 15 10 ? * */3",
expected: "La 10:15, la fiecare a 3-a zi a săptămânii",
expectedVerbose: "La 10:15, în fiecare zi, la fiecare a 3-a zi a săptămânii");
expectedVerbose: "La 10:15, la fiecare a 3-a zi a săptămânii");
}

[Fact]
Expand Down Expand Up @@ -478,7 +478,7 @@ public void TestMultiPartDayOfTheWeek()
// GitHub Issue #44: https://github.com/bradymholt/cron-expression-descriptor/issues/44
Harness(cron: "0 00 10 ? * MON-THU,SUN *",
expected: "La 10:00, doar de luni până joi și duminică",
expectedVerbose: "La 10:00, în fiecare zi, doar de luni până joi și duminică");
expectedVerbose: "La 10:00, doar de luni până joi și duminică");
}

[Fact]
Expand Down
20 changes: 15 additions & 5 deletions test/TestVerbosity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,30 @@

namespace CronExpressionDescriptor.Test
{
public class TestVerbosity
public class TestVerbosity : Support.BaseTestFormats
{

protected override string GetLocale()
{
return "en-US";
}

[Fact]
public void TestSimpleExpression()
{
ExpressionDescriptor ceh = new ExpressionDescriptor("30 4 1 * *", new Options() { Verbose = true, Locale = "en-US" });
Assert.Equal("At 04:30 AM, on day 1 of the month", ceh.GetDescription(DescriptionTypeEnum.FULL));
Assert.Equal("At 04:30 AM, on day 1 of the month", GetDescription("30 4 1 * *", true));
}

[Fact]
public void TestEveryMinuteSimpleExpression()
{
ExpressionDescriptor ceh = new ExpressionDescriptor("* * * * *", new Options() { Verbose = true, Locale = "en-US" });
Assert.Equal("Every minute, every hour, every day", ceh.GetDescription(DescriptionTypeEnum.FULL));
Assert.Equal("Every minute, every hour, every day", GetDescription("* * * * *", true));
}

[Fact]
public void TestSingleDayOfTheWeek()
{
Assert.Equal("At 09:00 AM, only on Tuesday", GetDescription("0 9 * * 2", true));
}
}
}

0 comments on commit 13806b1

Please sign in to comment.