public function test_factory_parse_formatter_nullFormatter()
 {
     TestHelper::assertNullException($this, function () {
         LocalDate::parseWith("ANY", null);
     });
 }
 /**
  * @dataProvider data_parseLenientWeek
  */
 public function test_parse_parseLenientWeek_LENIENT($str, LocalDate $expected, $smart)
 {
     $f = (new DateTimeFormatterBuilder())->appendValue(IsoFields::WEEK_BASED_YEAR())->appendLiteral(':')->appendValue(IsoFields::WEEK_OF_WEEK_BASED_YEAR())->appendLiteral(':')->appendValue(CF::DAY_OF_WEEK())->toFormatter()->withResolverStyle(ResolverStyle::LENIENT());
     $parsed = LocalDate::parseWith($str, $f);
     $this->assertEquals($parsed, $expected);
 }
 /**
  * @dataProvider provider_patternLocalWeekBasedYearDate
  */
 public function test_parse_WeekBasedYear($pattern, $text, $pos, $expectedPos, LocalDate $expectedValue)
 {
     $ppos = new ParsePosition($pos);
     $b = (new DateTimeFormatterBuilder())->appendPattern($pattern);
     $dtf = $b->toFormatter2($this->locale);
     $parsed = $dtf->parseUnresolved($text, $ppos);
     if ($ppos->getErrorIndex() != -1) {
         $this->assertEquals($ppos->getErrorIndex(), $expectedPos);
     } else {
         $weekDef = WeekFields::ofLocale($this->locale);
         $this->assertEquals($ppos->getIndex(), $expectedPos, "Incorrect ending parse position");
         $this->assertEquals($parsed->isSupported($weekDef->dayOfWeek()), strpos($pattern, 'e') >= 0);
         $this->assertEquals($parsed->isSupported($weekDef->weekOfWeekBasedYear()), strpos($pattern, 'w') >= 0);
         $this->assertEquals($parsed->isSupported($weekDef->weekBasedYear()), strpos($pattern, 'Y') >= 0);
         // ensure combination resolves into a date
         $result = LocalDate::parseWith($text, $dtf);
         $this->assertEquals($result, $expectedValue, "LocalDate incorrect for " . $pattern . ", {$weekDef}: " . $weekDef);
     }
 }
 /**
  * @dataProvider data_weekFields
  * @group long
  */
 public function test_parse_resolve_localizedWoWBYDow_lenient(DayOfWeek $firstDayOfWeek, $minDays)
 {
     $date = LocalDate::of(2012, 12, 31);
     $week = WeekFields::of($firstDayOfWeek, $minDays);
     $dowField = $week->dayOfWeek();
     $wowbyField = $week->weekOfWeekBasedYear();
     $yowbyField = $week->weekBasedYear();
     for ($i = 1; $i <= 60; $i++) {
         $f = (new DateTimeFormatterBuilder())->appendValue($yowbyField)->appendLiteral(':')->appendValue($wowbyField)->appendLiteral(':')->appendValue($dowField)->toFormatter()->withResolverStyle(ResolverStyle::LENIENT());
         $wowby = $date->get($wowbyField);
         $dow = $date->get($dowField);
         for ($j = $wowby - 60; $j < $wowby + 60; $j++) {
             $str = $date->get($yowbyField) . ":" . $j . ":" . $dow;
             $parsed = LocalDate::parseWith($str, $f);
             $this->assertEquals($parsed, $date->plusWeeks($j - $wowby), " ::" . $str . ": :" . $i . "::" . $j);
         }
         $date = $date->plusDays(1);
     }
 }
 /**
  * @dataProvider data_samples
  */
 public function test_samples_parse_LENIENT(TemporalField $field, LocalDate $date, $value)
 {
     $f = (new DateTimeFormatterBuilder())->appendValue($field)->toFormatter()->withResolverStyle(ResolverStyle::LENIENT());
     $parsed = LocalDate::parseWith(strval($value), $f);
     $this->assertEquals($parsed, $date);
 }