From a14b04c9dc66b693b37bf1dcd62bd39810c7bd8a Mon Sep 17 00:00:00 2001 From: Clifford Vickrey Date: Wed, 11 Oct 2023 10:22:09 -0400 Subject: [PATCH] cont'd internal refactor --- README.md | 6 +++--- src/CrosstabBuilder.php | 2 +- src/Helper/CrosstabTreeBuilder.php | 10 +++++----- src/Helper/CrosstabTreeBuilderInterface.php | 2 +- .../CrosstabNumberFormatterFlyweight.php | 2 +- .../CrosstabNumberFormatterType.php | 17 +++++++++-------- src/Options/CrosstabOptions.php | 2 +- src/Options/CrosstabPercentType.php | 10 +++++----- tests/Provider/TestDataProvider.php | 2 +- tests/Unit/Crosstab/CrosstabTest.php | 2 +- tests/Unit/CrosstabBuilderTest.php | 4 ++-- .../CrosstabNumberFormatterFlyweightTest.php | 10 +++++----- .../CrosstabNumberFormatterTypeTest.php | 4 ++-- tests/Unit/Options/CrosstabOptionsTest.php | 4 ++-- 14 files changed, 39 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index e1f29b5..5e549dc 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ $builder->setTitle('Browser Usage by Platform'); $builder->setColVariableName('Browser'); $builder->setRowVariableName('Platform'); $builder->setShowPercent(true); -$builder->setPercentType((\CliffordVickrey\Crosstabs\Options\CrosstabPercentType::COLUMN); +$builder->setPercentType((\CliffordVickrey\Crosstabs\Options\CrosstabPercentType::Column); $crosstab = $builder->build(); @@ -76,7 +76,7 @@ var_dump($crosstab->getChiSquared()); // 598.35 (clearly significant!) $builder->setTitle('Browser Usage by Platform by Device Type'); $builder->addLayer('Device Type'); // percentages will be of columns within each layer category; great for visualizing the effects of control variables -$builder->setPercentType(\CliffordVickrey\Crosstabs\Options\CrosstabPercentType::COLUMN_WITHIN_LAYER); +$builder->setPercentType(\CliffordVickrey\Crosstabs\Options\CrosstabPercentType::ColumnWithinLayer); $crosstab = $builder->build(); echo $crosstab->write(); @@ -194,7 +194,7 @@ Sets the label to use for weighted percentage cells. Defaults to "% (Weighted) #### `@setPercentType(CrosstabPercentType $percentType): void` Sets the percent type (row, column, total, etc.). See the `\CliffordVickrey\Crosstabs\Options\CrosstabPercentType` enum -for a list of allowable options. Defaults to `CrosstabPercentType::TOTAL` +for a list of allowable options. Defaults to `CrosstabPercentType::Total` #### `@setRawData(iterable $rawData): void` diff --git a/src/CrosstabBuilder.php b/src/CrosstabBuilder.php index c2baf32..c405cf4 100644 --- a/src/CrosstabBuilder.php +++ b/src/CrosstabBuilder.php @@ -326,7 +326,7 @@ private function formatNumber(mixed $valueParsed, bool $percent): string $valueParsed = (float)$valueParsed; - $type = $percent ? CrosstabNumberFormatterType::PERCENT : CrosstabNumberFormatterType::DECIMAL; + $type = $percent ? CrosstabNumberFormatterType::Percent : CrosstabNumberFormatterType::Decimal; if ($percent) { $scale = $this->scalePercent; diff --git a/src/Helper/CrosstabTreeBuilder.php b/src/Helper/CrosstabTreeBuilder.php index a9f931b..e8e8588 100644 --- a/src/Helper/CrosstabTreeBuilder.php +++ b/src/Helper/CrosstabTreeBuilder.php @@ -48,7 +48,7 @@ public function __construct(?CrosstabParamsSerializerInterface $serializer = nul public function buildTree( CrosstabVariableCollection $variables, array $totals, - CrosstabPercentType $percentType = CrosstabPercentType::TOTAL, + CrosstabPercentType $percentType = CrosstabPercentType::Total, string $messageTotal = 'Total', int $scale = CrosstabMathInterface::DEFAULT_SCALE ): CrosstabTree { @@ -205,16 +205,16 @@ private function getPercentDivisors( array $query ): array { $key = match ($percentType) { - CrosstabPercentType::COLUMN => $this->serializer->serializeParams(array_intersect_key($query, [ + CrosstabPercentType::Column => $this->serializer->serializeParams(array_intersect_key($query, [ $colVar->name => true ])), - CrosstabPercentType::COLUMN_WITHIN_LAYER => $this->serializer->serializeParams(array_diff_key($query, [ + CrosstabPercentType::ColumnWithinLayer => $this->serializer->serializeParams(array_diff_key($query, [ $rowVar->name => true ])), - CrosstabPercentType::ROW => $this->serializer->serializeParams(array_diff_key($query, [ + CrosstabPercentType::Row => $this->serializer->serializeParams(array_diff_key($query, [ $colVar->name => true ])), - CrosstabPercentType::TOTAL_WITHIN_LAYER => $this->serializer->serializeParams(array_diff_key($query, [ + CrosstabPercentType::TotalWithinLayer => $this->serializer->serializeParams(array_diff_key($query, [ $rowVar->name => true, $colVar->name => true ])), diff --git a/src/Helper/CrosstabTreeBuilderInterface.php b/src/Helper/CrosstabTreeBuilderInterface.php index eebc3f0..5a3d9de 100644 --- a/src/Helper/CrosstabTreeBuilderInterface.php +++ b/src/Helper/CrosstabTreeBuilderInterface.php @@ -27,7 +27,7 @@ interface CrosstabTreeBuilderInterface public function buildTree( CrosstabVariableCollection $variables, array $totals, - CrosstabPercentType $percentType = CrosstabPercentType::TOTAL, + CrosstabPercentType $percentType = CrosstabPercentType::Total, string $messageTotal = 'Total', int $scale = CrosstabMathInterface::DEFAULT_SCALE ): CrosstabTree; diff --git a/src/NumberFormatting/CrosstabNumberFormatterFlyweight.php b/src/NumberFormatting/CrosstabNumberFormatterFlyweight.php index 670663d..e9bc56f 100644 --- a/src/NumberFormatting/CrosstabNumberFormatterFlyweight.php +++ b/src/NumberFormatting/CrosstabNumberFormatterFlyweight.php @@ -36,7 +36,7 @@ public function getNumberFormatter( $maxFractionDigits = \NumberFormatter::MAX_FRACTION_DIGITS; } else { // @codeCoverageIgnoreStart - $nf = new CrosstabPolyfillNumberFormatter($type === CrosstabNumberFormatterType::PERCENT); + $nf = new CrosstabPolyfillNumberFormatter($type === CrosstabNumberFormatterType::Percent); $maxFractionDigits = 6; // @codeCoverageIgnoreEnd } diff --git a/src/NumberFormatting/CrosstabNumberFormatterType.php b/src/NumberFormatting/CrosstabNumberFormatterType.php index 539ffc4..9b4cb33 100644 --- a/src/NumberFormatting/CrosstabNumberFormatterType.php +++ b/src/NumberFormatting/CrosstabNumberFormatterType.php @@ -1,30 +1,31 @@ */ protected iterable $rawData = []; /** @var non-empty-string|null */ diff --git a/src/Options/CrosstabPercentType.php b/src/Options/CrosstabPercentType.php index cdd8a08..015aae4 100644 --- a/src/Options/CrosstabPercentType.php +++ b/src/Options/CrosstabPercentType.php @@ -6,9 +6,9 @@ enum CrosstabPercentType: string { - case COLUMN = 'column'; // column percentages - case COLUMN_WITHIN_LAYER = 'columnWithinLayer'; // column percentages for each layer (in layered crosstabs) - case TOTAL = 'total'; // total percentages - case TOTAL_WITHIN_LAYER = 'totalWithinLayer'; // total percentages for each layer (in layered crosstabs) - case ROW = 'row'; // row percentages + case Column = 'column'; // column percentages + case ColumnWithinLayer = 'columnWithinLayer'; // column percentages for each layer (in layered crosstabs) + case Total = 'total'; // total percentages + case TotalWithinLayer = 'totalWithinLayer'; // total percentages for each layer (in layered crosstabs) + case Row = 'row'; // row percentages } diff --git a/tests/Provider/TestDataProvider.php b/tests/Provider/TestDataProvider.php index 62d2af3..0e3bfcf 100644 --- a/tests/Provider/TestDataProvider.php +++ b/tests/Provider/TestDataProvider.php @@ -164,7 +164,7 @@ public function getCrosstab(): Crosstab $builder->setRowVariableName('Platform'); $builder->setTitle('Browser Usage By Platform'); $builder->setShowPercent(true); - $builder->setPercentType(CrosstabPercentType::COLUMN_WITHIN_LAYER); + $builder->setPercentType(CrosstabPercentType::ColumnWithinLayer); $builder->setRawData(call_user_func($this)); $crosstab = $builder->build(); file_put_contents($filename, serialize($crosstab)); diff --git a/tests/Unit/Crosstab/CrosstabTest.php b/tests/Unit/Crosstab/CrosstabTest.php index 1660b32..a3b3eab 100644 --- a/tests/Unit/Crosstab/CrosstabTest.php +++ b/tests/Unit/Crosstab/CrosstabTest.php @@ -37,7 +37,7 @@ public function testConstruct(): void $builder->setRowVariableName('Platform'); $builder->setTitle('Browser Usage By Platform'); $builder->setShowPercent(true); - $builder->setPercentType(CrosstabPercentType::COLUMN_WITHIN_LAYER); + $builder->setPercentType(CrosstabPercentType::ColumnWithinLayer); $builder->setRawData($data); $crosstab = $builder->build(); diff --git a/tests/Unit/CrosstabBuilderTest.php b/tests/Unit/CrosstabBuilderTest.php index 441ef3f..715cb2f 100644 --- a/tests/Unit/CrosstabBuilderTest.php +++ b/tests/Unit/CrosstabBuilderTest.php @@ -45,7 +45,7 @@ public function setUp(): void $this->builder->setRowVariableName('Platform'); $this->builder->setTitle('Browser Usage By Platform'); $this->builder->setShowPercent(true); - $this->builder->setPercentType(CrosstabPercentType::COLUMN_WITHIN_LAYER); + $this->builder->setPercentType(CrosstabPercentType::ColumnWithinLayer); $this->builder->setRawData(self::$data); } @@ -334,7 +334,7 @@ public function testBuildLayered(): void { $this->builder->setTitle('Browser Usage By Platform and Device Type'); $this->builder->addLayer('Device Type'); - $this->builder->setPercentType(CrosstabPercentType::COLUMN_WITHIN_LAYER); + $this->builder->setPercentType(CrosstabPercentType::ColumnWithinLayer); $crosstab = $this->builder->build(); self::assertEquals(55, $crosstab->getDegreesOfFreedom()); diff --git a/tests/Unit/NumberFormatting/CrosstabNumberFormatterFlyweightTest.php b/tests/Unit/NumberFormatting/CrosstabNumberFormatterFlyweightTest.php index 032f519..ea21ab0 100644 --- a/tests/Unit/NumberFormatting/CrosstabNumberFormatterFlyweightTest.php +++ b/tests/Unit/NumberFormatting/CrosstabNumberFormatterFlyweightTest.php @@ -26,32 +26,32 @@ public function testGetNumberFormatter(): void $flyweight = new CrosstabNumberFormatterFlyweight(); // test percent format - $nf = $flyweight->getNumberFormatter(CrosstabNumberFormatterType::PERCENT, 'en_US', 2); + $nf = $flyweight->getNumberFormatter(CrosstabNumberFormatterType::Percent, 'en_US', 2); self::assertEquals(2, $nf->getAttribute(NumberFormatter::MAX_FRACTION_DIGITS)); self::assertEquals('en_US', $nf->getLocale()); self::assertEquals('12.05%', $nf->format(.1205)); // test memoization $nf->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 3); - $nf = $flyweight->getNumberFormatter(CrosstabNumberFormatterType::PERCENT, 'en_US', 2); + $nf = $flyweight->getNumberFormatter(CrosstabNumberFormatterType::Percent, 'en_US', 2); self::assertEquals(3, $nf->getAttribute(NumberFormatter::MAX_FRACTION_DIGITS)); self::assertEquals('en_US', $nf->getLocale()); self::assertEquals('12.005%', $nf->format(.12005)); // test scale - $nf = $flyweight->getNumberFormatter(CrosstabNumberFormatterType::PERCENT, 'en_US', 4); + $nf = $flyweight->getNumberFormatter(CrosstabNumberFormatterType::Percent, 'en_US', 4); self::assertEquals(4, $nf->getAttribute(NumberFormatter::MAX_FRACTION_DIGITS)); self::assertEquals('en_US', $nf->getLocale()); self::assertEquals('12.0005%', $nf->format(.120005)); // test separate locale - $nf = $flyweight->getNumberFormatter(CrosstabNumberFormatterType::PERCENT, 'es_ES', 2); + $nf = $flyweight->getNumberFormatter(CrosstabNumberFormatterType::Percent, 'es_ES', 2); self::assertEquals(2, $nf->getAttribute(NumberFormatter::MAX_FRACTION_DIGITS)); self::assertEquals('es_ES', $nf->getLocale()); self::assertEquals('12,05 %', preg_replace('/\s+/u', ' ', (string)$nf->format(.1205))); // test decimal format - $nf = $flyweight->getNumberFormatter(CrosstabNumberFormatterType::DECIMAL, 'en_US', 2); + $nf = $flyweight->getNumberFormatter(CrosstabNumberFormatterType::Decimal, 'en_US', 2); self::assertEquals(2, $nf->getAttribute(NumberFormatter::MAX_FRACTION_DIGITS)); self::assertEquals('en_US', $nf->getLocale()); self::assertEquals('0.12', $nf->format(.1205)); diff --git a/tests/Unit/NumberFormatting/CrosstabNumberFormatterTypeTest.php b/tests/Unit/NumberFormatting/CrosstabNumberFormatterTypeTest.php index 891df56..52e485e 100644 --- a/tests/Unit/NumberFormatting/CrosstabNumberFormatterTypeTest.php +++ b/tests/Unit/NumberFormatting/CrosstabNumberFormatterTypeTest.php @@ -17,9 +17,9 @@ class CrosstabNumberFormatterTypeTest extends TestCase */ public function testToIntlConstant(): void { - $type = CrosstabNumberFormatterType::DECIMAL; + $type = CrosstabNumberFormatterType::Decimal; self::assertEquals(NumberFormatter::DECIMAL, $type->toIntlConstant()); - $type = CrosstabNumberFormatterType::PERCENT; + $type = CrosstabNumberFormatterType::Percent; self::assertEquals(NumberFormatter::PERCENT, $type->toIntlConstant()); } } diff --git a/tests/Unit/Options/CrosstabOptionsTest.php b/tests/Unit/Options/CrosstabOptionsTest.php index 6267008..7cc1a6d 100644 --- a/tests/Unit/Options/CrosstabOptionsTest.php +++ b/tests/Unit/Options/CrosstabOptionsTest.php @@ -47,7 +47,7 @@ public function testToArray(): void $options->setMessageWeightedExpectedPercent('weighted expected percent'); $options->setMessageWeightedFrequency('weighted frequency'); $options->setMessageWeightedPercent('setMessageWeightedPercent'); - $options->setPercentType(CrosstabPercentType::ROW); + $options->setPercentType(CrosstabPercentType::Row); $options->setRawData([['something' => 'something']]); $options->setRowVariableName('row name'); $options->setRowVariableDescription('row description'); @@ -94,7 +94,7 @@ public function testToArray(): void 'messageWeightedExpectedPercent' => 'weighted expected percent', 'messageWeightedFrequency' => 'weighted frequency', 'messageWeightedPercent' => 'setMessageWeightedPercent', - 'percentType' => CrosstabPercentType::ROW, + 'percentType' => CrosstabPercentType::Row, 'rawData' => [['something' => 'something']], 'rowVariableDescription' => 'row description', 'rowVariableName' => 'row name',