assertSame(Carbon::SATURDAY, ShiftDayEnum::Saturday->carbonDay()); $this->assertSame(Carbon::SUNDAY, ShiftDayEnum::Sunday->carbonDay()); $this->assertSame(Carbon::MONDAY, ShiftDayEnum::Monday->carbonDay()); $this->assertSame(Carbon::TUESDAY, ShiftDayEnum::Tuesday->carbonDay()); $this->assertSame(Carbon::WEDNESDAY, ShiftDayEnum::Wednesday->carbonDay()); $this->assertSame(Carbon::THURSDAY, ShiftDayEnum::Thursday->carbonDay()); $this->assertSame(Carbon::FRIDAY, ShiftDayEnum::Friday->carbonDay()); } public function test_from_date_resolves_weekday_of_given_date(): void { $this->assertSame(ShiftDayEnum::Saturday, ShiftDayEnum::fromDate(Carbon::parse('2026-09-26'))); $this->assertSame(ShiftDayEnum::Sunday, ShiftDayEnum::fromDate(Carbon::parse('2026-09-20'))); $this->assertSame(ShiftDayEnum::Monday, ShiftDayEnum::fromDate(Carbon::parse('2026-09-21'))); $this->assertSame(ShiftDayEnum::Friday, ShiftDayEnum::fromDate(Carbon::parse('2026-09-25'))); } public function test_from_date_and_carbon_day_round_trip_for_every_case(): void { foreach (ShiftDayEnum::cases() as $day) { $date = Carbon::parse('2026-09-21')->next($day->carbonDay()); $this->assertSame($day, ShiftDayEnum::fromDate($date)); } } public function test_values_follow_persian_week_order_starting_saturday(): void { $this->assertSame(['شنبه', 'یکشنبه', 'دوشنبه', 'سه‌شنبه', 'چهارشنبه', 'پنج‌شنبه', 'جمعه'], ShiftDayEnum::values()); } }