/**
  * @test
  */
 public function test_evaluate_field_with_formatting()
 {
     $obj = new Target\PrivateClass(new \DateTime('2015/12/13 14:15:36', new \DateTimeZone('Asia/Tokyo')), 'bb', 999, 12345, 'xyz');
     $evaluator = new Strategy\ObjectFieldEvaluator($obj, []);
     $formatter = new \JsonEncoder\Formatter\DateTimeFormatter();
     $this->assertEquals(['a' => '2015-12-13T14:15:36+0900', 'b' => 'bb'], $evaluator->evaluate(['a', 'b'], [\DateTime::class => $formatter]));
 }
 /**
  * {inheritdoc}
  */
 public function serialize($value, array $formatters)
 {
     if (!is_object($value)) {
         return [];
     }
     $evaluator = new ObjectFieldEvaluator($value);
     if ($this->rule->isFieldAllIncludes()) {
         $this->rule->includes($evaluator->listFields());
     }
     return $evaluator->evaluate($this->rule->listIncludeFields(), $formatters);
 }