Code Duplication    Length = 24-35 lines in 3 locations

src/StreamFilters/InvariantFilter.php 1 location

@@ 442-465 (lines=24) @@
439
440
        $conditionCounter = 0;
441
        $invariantIterator = $assertionLists->getIterator();
442
        for ($i = 0; $i < $invariantIterator->count(); $i++) {
443
            // Create the inner loop for the different assertions
444
            if ($invariantIterator->current()->count() !== 0) {
445
                $assertionIterator = $invariantIterator->current()->getIterator();
446
447
                // collect all assertion code for assertions of this instance
448
                for ($j = 0; $j < $assertionIterator->count(); $j++) {
449
                    // Code to catch failed assertions
450
                    $code .= $assertionIterator->current()->toCode();
451
                    $assertionIterator->next();
452
                    $conditionCounter++;
453
                }
454
455
                // generate the check for assertions results
456
                if ($conditionCounter > 0) {
457
                    $code .= 'if (!empty(' . ReservedKeywords::FAILURE_VARIABLE . ') || !empty(' . ReservedKeywords::UNWRAPPED_FAILURE_VARIABLE . ')) {
458
                        ' . Placeholders::ENFORCEMENT . 'invariant' . Placeholders::PLACEHOLDER_CLOSE . '
459
                    }';
460
                }
461
            }
462
463
            // increment the outer loop
464
            $invariantIterator->next();
465
        }
466
467
        $code .= '}
468
            \AppserverIo\Doppelgaenger\ContractContext::close();

src/StreamFilters/PostconditionFilter.php 1 location

@@ 159-188 (lines=30) @@
156
        // We need a counter to check how much conditions we got
157
        $conditionCounter = 0;
158
        $listIterator = $assertionLists->getIterator();
159
        for ($i = 0; $i < $listIterator->count(); $i++) {
160
            // Create the inner loop for the different assertions
161
            $assertionIterator = $listIterator->current()->getIterator();
162
163
            // Only act if we got actual entries
164
            if ($assertionIterator->count() === 0) {
165
                // increment the outer loop
166
                $listIterator->next();
167
                continue;
168
            }
169
170
            // collect all assertion code for assertions of this instance
171
            for ($j = 0; $j < $assertionIterator->count(); $j++) {
172
                // Code to catch failed assertions
173
                $code .=  $assertionIterator->current()->toCode();
174
                $assertionIterator->next();
175
                $conditionCounter++;
176
            }
177
178
            // generate the check for assertions results
179
            if ($conditionCounter > 0) {
180
                $code .= '    if (!empty(' . ReservedKeywords::FAILURE_VARIABLE . ') || !empty(' . ReservedKeywords::UNWRAPPED_FAILURE_VARIABLE . ')) {
181
                    ' . Placeholders::ENFORCEMENT . $functionName . 'postcondition' . Placeholders::PLACEHOLDER_CLOSE . '
182
                }
183
            ';
184
            }
185
186
            // increment the outer loop
187
            $listIterator->next();
188
        }
189
190
        // Closing bracket for contract depth check
191
        $code .= '}

src/StreamFilters/PreconditionFilter.php 1 location

@@ 123-157 (lines=35) @@
120
        // We need a counter to check how much conditions we got
121
        $conditionCounter = 0;
122
        $listIterator = $assertionLists->getIterator();
123
        for ($i = 0; $i < $listIterator->count(); $i++) {
124
            // Create the inner loop for the different assertions
125
            $assertionIterator = $listIterator->current()->getIterator();
126
127
            // Only act if we got actual entries
128
            if ($assertionIterator->count() === 0) {
129
                // increment the outer loop
130
                $listIterator->next();
131
                continue;
132
            }
133
134
            // create a wrap around assuring that inherited conditions get or-combined
135
            $code .= '
136
                if (' . ReservedKeywords::PASSED_ASSERTION_FLAG . ' === false) {
137
                    ';
138
139
            // iterate through the conditions for this certain instance
140
            for ($j = 0; $j < $assertionIterator->count(); $j++) {
141
                $conditionCounter++;
142
143
                // Code to catch failed assertions
144
                $code .= $assertionIterator->current()->toCode();
145
                $assertionIterator->next();
146
            }
147
148
            // close the or-combined wrap
149
            $code .= '    if (empty(' . ReservedKeywords::FAILURE_VARIABLE . ') && empty(' . ReservedKeywords::UNWRAPPED_FAILURE_VARIABLE . ')) {
150
                        ' . ReservedKeywords::PASSED_ASSERTION_FLAG . ' = true;
151
                    }
152
                }
153
                ';
154
155
            // increment the outer loop
156
            $listIterator->next();
157
        }
158
159
        // Preconditions need or-ed conditions so we make sure only one condition list gets checked
160
        $code .= 'if (' . ReservedKeywords::PASSED_ASSERTION_FLAG . ' === false){