Skip to content

Commit e808e6d

Browse files
committed
Fixed issue with option propagation
1 parent 41e9a77 commit e808e6d

File tree

5 files changed

+59
-3
lines changed

5 files changed

+59
-3
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## 2.1.1
11+
- Fixed issue with options not propagating properly.
12+
1013
## 2.1.0
1114

1215
### Added

src/StringEncoder/Encoder.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public function getTargetEncoding(): ?string
4949
*/
5050
public function setTargetEncoding(string $encoding): void
5151
{
52-
$this->targetEncoding = EncodingDTO::makeFromString($encoding);
52+
$this->targetEncoding = EncodingDTO::makeFromString($encoding, null, $this->options);
5353
}
5454

5555
public function getSourceEncoding(): ?string
@@ -66,7 +66,7 @@ public function getSourceEncoding(): ?string
6666
*/
6767
public function setSourceEncoding(string $encoding): void
6868
{
69-
$this->sourceEncoding = EncodingDTO::makeFromString($encoding);
69+
$this->sourceEncoding = EncodingDTO::makeFromString($encoding, null, $this->options);
7070
}
7171

7272
public function convert(): ConvertReadInterface

src/StringEncoder/Options.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class Options implements OptionsInterface
3030
*/
3131
public function setDefaultTargetEncoding(string $defaultTargetEncoding): OptionsInterface
3232
{
33-
$this->defaultTargetEncoding = EncodingDTO::makeFromString($defaultTargetEncoding);
33+
$this->defaultTargetEncoding = EncodingDTO::makeFromString($defaultTargetEncoding, null, $this);
3434

3535
return $this;
3636
}

tests/tests/EncoderOptionsTest.php

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace tests;
6+
7+
use PHPUnit\Framework\TestCase;
8+
use StringEncoder\Encoder;
9+
use StringEncoder\Options;
10+
11+
class EncoderOptionsTest extends TestCase
12+
{
13+
private $encoder;
14+
15+
public function setUp(): void
16+
{
17+
$this->encoder = new Encoder();
18+
}
19+
20+
public function testSetSource()
21+
{
22+
$this->encoder->setOptions(
23+
(new Options())
24+
->setCaseSensitiveEncoding(false)
25+
);
26+
$this->encoder->setSourceEncoding('iso-8859-1');
27+
$this->assertEquals('ISO-8859-1', $this->encoder->getSourceEncoding());
28+
}
29+
30+
public function testSetTarget()
31+
{
32+
$this->encoder->setOptions(
33+
(new Options())
34+
->setCaseSensitiveEncoding(false)
35+
);
36+
$this->encoder->setTargetEncoding('iso-8859-1');
37+
$this->assertEquals('ISO-8859-1', $this->encoder->getTargetEncoding());
38+
}
39+
}

tests/tests/OptionsTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,19 @@ public function testSetOptionsInEncoder()
3535
$this->assertNull($this->encoder->getTargetEncoding());
3636
}
3737

38+
public function testSetDefaultTargetEncoding()
39+
{
40+
$this->options->setDefaultTargetEncoding('ISO-8859-1');
41+
$this->assertEquals('ISO-8859-1', $this->options->getDefaultTargetEncoding()->getEncoding());
42+
}
43+
44+
public function testSetDefaultTargetOptionsEncoding()
45+
{
46+
$this->options->setCaseSensitiveEncoding(false);
47+
$this->options->setDefaultTargetEncoding('iso-8859-1');
48+
$this->assertEquals('ISO-8859-1', $this->options->getDefaultTargetEncoding()->getEncoding());
49+
}
50+
3851
public function testSetRemoveUTF8BOM()
3952
{
4053
$this->options->setRemoveUTF8BOM(true);
@@ -46,4 +59,5 @@ public function testSetCaseSensitiveEncoding()
4659
$this->options->setCaseSensitiveEncoding(false);
4760
$this->assertFalse($this->options->isCaseSensitiveEncoding());
4861
}
62+
4963
}

0 commit comments

Comments
 (0)