Stufe 4c (#764): Bezeichner auf Englisch - Typen, Methoden, Felder, Parameter, Locals, Testnamen
Mit Roslyn umbenannt (Verweise folgen, Zeichenketten bleiben unberuehrt). Nicht umbenannt, weil gespeichert oder ueber die API gebunden (Stufe 4e): Properties, Record-Parameter, Enum-Member sowie die Parameter der Endpunkt-Handler (Routen-/Query-Bindung ueber den Namen). Die JSON-Felder anonymer Objekte bleiben ausdruecklich benannt (JsonFilter: pfad). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
837a634a22
commit
77062facc9
@@ -17,7 +17,7 @@ public sealed class CronExpressionTests
|
||||
// ─── R1: correct next points in time ───
|
||||
|
||||
[Fact]
|
||||
public void Alle_30_Minuten()
|
||||
public void Every_30_minutes()
|
||||
{
|
||||
var cron = CronExpression.Parse("*/30 * * * *");
|
||||
cron.GetNextOccurrence(Local(2026, 7, 31, 10, 5)).ShouldBe(Local(2026, 7, 31, 10, 30));
|
||||
@@ -25,7 +25,7 @@ public sealed class CronExpressionTests
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Werktags_um_drei_Uhr_frueh()
|
||||
public void Weekdays_at_three_in_the_morning()
|
||||
{
|
||||
var cron = CronExpression.Parse("0 3 * * 1-5"); // Mo–Fr
|
||||
// 2026-08-01 is a Saturday → next run Monday, 2026-08-03 03:00
|
||||
@@ -33,7 +33,7 @@ public sealed class CronExpressionTests
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Listen_von_Minuten()
|
||||
public void Lists_of_minutes()
|
||||
{
|
||||
var cron = CronExpression.Parse("15,45 * * * *");
|
||||
cron.GetNextOccurrence(Local(2026, 7, 31, 10, 20)).ShouldBe(Local(2026, 7, 31, 10, 45));
|
||||
@@ -41,7 +41,7 @@ public sealed class CronExpressionTests
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Schaltjahr_29_Februar()
|
||||
public void Leap_year_29_February()
|
||||
{
|
||||
var cron = CronExpression.Parse("0 0 29 2 *"); // only on 29 Feb
|
||||
// 2028 is the next leap year
|
||||
@@ -49,7 +49,7 @@ public sealed class CronExpressionTests
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Bereich_mit_Schritt_alle_drei_Stunden_tagsueber()
|
||||
public void Range_with_step_every_three_hours_during_the_day()
|
||||
{
|
||||
// #597: "0 7-22/3 * * *" used to throw a FormatException, the task never ran.
|
||||
var cron = CronExpression.Parse("0 7-22/3 * * *"); // 7, 10, 13, 16, 19, 22
|
||||
@@ -59,7 +59,7 @@ public sealed class CronExpressionTests
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Zahl_mit_Schritt_laeuft_bis_zum_Feldende()
|
||||
public void Number_with_step_runs_to_the_end_of_the_field()
|
||||
{
|
||||
var cron = CronExpression.Parse("10/20 * * * *"); // 10, 30, 50
|
||||
cron.GetNextOccurrence(Local(2026, 9, 14, 12, 31)).ShouldBe(Local(2026, 9, 14, 12, 50));
|
||||
@@ -73,7 +73,7 @@ public sealed class CronExpressionTests
|
||||
[InlineData("0 3 * * 1-5")]
|
||||
[InlineData("15,45 9-17 * * *")]
|
||||
[InlineData("0 0 1 * *")]
|
||||
public void Der_naechste_Termin_liegt_echt_in_der_Zukunft_und_passt(string expr)
|
||||
public void The_next_occurrence_is_strictly_in_the_future_and_matches(string expr)
|
||||
{
|
||||
var cron = CronExpression.Parse(expr);
|
||||
var now = Local(2026, 7, 31, 10, 23);
|
||||
@@ -99,11 +99,11 @@ public sealed class CronExpressionTests
|
||||
[InlineData("0 7-25/3 * * *")] // range end outside 0-23
|
||||
[InlineData("0 7-/3 * * *")] // half a range
|
||||
[InlineData("* * * * ")] // an empty field after trim → 4 fields
|
||||
public void Ungueltige_Ausdruecke_werfen_eine_saubere_FormatException(string expr)
|
||||
public void Invalid_expressions_throw_a_clean_FormatException(string expr)
|
||||
=> Should.Throw<FormatException>(() => CronExpression.Parse(expr));
|
||||
|
||||
[Fact]
|
||||
public void Ein_gueltiger_Ausdruck_mit_Schritt_bleibt_endlich()
|
||||
public void A_valid_expression_with_step_stays_finite()
|
||||
{
|
||||
// Regression guard: */0 would formerly have produced an endless loop.
|
||||
Should.CompleteIn(() => CronExpression.Parse("*/15 * * * *"), TimeSpan.FromSeconds(2));
|
||||
|
||||
Reference in New Issue
Block a user