Example #1
0
 public function testFieldConverter()
 {
     $data = array(array("date" => "2016-07-08T10:12:20+0400", "amount" => "42", "important" => "true"), array("date" => "2016-07-08T10:20:23+0000", "amount" => "123.456", "important" => "false"), array("date" => "2016-07-08T10:22:25+0000", "amount" => "123", "important" => "asdf"));
     $conv = new PerrysLambda\ObjectArrayConverter();
     $conv->setArraySource($data);
     $conv->setFieldConverter('date', \PerrysLambda\FieldSerializer\DateTime::fromIsoFormat(new \DateTimeZone("Europe/Berlin")));
     $conv->setFieldConverters(array('amount' => new \PerrysLambda\FieldSerializer\Number(), 'important' => new \PerrysLambda\FieldSerializer\Boolean()));
     $list = new PerrysLambda\ArrayList($conv);
     $this->assertSame(true, $list->first()->date instanceof \DateTime);
     $this->assertSame('2016-07-08T08:12:20+0200', $list[0]->date->format(\DateTime::ISO8601));
     $this->assertSame(42, $list->first()->amount);
     $this->assertSame(123.456, $list->getAt(1)->amount);
     $this->assertSame(true, $list->first()->important);
     $this->assertSame(false, $list->getAt(1)->important);
     $this->assertSame(false, $list->getAt(2)->important);
     $serialized = $list->serialize();
     $this->assertSame('2016-07-08T08:12:20+0200', $serialized[0]['date']);
     $this->assertSame($data[0]['amount'], $serialized[0]['amount']);
     $this->assertSame($data[0]['important'], $serialized[0]['important']);
     $this->assertSame("false", $serialized[2]['important']);
 }