/** @test */ public function should_allow_numeric_indices_in_groups() { $printer = $this->givenPrinter(); $segmentY = new Segment('YYY'); $segmentY->ajdi = '000'; $segment = new Segment('XXX'); $segment->ajdi = 111; $segment->fild = 222; $segment->araj = [0 => 333, 1 => 444]; $grp = new SegmentGroup(); $grp->addSegment($segmentY); $grp->addSegment($segment); $this->assertEquals("YYY+000'XXX+111+222+333:444'", $printer->prepareString($grp)); }
public function acceptSegment(Segment $segment) { // current segment mapping is accepting more segments if ($this->currentSegment) { if ($this->currentSegment->acceptSegment($segment)) { return true; } else { $this->currentGroup[] = $this->currentSegment; } } // continue open group for ($i = $this->lastProcessed + 1; $i < count($this->segmentMappings); $i++) { $this->currentSegment = clone $this->segmentMappings[$i]; if ($this->currentSegment->acceptSegment($segment)) { $this->lastProcessed = $i; return true; } $this->currentGroup[] = $this->currentSegment; } // close current segment, try opening next copy $currentGroupSegments = $this->getCurrentGroupSegments(); if (!empty($currentGroupSegments)) { $this->checkCurrentGroup(); $group = new SegmentGroup($this->getCode()); $group->setSegments($currentGroupSegments); $this->segments[] = $group; } $this->currentGroup = array(); $this->currentSegment = null; $this->lastProcessed = -1; for ($i = 0; $i < count($this->segmentMappings); $i++) { $this->currentSegment = clone $this->segmentMappings[$i]; if ($this->currentSegment->acceptSegment($segment)) { $this->lastProcessed = $i; return true; } $this->currentGroup[] = $this->currentSegment; } return false; }