This commit is contained in:
Thomas Peterson 2025-07-25 14:16:19 +02:00
parent 8138652387
commit ff608a598e
5 changed files with 469 additions and 401 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,5 @@
<?php
/**
* Created by PhpStorm.
* User: thomas
@ -14,15 +15,15 @@ class EdgeCollectionContainer
protected array $json;
public function __construct()
{
}
public function __construct() {}
public function fromJson(array $json) {
public function fromJson(array $json)
{
$this->json = $json;
}
public function fromXML(\SimpleXMLElement $node) {
public function fromXML(\SimpleXMLElement $node)
{
$this->node = $node;
}
@ -30,7 +31,7 @@ class EdgeCollectionContainer
{
$container = new \PSC\Library\Calc\General\Type\EdgeCollectionContainer();
foreach($this->json as $row) {
foreach ($this->json as $row) {
$collectionParser = new EdgeCollection();
$collectionParser->fromJson($row);
$collection = $collectionParser->parseJson();
@ -45,8 +46,8 @@ class EdgeCollectionContainer
{
$container = new \PSC\Library\Calc\General\Type\EdgeCollectionContainer();
foreach($this->node->children() as $key => $row) {
if($key == 'opt') {
foreach ($this->node->children() as $key => $row) {
if ($key == 'data' || $key == 'opt') {
continue;
}
$collectionParser = new EdgeCollection();

View File

@ -19,7 +19,7 @@ class Text extends Base
parent::parseJson();
if ($this->json['default']) {
$this->element->setDefault((string) $this->json['default']);
$this->element->setValue((string) $this->json['default']);
}
if (isset($this->json['dependencys']) && count($this->json['dependencys']) > 0) {

View File

@ -1,16 +1,24 @@
<?php
namespace PSC\Library\Calc\Option\Type;
class Text extends Base
{
public $type = 'text';
public function generateJson(): \stdClass
{
$obj = parent::generateJson();
$obj->default = $this->getValue();
$obj->type = 4;
return $obj;
}
public function generateXML(): array
{
$tmp = ['data' => [
'_cdata' => $this->getValue(),
]];
return array_merge_recursive($tmp, parent::generateXML());
}
}

View File

@ -0,0 +1,45 @@
<?php
namespace PSC\Library\Calc\Tests\Json\Type;
use PHPUnit\Framework\TestCase;
use PSC\Library\Calc\Option\Parser\Text;
use Spatie\ArrayToXml\ArrayToXml;
class TextTest extends TestCase
{
private array $json;
private string $xml;
public function setUp(): void
{
$this->json = json_decode('{
"id": "2a2e93d0-d1e9-421e-a55e-c4c165964dc7",
"type": 4,
"dependencys": [],
"default": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
"name": ""
}', true);
$this->xml = '<option id="2a2e93d0-d1e9-421e-a55e-c4c165964dc7" type="Text"><data><![CDATA[Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.]]></data></option>';
}
public function testFromJson()
{
$parser = new Text();
$parser->fromJson($this->json);
$obj = $parser->parseJson();
$xml = ArrayToXml::convert($obj->generateXML(), 'option');
self::assertXmlStringEqualsXmlString($xml, $this->xml);
}
public function testFromXML()
{
$parser = new Text();
$parser->fromXML(simplexml_load_string($this->xml));
$obj = $parser->parseXML();
self::assertJsonStringEqualsJsonString(json_encode($obj->generateJson()), json_encode($this->json));
}
}