Skip to content

Commit e818e35

Browse files
committed
fix #115: VisualFoxproTest fix for Ignore colunm
1 parent 3db1675 commit e818e35

File tree

4 files changed

+44
-1
lines changed

4 files changed

+44
-1
lines changed

src/DataConverter/Field/VisualFoxpro/IgnoreConverter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@ public function fromBinaryString(string $value): string
1919

2020
public function toBinaryString($value): string
2121
{
22-
return $value ?? chr(0x20).chr(0x0a);
22+
return str_pad((string) $value, $this->column->length, chr(0x20));
2323
}
2424
}
4.5 KB
Binary file not shown.
1.68 KB
Binary file not shown.

tests/TableEditor/VisualFoxproTest.php

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace XBase\Tests\TableEditor;
44

55
use PHPUnit\Framework\TestCase;
6+
use XBase\Column\ColumnInterface;
67
use XBase\Enum\TableType;
78
use XBase\Memo\MemoObject;
89
use XBase\Record\VisualFoxproRecord;
@@ -314,4 +315,46 @@ public function testIssue91(): void
314315
}
315316
self::assertEquals($data, $actual);
316317
}
318+
319+
public function testIssue115(): void
320+
{
321+
$filename = __DIR__.'/../Resources/foxpro/issue115.dbf';
322+
$table = new TableEditor($filename);
323+
324+
$record = $table->appendRecord();
325+
$record->cod = 'a';
326+
$record->denumire = 'b';
327+
$record->cont_van = 'c';
328+
$record->tel = 'd';
329+
$record->bi_serie = 'e';
330+
$record->bi_numar = 'f';
331+
$record->bi_pol = 'g';
332+
$record->masina = 'h';
333+
$record->blocat = 1;
334+
335+
$table
336+
->writeRecord()
337+
->save()
338+
->close();
339+
unset($record, $table);
340+
341+
$table = new TableReader($filename);
342+
self::assertSame(
343+
$table->getRecordByteLength(),
344+
array_reduce($table->getColumns(), static function (int $carry, ColumnInterface $c) {
345+
return $carry + $c->getLength();
346+
}, 1)
347+
);
348+
349+
$record = $table->pickRecord($table->getRecordCount() - 1);
350+
self::assertSame($record->cod, 'a');
351+
self::assertSame($record->denumire, 'b');
352+
self::assertSame($record->cont_van, 'c');
353+
self::assertSame($record->tel, 'd');
354+
self::assertSame($record->bi_serie, 'e');
355+
self::assertSame($record->bi_numar, 'f');
356+
self::assertSame($record->bi_pol, 'g');
357+
self::assertSame($record->masina, 'h');
358+
self::assertSame($record->blocat, 1);
359+
}
317360
}

0 commit comments

Comments
 (0)