diff --git a/.phpactor.json b/.phpactor.json new file mode 100644 index 0000000..4d42bbb --- /dev/null +++ b/.phpactor.json @@ -0,0 +1,4 @@ +{ + "$schema": "/phpactor.schema.json", + "language_server_phpstan.enabled": true +} \ No newline at end of file diff --git a/.phpunit.cache/code-coverage/012e54d5c8b0488695480eb77a9af01b8a63a25afde9cdf74ef8e0d1a4ae1e0d b/.phpunit.cache/code-coverage/012e54d5c8b0488695480eb77a9af01b8a63a25afde9cdf74ef8e0d1a4ae1e0d new file mode 100644 index 0000000..fed6827 Binary files /dev/null and b/.phpunit.cache/code-coverage/012e54d5c8b0488695480eb77a9af01b8a63a25afde9cdf74ef8e0d1a4ae1e0d differ diff --git a/.phpunit.cache/code-coverage/01a603683bc40906780b61f3fadd9a937384faf97b43a8e11a2ccff51fd94551 b/.phpunit.cache/code-coverage/01a603683bc40906780b61f3fadd9a937384faf97b43a8e11a2ccff51fd94551 new file mode 100644 index 0000000..0cf22a3 Binary files /dev/null and b/.phpunit.cache/code-coverage/01a603683bc40906780b61f3fadd9a937384faf97b43a8e11a2ccff51fd94551 differ diff --git a/.phpunit.cache/code-coverage/01f15c06362be3f7156dde133744005dd0efa24ea6f128f000b7f62ca92757d5 b/.phpunit.cache/code-coverage/01f15c06362be3f7156dde133744005dd0efa24ea6f128f000b7f62ca92757d5 new file mode 100644 index 0000000..8d913de Binary files /dev/null and b/.phpunit.cache/code-coverage/01f15c06362be3f7156dde133744005dd0efa24ea6f128f000b7f62ca92757d5 differ diff --git a/.phpunit.cache/code-coverage/032d20e914ec18582e7ba0088454d926b397c576ae2d77536f02adc983134435 b/.phpunit.cache/code-coverage/032d20e914ec18582e7ba0088454d926b397c576ae2d77536f02adc983134435 new file mode 100644 index 0000000..ad78f73 Binary files /dev/null and b/.phpunit.cache/code-coverage/032d20e914ec18582e7ba0088454d926b397c576ae2d77536f02adc983134435 differ diff --git a/.phpunit.cache/code-coverage/05b1733f15ae4d24c1ed1bc29981f49634f03200d97f382c052cd9b18175f0e9 b/.phpunit.cache/code-coverage/05b1733f15ae4d24c1ed1bc29981f49634f03200d97f382c052cd9b18175f0e9 new file mode 100644 index 0000000..d5c275f Binary files /dev/null and b/.phpunit.cache/code-coverage/05b1733f15ae4d24c1ed1bc29981f49634f03200d97f382c052cd9b18175f0e9 differ diff --git a/.phpunit.cache/code-coverage/083757a40ac5b891a5eca3c381650ba5ed5fa0c4307f7a9b1d21ebe901726c21 b/.phpunit.cache/code-coverage/083757a40ac5b891a5eca3c381650ba5ed5fa0c4307f7a9b1d21ebe901726c21 new file mode 100644 index 0000000..f9a19d9 Binary files /dev/null and b/.phpunit.cache/code-coverage/083757a40ac5b891a5eca3c381650ba5ed5fa0c4307f7a9b1d21ebe901726c21 differ diff --git a/.phpunit.cache/code-coverage/0bb43d21c74ab1c92038da46d9a408fe926dde480e74222463d31b7760b44142 b/.phpunit.cache/code-coverage/0bb43d21c74ab1c92038da46d9a408fe926dde480e74222463d31b7760b44142 new file mode 100644 index 0000000..b26ce64 Binary files /dev/null and b/.phpunit.cache/code-coverage/0bb43d21c74ab1c92038da46d9a408fe926dde480e74222463d31b7760b44142 differ diff --git a/.phpunit.cache/code-coverage/0bc628d1b9e749bbbdb7df14cbd416134aab0acb18bc6221057423bbfc398de0 b/.phpunit.cache/code-coverage/0bc628d1b9e749bbbdb7df14cbd416134aab0acb18bc6221057423bbfc398de0 new file mode 100644 index 0000000..003a45f Binary files /dev/null and b/.phpunit.cache/code-coverage/0bc628d1b9e749bbbdb7df14cbd416134aab0acb18bc6221057423bbfc398de0 differ diff --git a/.phpunit.cache/code-coverage/0c9b9a3ae15104870c2c37b4cef006a87772b8ae39932003cec7939c913d6662 b/.phpunit.cache/code-coverage/0c9b9a3ae15104870c2c37b4cef006a87772b8ae39932003cec7939c913d6662 new file mode 100644 index 0000000..8963f43 Binary files /dev/null and b/.phpunit.cache/code-coverage/0c9b9a3ae15104870c2c37b4cef006a87772b8ae39932003cec7939c913d6662 differ diff --git a/.phpunit.cache/code-coverage/0d5ddb3107d998e5d69bd60e5a8b3956da573312ec1b81d5529d893f63a53d27 b/.phpunit.cache/code-coverage/0d5ddb3107d998e5d69bd60e5a8b3956da573312ec1b81d5529d893f63a53d27 new file mode 100644 index 0000000..de14308 Binary files /dev/null and b/.phpunit.cache/code-coverage/0d5ddb3107d998e5d69bd60e5a8b3956da573312ec1b81d5529d893f63a53d27 differ diff --git a/.phpunit.cache/code-coverage/0ffc11b25fae4aae2958e77ee2026fd450964d240d64b759f0954da94960980b b/.phpunit.cache/code-coverage/0ffc11b25fae4aae2958e77ee2026fd450964d240d64b759f0954da94960980b new file mode 100644 index 0000000..cbb98cd Binary files /dev/null and b/.phpunit.cache/code-coverage/0ffc11b25fae4aae2958e77ee2026fd450964d240d64b759f0954da94960980b differ diff --git a/.phpunit.cache/code-coverage/10436d5acfa3545ff9ce1499a6748ca5025c3e47f752880cc67ef5c514f721b3 b/.phpunit.cache/code-coverage/10436d5acfa3545ff9ce1499a6748ca5025c3e47f752880cc67ef5c514f721b3 new file mode 100644 index 0000000..200a41c Binary files /dev/null and b/.phpunit.cache/code-coverage/10436d5acfa3545ff9ce1499a6748ca5025c3e47f752880cc67ef5c514f721b3 differ diff --git a/.phpunit.cache/code-coverage/107f3b7990a8d610d330d14d216c2fc329617af7d719d533c680f60c5ba5cd86 b/.phpunit.cache/code-coverage/107f3b7990a8d610d330d14d216c2fc329617af7d719d533c680f60c5ba5cd86 new file mode 100644 index 0000000..e8e810c Binary files /dev/null and b/.phpunit.cache/code-coverage/107f3b7990a8d610d330d14d216c2fc329617af7d719d533c680f60c5ba5cd86 differ diff --git a/.phpunit.cache/code-coverage/143c164a1c6b0358752de99c8676715a73e3d79d86e0965db63076e28cf07bc6 b/.phpunit.cache/code-coverage/143c164a1c6b0358752de99c8676715a73e3d79d86e0965db63076e28cf07bc6 new file mode 100644 index 0000000..3dc1e1c Binary files /dev/null and b/.phpunit.cache/code-coverage/143c164a1c6b0358752de99c8676715a73e3d79d86e0965db63076e28cf07bc6 differ diff --git a/.phpunit.cache/code-coverage/183696210de2b8f5316e1736be329a25c0d3a4839f19a6983e5147e4ed7f90c7 b/.phpunit.cache/code-coverage/183696210de2b8f5316e1736be329a25c0d3a4839f19a6983e5147e4ed7f90c7 new file mode 100644 index 0000000..464f944 Binary files /dev/null and b/.phpunit.cache/code-coverage/183696210de2b8f5316e1736be329a25c0d3a4839f19a6983e5147e4ed7f90c7 differ diff --git a/.phpunit.cache/code-coverage/19fd1b5b65f4f7b84094d256389adca102e064b7ea0e301770e4d8a4e0f86df4 b/.phpunit.cache/code-coverage/19fd1b5b65f4f7b84094d256389adca102e064b7ea0e301770e4d8a4e0f86df4 new file mode 100644 index 0000000..be7f4cc Binary files /dev/null and b/.phpunit.cache/code-coverage/19fd1b5b65f4f7b84094d256389adca102e064b7ea0e301770e4d8a4e0f86df4 differ diff --git a/.phpunit.cache/code-coverage/22c41f0865858261924a5c580f7beaf7a6faebc3da73642c1c3110ddaac0de45 b/.phpunit.cache/code-coverage/22c41f0865858261924a5c580f7beaf7a6faebc3da73642c1c3110ddaac0de45 new file mode 100644 index 0000000..509772c Binary files /dev/null and b/.phpunit.cache/code-coverage/22c41f0865858261924a5c580f7beaf7a6faebc3da73642c1c3110ddaac0de45 differ diff --git a/.phpunit.cache/code-coverage/252eb511128084f01499ea654f740ca1132e302037f24b4a6ad380ad5464e87e b/.phpunit.cache/code-coverage/252eb511128084f01499ea654f740ca1132e302037f24b4a6ad380ad5464e87e new file mode 100644 index 0000000..b271643 Binary files /dev/null and b/.phpunit.cache/code-coverage/252eb511128084f01499ea654f740ca1132e302037f24b4a6ad380ad5464e87e differ diff --git a/.phpunit.cache/code-coverage/2668dec7d91d4575ff0659c5cf2015ea025a78664d4d725523a1c7ce09418ae2 b/.phpunit.cache/code-coverage/2668dec7d91d4575ff0659c5cf2015ea025a78664d4d725523a1c7ce09418ae2 new file mode 100644 index 0000000..fed6827 Binary files /dev/null and b/.phpunit.cache/code-coverage/2668dec7d91d4575ff0659c5cf2015ea025a78664d4d725523a1c7ce09418ae2 differ diff --git a/.phpunit.cache/code-coverage/26ad1e9da43f14c8708008a220611c9d0459a4eb60102228aab4b30b2d75290d b/.phpunit.cache/code-coverage/26ad1e9da43f14c8708008a220611c9d0459a4eb60102228aab4b30b2d75290d new file mode 100644 index 0000000..ab3f125 Binary files /dev/null and b/.phpunit.cache/code-coverage/26ad1e9da43f14c8708008a220611c9d0459a4eb60102228aab4b30b2d75290d differ diff --git a/.phpunit.cache/code-coverage/271f5c5c2fe8b2ae5fc709062f4f99e8a0687cdad9ea973afc2ceeedce23392a b/.phpunit.cache/code-coverage/271f5c5c2fe8b2ae5fc709062f4f99e8a0687cdad9ea973afc2ceeedce23392a new file mode 100644 index 0000000..a9cb686 Binary files /dev/null and b/.phpunit.cache/code-coverage/271f5c5c2fe8b2ae5fc709062f4f99e8a0687cdad9ea973afc2ceeedce23392a differ diff --git a/.phpunit.cache/code-coverage/2878eb060d79ef24f4b5fa12f25c9e4dd32df2f176c53d4c8278f49242d0883b b/.phpunit.cache/code-coverage/2878eb060d79ef24f4b5fa12f25c9e4dd32df2f176c53d4c8278f49242d0883b new file mode 100644 index 0000000..53d7dee Binary files /dev/null and b/.phpunit.cache/code-coverage/2878eb060d79ef24f4b5fa12f25c9e4dd32df2f176c53d4c8278f49242d0883b differ diff --git a/.phpunit.cache/code-coverage/2988f0c65f9a2c4d19906da3118157bc071220da9147af3f0215ee9ce0d6df45 b/.phpunit.cache/code-coverage/2988f0c65f9a2c4d19906da3118157bc071220da9147af3f0215ee9ce0d6df45 new file mode 100644 index 0000000..4a580b9 Binary files /dev/null and b/.phpunit.cache/code-coverage/2988f0c65f9a2c4d19906da3118157bc071220da9147af3f0215ee9ce0d6df45 differ diff --git a/.phpunit.cache/code-coverage/2a9a7a4e8fc65aa14acf0760056a18a7cfa253bb68e01dda54477df308fb479c b/.phpunit.cache/code-coverage/2a9a7a4e8fc65aa14acf0760056a18a7cfa253bb68e01dda54477df308fb479c new file mode 100644 index 0000000..a26116b Binary files /dev/null and b/.phpunit.cache/code-coverage/2a9a7a4e8fc65aa14acf0760056a18a7cfa253bb68e01dda54477df308fb479c differ diff --git a/.phpunit.cache/code-coverage/2cd7e0307c50ffaf9c8acaf7bce8a95e36a32a868fd7afe197d6cb2d439f6ac5 b/.phpunit.cache/code-coverage/2cd7e0307c50ffaf9c8acaf7bce8a95e36a32a868fd7afe197d6cb2d439f6ac5 new file mode 100644 index 0000000..c6e32be Binary files /dev/null and b/.phpunit.cache/code-coverage/2cd7e0307c50ffaf9c8acaf7bce8a95e36a32a868fd7afe197d6cb2d439f6ac5 differ diff --git a/.phpunit.cache/code-coverage/2f3bbb85ee2e6098bdabb94eef454d92a222a2daff35d71c3ea5191b2252d382 b/.phpunit.cache/code-coverage/2f3bbb85ee2e6098bdabb94eef454d92a222a2daff35d71c3ea5191b2252d382 new file mode 100644 index 0000000..ad78f73 Binary files /dev/null and b/.phpunit.cache/code-coverage/2f3bbb85ee2e6098bdabb94eef454d92a222a2daff35d71c3ea5191b2252d382 differ diff --git a/.phpunit.cache/code-coverage/2f858588914cf36b01005f57a90a51dc9d9b43427c9732b9e045b226219cbcd9 b/.phpunit.cache/code-coverage/2f858588914cf36b01005f57a90a51dc9d9b43427c9732b9e045b226219cbcd9 new file mode 100644 index 0000000..53cef34 Binary files /dev/null and b/.phpunit.cache/code-coverage/2f858588914cf36b01005f57a90a51dc9d9b43427c9732b9e045b226219cbcd9 differ diff --git a/.phpunit.cache/code-coverage/2fdd65422f654f9f3ca3bee830fd1a64378ee66184313d72a733744c5c220be3 b/.phpunit.cache/code-coverage/2fdd65422f654f9f3ca3bee830fd1a64378ee66184313d72a733744c5c220be3 new file mode 100644 index 0000000..4111838 Binary files /dev/null and b/.phpunit.cache/code-coverage/2fdd65422f654f9f3ca3bee830fd1a64378ee66184313d72a733744c5c220be3 differ diff --git a/.phpunit.cache/code-coverage/30106748c8398aded9e429eed2206539f16e6f71abf3bbd2b7546942930c6646 b/.phpunit.cache/code-coverage/30106748c8398aded9e429eed2206539f16e6f71abf3bbd2b7546942930c6646 new file mode 100644 index 0000000..436bc71 Binary files /dev/null and b/.phpunit.cache/code-coverage/30106748c8398aded9e429eed2206539f16e6f71abf3bbd2b7546942930c6646 differ diff --git a/.phpunit.cache/code-coverage/30134be138c297ec7a57610cdb78b96bb6b4ff6b769b2218927230e80be43d30 b/.phpunit.cache/code-coverage/30134be138c297ec7a57610cdb78b96bb6b4ff6b769b2218927230e80be43d30 new file mode 100644 index 0000000..072f510 Binary files /dev/null and b/.phpunit.cache/code-coverage/30134be138c297ec7a57610cdb78b96bb6b4ff6b769b2218927230e80be43d30 differ diff --git a/.phpunit.cache/code-coverage/31d15339824d7a09d09a62761530bb0c0f91d6bf9b75eb5cca273a01395d43e9 b/.phpunit.cache/code-coverage/31d15339824d7a09d09a62761530bb0c0f91d6bf9b75eb5cca273a01395d43e9 new file mode 100644 index 0000000..f1278dc Binary files /dev/null and b/.phpunit.cache/code-coverage/31d15339824d7a09d09a62761530bb0c0f91d6bf9b75eb5cca273a01395d43e9 differ diff --git a/.phpunit.cache/code-coverage/373ed2d0cfc0fc97c62676e9fd5baa7e75355fdeb746533fc0d5235158cbbb30 b/.phpunit.cache/code-coverage/373ed2d0cfc0fc97c62676e9fd5baa7e75355fdeb746533fc0d5235158cbbb30 new file mode 100644 index 0000000..d39b003 Binary files /dev/null and b/.phpunit.cache/code-coverage/373ed2d0cfc0fc97c62676e9fd5baa7e75355fdeb746533fc0d5235158cbbb30 differ diff --git a/.phpunit.cache/code-coverage/39653e6715ccc52daca4125f8eb5f1c27d1e0b249db0471196cc97ae387175fe b/.phpunit.cache/code-coverage/39653e6715ccc52daca4125f8eb5f1c27d1e0b249db0471196cc97ae387175fe new file mode 100644 index 0000000..556cf5c Binary files /dev/null and b/.phpunit.cache/code-coverage/39653e6715ccc52daca4125f8eb5f1c27d1e0b249db0471196cc97ae387175fe differ diff --git a/.phpunit.cache/code-coverage/3a5cb2d0775e437a44492cbbbfe25c1d06a41a279c7c43ecd94745bab2dff00c b/.phpunit.cache/code-coverage/3a5cb2d0775e437a44492cbbbfe25c1d06a41a279c7c43ecd94745bab2dff00c new file mode 100644 index 0000000..77ad484 Binary files /dev/null and b/.phpunit.cache/code-coverage/3a5cb2d0775e437a44492cbbbfe25c1d06a41a279c7c43ecd94745bab2dff00c differ diff --git a/.phpunit.cache/code-coverage/3b4759d01d4f56730a93f702f2d4f39ca349c1ae09d938a4a2f6a9d88b5bbd6e b/.phpunit.cache/code-coverage/3b4759d01d4f56730a93f702f2d4f39ca349c1ae09d938a4a2f6a9d88b5bbd6e new file mode 100644 index 0000000..bff5aec Binary files /dev/null and b/.phpunit.cache/code-coverage/3b4759d01d4f56730a93f702f2d4f39ca349c1ae09d938a4a2f6a9d88b5bbd6e differ diff --git a/.phpunit.cache/code-coverage/3c3584a71f2bccef11fc3f68d14723cd8e87f8684fd0e321b46f1a5b17212efc b/.phpunit.cache/code-coverage/3c3584a71f2bccef11fc3f68d14723cd8e87f8684fd0e321b46f1a5b17212efc new file mode 100644 index 0000000..218a653 Binary files /dev/null and b/.phpunit.cache/code-coverage/3c3584a71f2bccef11fc3f68d14723cd8e87f8684fd0e321b46f1a5b17212efc differ diff --git a/.phpunit.cache/code-coverage/3c70c0ff274b0beda5e7f64f053f988fe711fb26208a7e56cdc930cc79c74a6c b/.phpunit.cache/code-coverage/3c70c0ff274b0beda5e7f64f053f988fe711fb26208a7e56cdc930cc79c74a6c new file mode 100644 index 0000000..231d47a Binary files /dev/null and b/.phpunit.cache/code-coverage/3c70c0ff274b0beda5e7f64f053f988fe711fb26208a7e56cdc930cc79c74a6c differ diff --git a/.phpunit.cache/code-coverage/3ea18c701f45e4136423051df0e3fd049e42af6b5eba59903bf436a93f771a6a b/.phpunit.cache/code-coverage/3ea18c701f45e4136423051df0e3fd049e42af6b5eba59903bf436a93f771a6a new file mode 100644 index 0000000..4fd3e77 Binary files /dev/null and b/.phpunit.cache/code-coverage/3ea18c701f45e4136423051df0e3fd049e42af6b5eba59903bf436a93f771a6a differ diff --git a/.phpunit.cache/code-coverage/3ec6405a054b830394eea333a426488852b602c086632bc96f274a1e6852bd4f b/.phpunit.cache/code-coverage/3ec6405a054b830394eea333a426488852b602c086632bc96f274a1e6852bd4f new file mode 100644 index 0000000..ea70719 Binary files /dev/null and b/.phpunit.cache/code-coverage/3ec6405a054b830394eea333a426488852b602c086632bc96f274a1e6852bd4f differ diff --git a/.phpunit.cache/code-coverage/42e41b43013e209d73902ceb758810eda072b3903198fa0b2408b21b41b10104 b/.phpunit.cache/code-coverage/42e41b43013e209d73902ceb758810eda072b3903198fa0b2408b21b41b10104 new file mode 100644 index 0000000..f9008c3 Binary files /dev/null and b/.phpunit.cache/code-coverage/42e41b43013e209d73902ceb758810eda072b3903198fa0b2408b21b41b10104 differ diff --git a/.phpunit.cache/code-coverage/461a5172ded254232103b74f759919a9a312a8eca39f0dfb48aa76db9a1e0d7a b/.phpunit.cache/code-coverage/461a5172ded254232103b74f759919a9a312a8eca39f0dfb48aa76db9a1e0d7a new file mode 100644 index 0000000..ae35325 Binary files /dev/null and b/.phpunit.cache/code-coverage/461a5172ded254232103b74f759919a9a312a8eca39f0dfb48aa76db9a1e0d7a differ diff --git a/.phpunit.cache/code-coverage/472958917a1e48b762aff9f5da7522e3f55210d6fe22da36c6483a7b5c2c26e3 b/.phpunit.cache/code-coverage/472958917a1e48b762aff9f5da7522e3f55210d6fe22da36c6483a7b5c2c26e3 new file mode 100644 index 0000000..d8543d0 Binary files /dev/null and b/.phpunit.cache/code-coverage/472958917a1e48b762aff9f5da7522e3f55210d6fe22da36c6483a7b5c2c26e3 differ diff --git a/.phpunit.cache/code-coverage/476e79bfcb78e78ce5eb2c553379217fce9cd7f6c5effd086f95d0733c265ffd b/.phpunit.cache/code-coverage/476e79bfcb78e78ce5eb2c553379217fce9cd7f6c5effd086f95d0733c265ffd new file mode 100644 index 0000000..bb1d634 Binary files /dev/null and b/.phpunit.cache/code-coverage/476e79bfcb78e78ce5eb2c553379217fce9cd7f6c5effd086f95d0733c265ffd differ diff --git a/.phpunit.cache/code-coverage/4c9a909c76cf3c6d79ad4ca4b1a223630c9d470a0c887c070b88fde736b234a5 b/.phpunit.cache/code-coverage/4c9a909c76cf3c6d79ad4ca4b1a223630c9d470a0c887c070b88fde736b234a5 new file mode 100644 index 0000000..caf24b6 Binary files /dev/null and b/.phpunit.cache/code-coverage/4c9a909c76cf3c6d79ad4ca4b1a223630c9d470a0c887c070b88fde736b234a5 differ diff --git a/.phpunit.cache/code-coverage/4ecd312b6a5a3d5e1dcc45c6bb31f544e3f55db103ec84d97e04acfdf0053e13 b/.phpunit.cache/code-coverage/4ecd312b6a5a3d5e1dcc45c6bb31f544e3f55db103ec84d97e04acfdf0053e13 new file mode 100644 index 0000000..4bc79b6 Binary files /dev/null and b/.phpunit.cache/code-coverage/4ecd312b6a5a3d5e1dcc45c6bb31f544e3f55db103ec84d97e04acfdf0053e13 differ diff --git a/.phpunit.cache/code-coverage/4f06cee570176b1924f7674d68bef16d085e884dac05124ed5a8f23fcbc67891 b/.phpunit.cache/code-coverage/4f06cee570176b1924f7674d68bef16d085e884dac05124ed5a8f23fcbc67891 new file mode 100644 index 0000000..5fc8131 Binary files /dev/null and b/.phpunit.cache/code-coverage/4f06cee570176b1924f7674d68bef16d085e884dac05124ed5a8f23fcbc67891 differ diff --git a/.phpunit.cache/code-coverage/505f79cff095e8d183ea33853c6710bec395a6ffaf9835fb5231a316fe7d62e4 b/.phpunit.cache/code-coverage/505f79cff095e8d183ea33853c6710bec395a6ffaf9835fb5231a316fe7d62e4 new file mode 100644 index 0000000..f5df172 Binary files /dev/null and b/.phpunit.cache/code-coverage/505f79cff095e8d183ea33853c6710bec395a6ffaf9835fb5231a316fe7d62e4 differ diff --git a/.phpunit.cache/code-coverage/5384b49fdb5ae5fa91f4ce811ac3c71d2699e7f578a5fe46c3521fe1d367f7ec b/.phpunit.cache/code-coverage/5384b49fdb5ae5fa91f4ce811ac3c71d2699e7f578a5fe46c3521fe1d367f7ec new file mode 100644 index 0000000..3178c84 Binary files /dev/null and b/.phpunit.cache/code-coverage/5384b49fdb5ae5fa91f4ce811ac3c71d2699e7f578a5fe46c3521fe1d367f7ec differ diff --git a/.phpunit.cache/code-coverage/543d30469abc90e40ccc2ff2d327af1d9347126805ce680e3e280df9794ac262 b/.phpunit.cache/code-coverage/543d30469abc90e40ccc2ff2d327af1d9347126805ce680e3e280df9794ac262 new file mode 100644 index 0000000..37dd502 Binary files /dev/null and b/.phpunit.cache/code-coverage/543d30469abc90e40ccc2ff2d327af1d9347126805ce680e3e280df9794ac262 differ diff --git a/.phpunit.cache/code-coverage/56d37fb26998ba09589ef3267c21edea4df08a37afde5efc6a4494d33f52ae0e b/.phpunit.cache/code-coverage/56d37fb26998ba09589ef3267c21edea4df08a37afde5efc6a4494d33f52ae0e new file mode 100644 index 0000000..fab688b Binary files /dev/null and b/.phpunit.cache/code-coverage/56d37fb26998ba09589ef3267c21edea4df08a37afde5efc6a4494d33f52ae0e differ diff --git a/.phpunit.cache/code-coverage/577abd178bf9cb7207883a61e52431c2aafe24081c7076fb89b04b209413d884 b/.phpunit.cache/code-coverage/577abd178bf9cb7207883a61e52431c2aafe24081c7076fb89b04b209413d884 new file mode 100644 index 0000000..3dfe2c3 Binary files /dev/null and b/.phpunit.cache/code-coverage/577abd178bf9cb7207883a61e52431c2aafe24081c7076fb89b04b209413d884 differ diff --git a/.phpunit.cache/code-coverage/583ad3d1ad7f737c2645517d62e62abcfc937162a3971b440fcf285e94ebe060 b/.phpunit.cache/code-coverage/583ad3d1ad7f737c2645517d62e62abcfc937162a3971b440fcf285e94ebe060 new file mode 100644 index 0000000..97f282e Binary files /dev/null and b/.phpunit.cache/code-coverage/583ad3d1ad7f737c2645517d62e62abcfc937162a3971b440fcf285e94ebe060 differ diff --git a/.phpunit.cache/code-coverage/5dc90b5a28b82a104e9f8f2d7779adefa2ab28b13407116142d783a61db35e9a b/.phpunit.cache/code-coverage/5dc90b5a28b82a104e9f8f2d7779adefa2ab28b13407116142d783a61db35e9a new file mode 100644 index 0000000..8ae42fd Binary files /dev/null and b/.phpunit.cache/code-coverage/5dc90b5a28b82a104e9f8f2d7779adefa2ab28b13407116142d783a61db35e9a differ diff --git a/.phpunit.cache/code-coverage/5dd537ecf090a413b5b71586d88c43ddb081455692a47887417db1cfbbd89421 b/.phpunit.cache/code-coverage/5dd537ecf090a413b5b71586d88c43ddb081455692a47887417db1cfbbd89421 new file mode 100644 index 0000000..a992147 Binary files /dev/null and b/.phpunit.cache/code-coverage/5dd537ecf090a413b5b71586d88c43ddb081455692a47887417db1cfbbd89421 differ diff --git a/.phpunit.cache/code-coverage/5e293181648e7578929365675f161b2295862e37b09d86a9a40e592c1f4ffd2c b/.phpunit.cache/code-coverage/5e293181648e7578929365675f161b2295862e37b09d86a9a40e592c1f4ffd2c new file mode 100644 index 0000000..00499aa Binary files /dev/null and b/.phpunit.cache/code-coverage/5e293181648e7578929365675f161b2295862e37b09d86a9a40e592c1f4ffd2c differ diff --git a/.phpunit.cache/code-coverage/5e832fd9d4079828d29563aae03f64fe69c4a62b3c75f483542d94fb1204922d b/.phpunit.cache/code-coverage/5e832fd9d4079828d29563aae03f64fe69c4a62b3c75f483542d94fb1204922d new file mode 100644 index 0000000..cbb98cd Binary files /dev/null and b/.phpunit.cache/code-coverage/5e832fd9d4079828d29563aae03f64fe69c4a62b3c75f483542d94fb1204922d differ diff --git a/.phpunit.cache/code-coverage/60e3560c249b13efc778e33a2f807eb73916d256f0da69cc33112464033c98f1 b/.phpunit.cache/code-coverage/60e3560c249b13efc778e33a2f807eb73916d256f0da69cc33112464033c98f1 new file mode 100644 index 0000000..e18cd96 Binary files /dev/null and b/.phpunit.cache/code-coverage/60e3560c249b13efc778e33a2f807eb73916d256f0da69cc33112464033c98f1 differ diff --git a/.phpunit.cache/code-coverage/60e877f873751653177e206af3bceefb5325ac2c04dfebc37ab704855109c20c b/.phpunit.cache/code-coverage/60e877f873751653177e206af3bceefb5325ac2c04dfebc37ab704855109c20c new file mode 100644 index 0000000..9b3fcb4 Binary files /dev/null and b/.phpunit.cache/code-coverage/60e877f873751653177e206af3bceefb5325ac2c04dfebc37ab704855109c20c differ diff --git a/.phpunit.cache/code-coverage/62ace4b29fd381b91924f61ef02b1f45e5dfe25f4194d115387181bb200ca67a b/.phpunit.cache/code-coverage/62ace4b29fd381b91924f61ef02b1f45e5dfe25f4194d115387181bb200ca67a new file mode 100644 index 0000000..d02f395 Binary files /dev/null and b/.phpunit.cache/code-coverage/62ace4b29fd381b91924f61ef02b1f45e5dfe25f4194d115387181bb200ca67a differ diff --git a/.phpunit.cache/code-coverage/64ac040bfc1f68d13d8a187d89d5d26e7a5245f46b2107e00a060fef01bc9535 b/.phpunit.cache/code-coverage/64ac040bfc1f68d13d8a187d89d5d26e7a5245f46b2107e00a060fef01bc9535 new file mode 100644 index 0000000..03a9fa2 Binary files /dev/null and b/.phpunit.cache/code-coverage/64ac040bfc1f68d13d8a187d89d5d26e7a5245f46b2107e00a060fef01bc9535 differ diff --git a/.phpunit.cache/code-coverage/659c396e7d4288deb6b82308fc070584c445f7e588c01243c4e4f7ef0f8f1971 b/.phpunit.cache/code-coverage/659c396e7d4288deb6b82308fc070584c445f7e588c01243c4e4f7ef0f8f1971 new file mode 100644 index 0000000..e7aa953 Binary files /dev/null and b/.phpunit.cache/code-coverage/659c396e7d4288deb6b82308fc070584c445f7e588c01243c4e4f7ef0f8f1971 differ diff --git a/.phpunit.cache/code-coverage/673515d5d8d2751e89c893439977498e4f492c0199326862d3bf9be8e6ffa776 b/.phpunit.cache/code-coverage/673515d5d8d2751e89c893439977498e4f492c0199326862d3bf9be8e6ffa776 new file mode 100644 index 0000000..3e8b1ad Binary files /dev/null and b/.phpunit.cache/code-coverage/673515d5d8d2751e89c893439977498e4f492c0199326862d3bf9be8e6ffa776 differ diff --git a/.phpunit.cache/code-coverage/677feebf72100d628733e70d75987c62d2f7ab46f6dd5cfa76e22aed4d0db64b b/.phpunit.cache/code-coverage/677feebf72100d628733e70d75987c62d2f7ab46f6dd5cfa76e22aed4d0db64b new file mode 100644 index 0000000..a6718ac Binary files /dev/null and b/.phpunit.cache/code-coverage/677feebf72100d628733e70d75987c62d2f7ab46f6dd5cfa76e22aed4d0db64b differ diff --git a/.phpunit.cache/code-coverage/67959c07853fbd8415b83f7456917ef659395ac70aeddeb98e5521ee806b1b59 b/.phpunit.cache/code-coverage/67959c07853fbd8415b83f7456917ef659395ac70aeddeb98e5521ee806b1b59 new file mode 100644 index 0000000..f01edb9 Binary files /dev/null and b/.phpunit.cache/code-coverage/67959c07853fbd8415b83f7456917ef659395ac70aeddeb98e5521ee806b1b59 differ diff --git a/.phpunit.cache/code-coverage/681517ba3b619a067812884c54d07722307281bb254049901259bc9d43ebc8e7 b/.phpunit.cache/code-coverage/681517ba3b619a067812884c54d07722307281bb254049901259bc9d43ebc8e7 new file mode 100644 index 0000000..0badf5c Binary files /dev/null and b/.phpunit.cache/code-coverage/681517ba3b619a067812884c54d07722307281bb254049901259bc9d43ebc8e7 differ diff --git a/.phpunit.cache/code-coverage/687aaacd1e81f7030881458f664315886a89bc2b02a28e62c6dbce0b420858e8 b/.phpunit.cache/code-coverage/687aaacd1e81f7030881458f664315886a89bc2b02a28e62c6dbce0b420858e8 new file mode 100644 index 0000000..5202a43 Binary files /dev/null and b/.phpunit.cache/code-coverage/687aaacd1e81f7030881458f664315886a89bc2b02a28e62c6dbce0b420858e8 differ diff --git a/.phpunit.cache/code-coverage/69459d717d21d6862e6b90506ec536acf665d6372cd1aef1dfb5c8d713ae5188 b/.phpunit.cache/code-coverage/69459d717d21d6862e6b90506ec536acf665d6372cd1aef1dfb5c8d713ae5188 new file mode 100644 index 0000000..e7f94c9 Binary files /dev/null and b/.phpunit.cache/code-coverage/69459d717d21d6862e6b90506ec536acf665d6372cd1aef1dfb5c8d713ae5188 differ diff --git a/.phpunit.cache/code-coverage/6a294d7688671c08f9fcd8fd7262020ef548ba3fe93639441fcfa425d381aee5 b/.phpunit.cache/code-coverage/6a294d7688671c08f9fcd8fd7262020ef548ba3fe93639441fcfa425d381aee5 new file mode 100644 index 0000000..68604a8 Binary files /dev/null and b/.phpunit.cache/code-coverage/6a294d7688671c08f9fcd8fd7262020ef548ba3fe93639441fcfa425d381aee5 differ diff --git a/.phpunit.cache/code-coverage/6b591c37727859264b390521a3bfed41627f83964b2c1cc514528d91f98a22cb b/.phpunit.cache/code-coverage/6b591c37727859264b390521a3bfed41627f83964b2c1cc514528d91f98a22cb new file mode 100644 index 0000000..e47ddc5 Binary files /dev/null and b/.phpunit.cache/code-coverage/6b591c37727859264b390521a3bfed41627f83964b2c1cc514528d91f98a22cb differ diff --git a/.phpunit.cache/code-coverage/6c22512389ebe9aaf850070d142a22c0406113b1f1e9a722eaf6d62e945d9903 b/.phpunit.cache/code-coverage/6c22512389ebe9aaf850070d142a22c0406113b1f1e9a722eaf6d62e945d9903 new file mode 100644 index 0000000..7317a03 Binary files /dev/null and b/.phpunit.cache/code-coverage/6c22512389ebe9aaf850070d142a22c0406113b1f1e9a722eaf6d62e945d9903 differ diff --git a/.phpunit.cache/code-coverage/6c395cc5f46ab9638fc477f46fb56ba37025a8019487c95e41e60d3f6be13b92 b/.phpunit.cache/code-coverage/6c395cc5f46ab9638fc477f46fb56ba37025a8019487c95e41e60d3f6be13b92 new file mode 100644 index 0000000..95d5bc3 Binary files /dev/null and b/.phpunit.cache/code-coverage/6c395cc5f46ab9638fc477f46fb56ba37025a8019487c95e41e60d3f6be13b92 differ diff --git a/.phpunit.cache/code-coverage/6d837209ee8deb4eb2f1d948d4c5f2f5134ca1a70e2637e1d72961b7ec76013e b/.phpunit.cache/code-coverage/6d837209ee8deb4eb2f1d948d4c5f2f5134ca1a70e2637e1d72961b7ec76013e new file mode 100644 index 0000000..0073eb9 Binary files /dev/null and b/.phpunit.cache/code-coverage/6d837209ee8deb4eb2f1d948d4c5f2f5134ca1a70e2637e1d72961b7ec76013e differ diff --git a/.phpunit.cache/code-coverage/6da487a5b943cd80fc7e2eb4517ea089d55ffaf55ccd2efc746457b34bfa6515 b/.phpunit.cache/code-coverage/6da487a5b943cd80fc7e2eb4517ea089d55ffaf55ccd2efc746457b34bfa6515 new file mode 100644 index 0000000..b771f53 Binary files /dev/null and b/.phpunit.cache/code-coverage/6da487a5b943cd80fc7e2eb4517ea089d55ffaf55ccd2efc746457b34bfa6515 differ diff --git a/.phpunit.cache/code-coverage/6eef50ea947ff2f56b1905740c53a70d3401f762b678e9c415a2581022f09d97 b/.phpunit.cache/code-coverage/6eef50ea947ff2f56b1905740c53a70d3401f762b678e9c415a2581022f09d97 new file mode 100644 index 0000000..cbb98cd Binary files /dev/null and b/.phpunit.cache/code-coverage/6eef50ea947ff2f56b1905740c53a70d3401f762b678e9c415a2581022f09d97 differ diff --git a/.phpunit.cache/code-coverage/6f6b736d495558abd7e4449df340ad78d14fe665aa38c59fa4e3c4104fb6a4d6 b/.phpunit.cache/code-coverage/6f6b736d495558abd7e4449df340ad78d14fe665aa38c59fa4e3c4104fb6a4d6 new file mode 100644 index 0000000..de14308 Binary files /dev/null and b/.phpunit.cache/code-coverage/6f6b736d495558abd7e4449df340ad78d14fe665aa38c59fa4e3c4104fb6a4d6 differ diff --git a/.phpunit.cache/code-coverage/717c0c1adcc2afabc59efd35933e592ce47764648e6e68f59b76c7a8444b59ec b/.phpunit.cache/code-coverage/717c0c1adcc2afabc59efd35933e592ce47764648e6e68f59b76c7a8444b59ec new file mode 100644 index 0000000..9e29533 Binary files /dev/null and b/.phpunit.cache/code-coverage/717c0c1adcc2afabc59efd35933e592ce47764648e6e68f59b76c7a8444b59ec differ diff --git a/.phpunit.cache/code-coverage/74a51c4dd08c7491e712aad70a79750618f4760f12ea8226e5707cc3d9d589d1 b/.phpunit.cache/code-coverage/74a51c4dd08c7491e712aad70a79750618f4760f12ea8226e5707cc3d9d589d1 new file mode 100644 index 0000000..74e1519 Binary files /dev/null and b/.phpunit.cache/code-coverage/74a51c4dd08c7491e712aad70a79750618f4760f12ea8226e5707cc3d9d589d1 differ diff --git a/.phpunit.cache/code-coverage/787f210913b554b0c2bcb83fd1cdef9915a858f4a0468ef987b1bbe29449dc94 b/.phpunit.cache/code-coverage/787f210913b554b0c2bcb83fd1cdef9915a858f4a0468ef987b1bbe29449dc94 new file mode 100644 index 0000000..412aec6 Binary files /dev/null and b/.phpunit.cache/code-coverage/787f210913b554b0c2bcb83fd1cdef9915a858f4a0468ef987b1bbe29449dc94 differ diff --git a/.phpunit.cache/code-coverage/78b99be928d8a8b26188c87ed2a95724fc8ab1195f4d837ea4f3c1c7799be525 b/.phpunit.cache/code-coverage/78b99be928d8a8b26188c87ed2a95724fc8ab1195f4d837ea4f3c1c7799be525 new file mode 100644 index 0000000..948ce9c Binary files /dev/null and b/.phpunit.cache/code-coverage/78b99be928d8a8b26188c87ed2a95724fc8ab1195f4d837ea4f3c1c7799be525 differ diff --git a/.phpunit.cache/code-coverage/7910ba259fad99aa2bab014353bb136e0d3a5798af37a8721cef3b67c9aa0756 b/.phpunit.cache/code-coverage/7910ba259fad99aa2bab014353bb136e0d3a5798af37a8721cef3b67c9aa0756 new file mode 100644 index 0000000..bd4c9ca Binary files /dev/null and b/.phpunit.cache/code-coverage/7910ba259fad99aa2bab014353bb136e0d3a5798af37a8721cef3b67c9aa0756 differ diff --git a/.phpunit.cache/code-coverage/7d779e6605a2b1981feea76927669bc11959acd049afd5a3be02b8721d511e55 b/.phpunit.cache/code-coverage/7d779e6605a2b1981feea76927669bc11959acd049afd5a3be02b8721d511e55 new file mode 100644 index 0000000..d60ccd9 Binary files /dev/null and b/.phpunit.cache/code-coverage/7d779e6605a2b1981feea76927669bc11959acd049afd5a3be02b8721d511e55 differ diff --git a/.phpunit.cache/code-coverage/7f087b6a52aa9e4b64e538272010b716faf17a42bca4414dc0f0448db1c45229 b/.phpunit.cache/code-coverage/7f087b6a52aa9e4b64e538272010b716faf17a42bca4414dc0f0448db1c45229 new file mode 100644 index 0000000..cb52022 Binary files /dev/null and b/.phpunit.cache/code-coverage/7f087b6a52aa9e4b64e538272010b716faf17a42bca4414dc0f0448db1c45229 differ diff --git a/.phpunit.cache/code-coverage/81555a7bb827fb19a964af3807f320e1375b8428296e762f874c81f7249df91d b/.phpunit.cache/code-coverage/81555a7bb827fb19a964af3807f320e1375b8428296e762f874c81f7249df91d new file mode 100644 index 0000000..8524b71 Binary files /dev/null and b/.phpunit.cache/code-coverage/81555a7bb827fb19a964af3807f320e1375b8428296e762f874c81f7249df91d differ diff --git a/.phpunit.cache/code-coverage/8161f3f988d050859460da9f382ccd625851b5fb80c05970a669df692814f66b b/.phpunit.cache/code-coverage/8161f3f988d050859460da9f382ccd625851b5fb80c05970a669df692814f66b new file mode 100644 index 0000000..76da7e6 Binary files /dev/null and b/.phpunit.cache/code-coverage/8161f3f988d050859460da9f382ccd625851b5fb80c05970a669df692814f66b differ diff --git a/.phpunit.cache/code-coverage/81fec0efe26b4c35f2454e323331ce24493239f7135c300d797369095fee25e1 b/.phpunit.cache/code-coverage/81fec0efe26b4c35f2454e323331ce24493239f7135c300d797369095fee25e1 new file mode 100644 index 0000000..05696b1 Binary files /dev/null and b/.phpunit.cache/code-coverage/81fec0efe26b4c35f2454e323331ce24493239f7135c300d797369095fee25e1 differ diff --git a/.phpunit.cache/code-coverage/82ca45ba749968fe0ce15c0cfd1c0d4d66068ffa55c53a273d1d3357c03a34dc b/.phpunit.cache/code-coverage/82ca45ba749968fe0ce15c0cfd1c0d4d66068ffa55c53a273d1d3357c03a34dc new file mode 100644 index 0000000..7a376c1 Binary files /dev/null and b/.phpunit.cache/code-coverage/82ca45ba749968fe0ce15c0cfd1c0d4d66068ffa55c53a273d1d3357c03a34dc differ diff --git a/.phpunit.cache/code-coverage/83025a9e95b24b4f2604d8a91c382b36c18cd1112281def956dc98c3e948378c b/.phpunit.cache/code-coverage/83025a9e95b24b4f2604d8a91c382b36c18cd1112281def956dc98c3e948378c new file mode 100644 index 0000000..2954956 Binary files /dev/null and b/.phpunit.cache/code-coverage/83025a9e95b24b4f2604d8a91c382b36c18cd1112281def956dc98c3e948378c differ diff --git a/.phpunit.cache/code-coverage/8724c36d3b6ad2a4957461f34febdadcc3d070d594d6920bccee10267fa26d7d b/.phpunit.cache/code-coverage/8724c36d3b6ad2a4957461f34febdadcc3d070d594d6920bccee10267fa26d7d new file mode 100644 index 0000000..b4af911 Binary files /dev/null and b/.phpunit.cache/code-coverage/8724c36d3b6ad2a4957461f34febdadcc3d070d594d6920bccee10267fa26d7d differ diff --git a/.phpunit.cache/code-coverage/87bd6b2081bbf09d234d6a5ca0d5d0ef9e2ee77ea10a88f189ae11c20bff29a5 b/.phpunit.cache/code-coverage/87bd6b2081bbf09d234d6a5ca0d5d0ef9e2ee77ea10a88f189ae11c20bff29a5 new file mode 100644 index 0000000..8d913de Binary files /dev/null and b/.phpunit.cache/code-coverage/87bd6b2081bbf09d234d6a5ca0d5d0ef9e2ee77ea10a88f189ae11c20bff29a5 differ diff --git a/.phpunit.cache/code-coverage/88513f775607812c5a32d762c5a1b80cc83f06e626821baeca63680512cbbd58 b/.phpunit.cache/code-coverage/88513f775607812c5a32d762c5a1b80cc83f06e626821baeca63680512cbbd58 new file mode 100644 index 0000000..df0f5f2 Binary files /dev/null and b/.phpunit.cache/code-coverage/88513f775607812c5a32d762c5a1b80cc83f06e626821baeca63680512cbbd58 differ diff --git a/.phpunit.cache/code-coverage/9134e670e9a51a45732bcc55647293a0ca876792dda59d406af7e3058f7aeba4 b/.phpunit.cache/code-coverage/9134e670e9a51a45732bcc55647293a0ca876792dda59d406af7e3058f7aeba4 new file mode 100644 index 0000000..0785ab3 Binary files /dev/null and b/.phpunit.cache/code-coverage/9134e670e9a51a45732bcc55647293a0ca876792dda59d406af7e3058f7aeba4 differ diff --git a/.phpunit.cache/code-coverage/92375bf38956db9d5d90c2e5c6141d79cce21685925f8f88f3a1f56a8acf0cf0 b/.phpunit.cache/code-coverage/92375bf38956db9d5d90c2e5c6141d79cce21685925f8f88f3a1f56a8acf0cf0 new file mode 100644 index 0000000..4a580b9 Binary files /dev/null and b/.phpunit.cache/code-coverage/92375bf38956db9d5d90c2e5c6141d79cce21685925f8f88f3a1f56a8acf0cf0 differ diff --git a/.phpunit.cache/code-coverage/940c503d4c3b995721481b64c98f9cda7a1e03bf98da2850d5913adb9b260e30 b/.phpunit.cache/code-coverage/940c503d4c3b995721481b64c98f9cda7a1e03bf98da2850d5913adb9b260e30 new file mode 100644 index 0000000..e9ce33f Binary files /dev/null and b/.phpunit.cache/code-coverage/940c503d4c3b995721481b64c98f9cda7a1e03bf98da2850d5913adb9b260e30 differ diff --git a/.phpunit.cache/code-coverage/95e8f0c5633df17449a9c4dac7c83db34aa6dfb3d386030061c966f555afb05e b/.phpunit.cache/code-coverage/95e8f0c5633df17449a9c4dac7c83db34aa6dfb3d386030061c966f555afb05e new file mode 100644 index 0000000..c07556a Binary files /dev/null and b/.phpunit.cache/code-coverage/95e8f0c5633df17449a9c4dac7c83db34aa6dfb3d386030061c966f555afb05e differ diff --git a/.phpunit.cache/code-coverage/9736dfc98e14ad06e20bd8d865875c6823967236b28fab887718666729b375d7 b/.phpunit.cache/code-coverage/9736dfc98e14ad06e20bd8d865875c6823967236b28fab887718666729b375d7 new file mode 100644 index 0000000..c6f9abb Binary files /dev/null and b/.phpunit.cache/code-coverage/9736dfc98e14ad06e20bd8d865875c6823967236b28fab887718666729b375d7 differ diff --git a/.phpunit.cache/code-coverage/977fbe6927d30c9b8402a8b4d61f2d8f3c25aa8b5b10971ee7c903678de3f24a b/.phpunit.cache/code-coverage/977fbe6927d30c9b8402a8b4d61f2d8f3c25aa8b5b10971ee7c903678de3f24a new file mode 100644 index 0000000..39ffc23 Binary files /dev/null and b/.phpunit.cache/code-coverage/977fbe6927d30c9b8402a8b4d61f2d8f3c25aa8b5b10971ee7c903678de3f24a differ diff --git a/.phpunit.cache/code-coverage/994ded48695bbd6cab97dc7c0590bd080039f39551b5284452f77431b54c3adb b/.phpunit.cache/code-coverage/994ded48695bbd6cab97dc7c0590bd080039f39551b5284452f77431b54c3adb new file mode 100644 index 0000000..123b3ef Binary files /dev/null and b/.phpunit.cache/code-coverage/994ded48695bbd6cab97dc7c0590bd080039f39551b5284452f77431b54c3adb differ diff --git a/.phpunit.cache/code-coverage/9c15bf1ea310802f2555166807fd5ba29f6c7ec281507505bd3a6c85dcd9f38e b/.phpunit.cache/code-coverage/9c15bf1ea310802f2555166807fd5ba29f6c7ec281507505bd3a6c85dcd9f38e new file mode 100644 index 0000000..dbeca8e Binary files /dev/null and b/.phpunit.cache/code-coverage/9c15bf1ea310802f2555166807fd5ba29f6c7ec281507505bd3a6c85dcd9f38e differ diff --git a/.phpunit.cache/code-coverage/9d0ba74b57d047a8753cbb1caf5498bd58954ff8550bafdf681504b8eefa9d06 b/.phpunit.cache/code-coverage/9d0ba74b57d047a8753cbb1caf5498bd58954ff8550bafdf681504b8eefa9d06 new file mode 100644 index 0000000..5f1296f Binary files /dev/null and b/.phpunit.cache/code-coverage/9d0ba74b57d047a8753cbb1caf5498bd58954ff8550bafdf681504b8eefa9d06 differ diff --git a/.phpunit.cache/code-coverage/9e6a57203c7516bf062ec4cabbaad56fc45ec0b335a0f27631c2c215bfabc502 b/.phpunit.cache/code-coverage/9e6a57203c7516bf062ec4cabbaad56fc45ec0b335a0f27631c2c215bfabc502 new file mode 100644 index 0000000..f01edb9 Binary files /dev/null and b/.phpunit.cache/code-coverage/9e6a57203c7516bf062ec4cabbaad56fc45ec0b335a0f27631c2c215bfabc502 differ diff --git a/.phpunit.cache/code-coverage/9ea1759d72943a95103cafa5e9af71e702144b1e476e0e129f9554a4264c50ee b/.phpunit.cache/code-coverage/9ea1759d72943a95103cafa5e9af71e702144b1e476e0e129f9554a4264c50ee new file mode 100644 index 0000000..a6491c5 Binary files /dev/null and b/.phpunit.cache/code-coverage/9ea1759d72943a95103cafa5e9af71e702144b1e476e0e129f9554a4264c50ee differ diff --git a/.phpunit.cache/code-coverage/a0012e20e6a32b65b701ea46320c702d3bb3db69ad816e1e92184993f8b3d625 b/.phpunit.cache/code-coverage/a0012e20e6a32b65b701ea46320c702d3bb3db69ad816e1e92184993f8b3d625 new file mode 100644 index 0000000..e30678f Binary files /dev/null and b/.phpunit.cache/code-coverage/a0012e20e6a32b65b701ea46320c702d3bb3db69ad816e1e92184993f8b3d625 differ diff --git a/.phpunit.cache/code-coverage/a0b6ceb731de526ec5381f3e075c409ccffe45d06780b4df002b2622dc3cb0a1 b/.phpunit.cache/code-coverage/a0b6ceb731de526ec5381f3e075c409ccffe45d06780b4df002b2622dc3cb0a1 new file mode 100644 index 0000000..5cbf1b8 Binary files /dev/null and b/.phpunit.cache/code-coverage/a0b6ceb731de526ec5381f3e075c409ccffe45d06780b4df002b2622dc3cb0a1 differ diff --git a/.phpunit.cache/code-coverage/a199f392b3f2663e4ffe7ef9e25cab369a747ae1c83d817162e33604a49cd022 b/.phpunit.cache/code-coverage/a199f392b3f2663e4ffe7ef9e25cab369a747ae1c83d817162e33604a49cd022 new file mode 100644 index 0000000..37dd502 Binary files /dev/null and b/.phpunit.cache/code-coverage/a199f392b3f2663e4ffe7ef9e25cab369a747ae1c83d817162e33604a49cd022 differ diff --git a/.phpunit.cache/code-coverage/a9eaa4db72c4c55f4ded53d71ee680138165d7022b281359522a02eca17a8d7a b/.phpunit.cache/code-coverage/a9eaa4db72c4c55f4ded53d71ee680138165d7022b281359522a02eca17a8d7a new file mode 100644 index 0000000..f0c0173 Binary files /dev/null and b/.phpunit.cache/code-coverage/a9eaa4db72c4c55f4ded53d71ee680138165d7022b281359522a02eca17a8d7a differ diff --git a/.phpunit.cache/code-coverage/aaac9602c0fcb0e0feb213b67868831f0f9015b01eeb17d00176f99f11a9aa3d b/.phpunit.cache/code-coverage/aaac9602c0fcb0e0feb213b67868831f0f9015b01eeb17d00176f99f11a9aa3d new file mode 100644 index 0000000..168932a Binary files /dev/null and b/.phpunit.cache/code-coverage/aaac9602c0fcb0e0feb213b67868831f0f9015b01eeb17d00176f99f11a9aa3d differ diff --git a/.phpunit.cache/code-coverage/ab9eaac7d32860a2b4bde7b5bb569acc957b22baa9098e77e3bd8ac839883e9e b/.phpunit.cache/code-coverage/ab9eaac7d32860a2b4bde7b5bb569acc957b22baa9098e77e3bd8ac839883e9e new file mode 100644 index 0000000..9050eba Binary files /dev/null and b/.phpunit.cache/code-coverage/ab9eaac7d32860a2b4bde7b5bb569acc957b22baa9098e77e3bd8ac839883e9e differ diff --git a/.phpunit.cache/code-coverage/ade3d9eecd14b6521a7c4a5da29e3b42eb662171ad1a65590c172eb28ab8da44 b/.phpunit.cache/code-coverage/ade3d9eecd14b6521a7c4a5da29e3b42eb662171ad1a65590c172eb28ab8da44 new file mode 100644 index 0000000..7c294ee Binary files /dev/null and b/.phpunit.cache/code-coverage/ade3d9eecd14b6521a7c4a5da29e3b42eb662171ad1a65590c172eb28ab8da44 differ diff --git a/.phpunit.cache/code-coverage/ae1febd61d5c2a800b669e66d078e4c7fe9a2abfab1dd66a6d0551240008585f b/.phpunit.cache/code-coverage/ae1febd61d5c2a800b669e66d078e4c7fe9a2abfab1dd66a6d0551240008585f new file mode 100644 index 0000000..e006742 Binary files /dev/null and b/.phpunit.cache/code-coverage/ae1febd61d5c2a800b669e66d078e4c7fe9a2abfab1dd66a6d0551240008585f differ diff --git a/.phpunit.cache/code-coverage/b0090333aaf2e5272ce3bcc122d22a9088bd817358b8b970153b4b22e500f9ce b/.phpunit.cache/code-coverage/b0090333aaf2e5272ce3bcc122d22a9088bd817358b8b970153b4b22e500f9ce new file mode 100644 index 0000000..fabf72d Binary files /dev/null and b/.phpunit.cache/code-coverage/b0090333aaf2e5272ce3bcc122d22a9088bd817358b8b970153b4b22e500f9ce differ diff --git a/.phpunit.cache/code-coverage/b0e0e038ce1dcfea2232d8940e2bdc472f18bff3fce31d3e65e19f9eb7ea0ee3 b/.phpunit.cache/code-coverage/b0e0e038ce1dcfea2232d8940e2bdc472f18bff3fce31d3e65e19f9eb7ea0ee3 new file mode 100644 index 0000000..abe038d Binary files /dev/null and b/.phpunit.cache/code-coverage/b0e0e038ce1dcfea2232d8940e2bdc472f18bff3fce31d3e65e19f9eb7ea0ee3 differ diff --git a/.phpunit.cache/code-coverage/b191131ba5ded43e7194d2981d362a85edcba7e774d76e9afca5253dbb88a336 b/.phpunit.cache/code-coverage/b191131ba5ded43e7194d2981d362a85edcba7e774d76e9afca5253dbb88a336 new file mode 100644 index 0000000..961b59b Binary files /dev/null and b/.phpunit.cache/code-coverage/b191131ba5ded43e7194d2981d362a85edcba7e774d76e9afca5253dbb88a336 differ diff --git a/.phpunit.cache/code-coverage/b6685eadb39b3e99cdf681c8121911f0d8fda1b7f8acbe5c3f6c114887bb0395 b/.phpunit.cache/code-coverage/b6685eadb39b3e99cdf681c8121911f0d8fda1b7f8acbe5c3f6c114887bb0395 new file mode 100644 index 0000000..6563300 Binary files /dev/null and b/.phpunit.cache/code-coverage/b6685eadb39b3e99cdf681c8121911f0d8fda1b7f8acbe5c3f6c114887bb0395 differ diff --git a/.phpunit.cache/code-coverage/b7bc27e4393d1690d822ebc4a2bcfc4e5297cb360766bf10106d4034724cf9da b/.phpunit.cache/code-coverage/b7bc27e4393d1690d822ebc4a2bcfc4e5297cb360766bf10106d4034724cf9da new file mode 100644 index 0000000..4842ee1 Binary files /dev/null and b/.phpunit.cache/code-coverage/b7bc27e4393d1690d822ebc4a2bcfc4e5297cb360766bf10106d4034724cf9da differ diff --git a/.phpunit.cache/code-coverage/baf90f37f21b1b5fe14a0dc38b56b748fda59742318db809d2c4276b22b45d40 b/.phpunit.cache/code-coverage/baf90f37f21b1b5fe14a0dc38b56b748fda59742318db809d2c4276b22b45d40 new file mode 100644 index 0000000..7107a04 Binary files /dev/null and b/.phpunit.cache/code-coverage/baf90f37f21b1b5fe14a0dc38b56b748fda59742318db809d2c4276b22b45d40 differ diff --git a/.phpunit.cache/code-coverage/bfd4f49c9f98ab49f455e3e98f2f24c9da3ee7323d659b7e23a8226a227660ec b/.phpunit.cache/code-coverage/bfd4f49c9f98ab49f455e3e98f2f24c9da3ee7323d659b7e23a8226a227660ec new file mode 100644 index 0000000..ca7f34b Binary files /dev/null and b/.phpunit.cache/code-coverage/bfd4f49c9f98ab49f455e3e98f2f24c9da3ee7323d659b7e23a8226a227660ec differ diff --git a/.phpunit.cache/code-coverage/c1a535a49b929c1d688f4002228685acb1ef81f91eda26ef476d9e9ecda8357e b/.phpunit.cache/code-coverage/c1a535a49b929c1d688f4002228685acb1ef81f91eda26ef476d9e9ecda8357e new file mode 100644 index 0000000..035a0cc Binary files /dev/null and b/.phpunit.cache/code-coverage/c1a535a49b929c1d688f4002228685acb1ef81f91eda26ef476d9e9ecda8357e differ diff --git a/.phpunit.cache/code-coverage/c24db00ed6258bf639ddf6e8572d106e645f6cc8485b18cd4abf73dad60b2e5e b/.phpunit.cache/code-coverage/c24db00ed6258bf639ddf6e8572d106e645f6cc8485b18cd4abf73dad60b2e5e new file mode 100644 index 0000000..c972764 Binary files /dev/null and b/.phpunit.cache/code-coverage/c24db00ed6258bf639ddf6e8572d106e645f6cc8485b18cd4abf73dad60b2e5e differ diff --git a/.phpunit.cache/code-coverage/c314c3dedf5977fd97702c0912e4f54176c11b8fcbdb2cd1030ecdcdea7ef357 b/.phpunit.cache/code-coverage/c314c3dedf5977fd97702c0912e4f54176c11b8fcbdb2cd1030ecdcdea7ef357 new file mode 100644 index 0000000..7035bd0 Binary files /dev/null and b/.phpunit.cache/code-coverage/c314c3dedf5977fd97702c0912e4f54176c11b8fcbdb2cd1030ecdcdea7ef357 differ diff --git a/.phpunit.cache/code-coverage/c4c6afc616f19b4bf91b96d95fd99b1ffd3285d459801f2e9d935aa1e564c376 b/.phpunit.cache/code-coverage/c4c6afc616f19b4bf91b96d95fd99b1ffd3285d459801f2e9d935aa1e564c376 new file mode 100644 index 0000000..8ae42fd Binary files /dev/null and b/.phpunit.cache/code-coverage/c4c6afc616f19b4bf91b96d95fd99b1ffd3285d459801f2e9d935aa1e564c376 differ diff --git a/.phpunit.cache/code-coverage/c58c91423cc2123664be86bbc616b9bd6f5caff6e0db9d4356f52d324e51caeb b/.phpunit.cache/code-coverage/c58c91423cc2123664be86bbc616b9bd6f5caff6e0db9d4356f52d324e51caeb new file mode 100644 index 0000000..7f05038 Binary files /dev/null and b/.phpunit.cache/code-coverage/c58c91423cc2123664be86bbc616b9bd6f5caff6e0db9d4356f52d324e51caeb differ diff --git a/.phpunit.cache/code-coverage/c5ca95397c1446abad3b3ae1bdb3024d02c5ce42b477a90cdb46877b55e2e0d0 b/.phpunit.cache/code-coverage/c5ca95397c1446abad3b3ae1bdb3024d02c5ce42b477a90cdb46877b55e2e0d0 new file mode 100644 index 0000000..c8072b9 Binary files /dev/null and b/.phpunit.cache/code-coverage/c5ca95397c1446abad3b3ae1bdb3024d02c5ce42b477a90cdb46877b55e2e0d0 differ diff --git a/.phpunit.cache/code-coverage/c7a7583699ade0157248982af4a89a816cd63fa12981f92e1b3a1fc6ce621e69 b/.phpunit.cache/code-coverage/c7a7583699ade0157248982af4a89a816cd63fa12981f92e1b3a1fc6ce621e69 new file mode 100644 index 0000000..c793b44 Binary files /dev/null and b/.phpunit.cache/code-coverage/c7a7583699ade0157248982af4a89a816cd63fa12981f92e1b3a1fc6ce621e69 differ diff --git a/.phpunit.cache/code-coverage/c825970e34ec65e2e3959927c496e4eee29e7507f5c95e966e0438e43b3d7083 b/.phpunit.cache/code-coverage/c825970e34ec65e2e3959927c496e4eee29e7507f5c95e966e0438e43b3d7083 new file mode 100644 index 0000000..1c74441 Binary files /dev/null and b/.phpunit.cache/code-coverage/c825970e34ec65e2e3959927c496e4eee29e7507f5c95e966e0438e43b3d7083 differ diff --git a/.phpunit.cache/code-coverage/c83d59ed5c72ad3962ae82b93abd49504eb016fbbbdb9a0ff33c9f8cbbb33b68 b/.phpunit.cache/code-coverage/c83d59ed5c72ad3962ae82b93abd49504eb016fbbbdb9a0ff33c9f8cbbb33b68 new file mode 100644 index 0000000..fa69f94 Binary files /dev/null and b/.phpunit.cache/code-coverage/c83d59ed5c72ad3962ae82b93abd49504eb016fbbbdb9a0ff33c9f8cbbb33b68 differ diff --git a/.phpunit.cache/code-coverage/c9f61d746e5f8a533ed25a9b527856b3a6e93bd99da4202e41831cdd2a2b42ed b/.phpunit.cache/code-coverage/c9f61d746e5f8a533ed25a9b527856b3a6e93bd99da4202e41831cdd2a2b42ed new file mode 100644 index 0000000..669469a Binary files /dev/null and b/.phpunit.cache/code-coverage/c9f61d746e5f8a533ed25a9b527856b3a6e93bd99da4202e41831cdd2a2b42ed differ diff --git a/.phpunit.cache/code-coverage/ca47fcf77b416a5cbb5ccb765f6d89e4d8082f222376127d3796089c6ca27561 b/.phpunit.cache/code-coverage/ca47fcf77b416a5cbb5ccb765f6d89e4d8082f222376127d3796089c6ca27561 new file mode 100644 index 0000000..b23dda4 Binary files /dev/null and b/.phpunit.cache/code-coverage/ca47fcf77b416a5cbb5ccb765f6d89e4d8082f222376127d3796089c6ca27561 differ diff --git a/.phpunit.cache/code-coverage/d1a733f0983f6af25ea7e0b4240e1c918422bfe24d9339689d7c71d182cc276b b/.phpunit.cache/code-coverage/d1a733f0983f6af25ea7e0b4240e1c918422bfe24d9339689d7c71d182cc276b new file mode 100644 index 0000000..1e756cc Binary files /dev/null and b/.phpunit.cache/code-coverage/d1a733f0983f6af25ea7e0b4240e1c918422bfe24d9339689d7c71d182cc276b differ diff --git a/.phpunit.cache/code-coverage/d45ebca55eb939d53afa7d51a004e247753d0bd209ea2e64b9c9a994cc3fb047 b/.phpunit.cache/code-coverage/d45ebca55eb939d53afa7d51a004e247753d0bd209ea2e64b9c9a994cc3fb047 new file mode 100644 index 0000000..cbb98cd Binary files /dev/null and b/.phpunit.cache/code-coverage/d45ebca55eb939d53afa7d51a004e247753d0bd209ea2e64b9c9a994cc3fb047 differ diff --git a/.phpunit.cache/code-coverage/d68e23eace34afc8d8c99fbc3679f1135ddd9dc7b0023db6e997b4c4e9e79fe3 b/.phpunit.cache/code-coverage/d68e23eace34afc8d8c99fbc3679f1135ddd9dc7b0023db6e997b4c4e9e79fe3 new file mode 100644 index 0000000..c52ddff Binary files /dev/null and b/.phpunit.cache/code-coverage/d68e23eace34afc8d8c99fbc3679f1135ddd9dc7b0023db6e997b4c4e9e79fe3 differ diff --git a/.phpunit.cache/code-coverage/d939095132f3d7f8c8b552ea2d1906e2adfc1b965cf2a4d66b3f580c8e76547f b/.phpunit.cache/code-coverage/d939095132f3d7f8c8b552ea2d1906e2adfc1b965cf2a4d66b3f580c8e76547f new file mode 100644 index 0000000..ce4bfbc Binary files /dev/null and b/.phpunit.cache/code-coverage/d939095132f3d7f8c8b552ea2d1906e2adfc1b965cf2a4d66b3f580c8e76547f differ diff --git a/.phpunit.cache/code-coverage/d95a9cbd8669ffcb6b820a6ff37267cbe26e40a1b95eb765ad4eec4f749e628e b/.phpunit.cache/code-coverage/d95a9cbd8669ffcb6b820a6ff37267cbe26e40a1b95eb765ad4eec4f749e628e new file mode 100644 index 0000000..911b0e5 Binary files /dev/null and b/.phpunit.cache/code-coverage/d95a9cbd8669ffcb6b820a6ff37267cbe26e40a1b95eb765ad4eec4f749e628e differ diff --git a/.phpunit.cache/code-coverage/daff891fb5a5eb6972728a99f26bac15836805aa39f77ebdb8b94f2b5adf21d1 b/.phpunit.cache/code-coverage/daff891fb5a5eb6972728a99f26bac15836805aa39f77ebdb8b94f2b5adf21d1 new file mode 100644 index 0000000..799ff30 Binary files /dev/null and b/.phpunit.cache/code-coverage/daff891fb5a5eb6972728a99f26bac15836805aa39f77ebdb8b94f2b5adf21d1 differ diff --git a/.phpunit.cache/code-coverage/dbbf720d51c10b780cb2480e7e1277ae0d2e895c35a37b3ada60cd2ec817322a b/.phpunit.cache/code-coverage/dbbf720d51c10b780cb2480e7e1277ae0d2e895c35a37b3ada60cd2ec817322a new file mode 100644 index 0000000..97562e4 Binary files /dev/null and b/.phpunit.cache/code-coverage/dbbf720d51c10b780cb2480e7e1277ae0d2e895c35a37b3ada60cd2ec817322a differ diff --git a/.phpunit.cache/code-coverage/dbee7cc3d8fe9c2f3a948d2f25a6d40b23dcb101b90dbb6863cf4356ee6abc81 b/.phpunit.cache/code-coverage/dbee7cc3d8fe9c2f3a948d2f25a6d40b23dcb101b90dbb6863cf4356ee6abc81 new file mode 100644 index 0000000..2704edc Binary files /dev/null and b/.phpunit.cache/code-coverage/dbee7cc3d8fe9c2f3a948d2f25a6d40b23dcb101b90dbb6863cf4356ee6abc81 differ diff --git a/.phpunit.cache/code-coverage/e021dc2240df02ca60c73b23f8ffbd9a925cd77cba232310c8f466f2f7bc52fb b/.phpunit.cache/code-coverage/e021dc2240df02ca60c73b23f8ffbd9a925cd77cba232310c8f466f2f7bc52fb new file mode 100644 index 0000000..628a275 Binary files /dev/null and b/.phpunit.cache/code-coverage/e021dc2240df02ca60c73b23f8ffbd9a925cd77cba232310c8f466f2f7bc52fb differ diff --git a/.phpunit.cache/code-coverage/e3913778579707d128ac1872a7419c675a7732768ac430d5451119724922099a b/.phpunit.cache/code-coverage/e3913778579707d128ac1872a7419c675a7732768ac430d5451119724922099a new file mode 100644 index 0000000..66ac8f1 Binary files /dev/null and b/.phpunit.cache/code-coverage/e3913778579707d128ac1872a7419c675a7732768ac430d5451119724922099a differ diff --git a/.phpunit.cache/code-coverage/e65deeac127fba767ae5ae55049e86c07532d75be819d5053ee2d586b099f682 b/.phpunit.cache/code-coverage/e65deeac127fba767ae5ae55049e86c07532d75be819d5053ee2d586b099f682 new file mode 100644 index 0000000..412aec6 Binary files /dev/null and b/.phpunit.cache/code-coverage/e65deeac127fba767ae5ae55049e86c07532d75be819d5053ee2d586b099f682 differ diff --git a/.phpunit.cache/code-coverage/e6f197e8760f3c394fc7745531dd56b2c602676ace60624498d2769afe91d22d b/.phpunit.cache/code-coverage/e6f197e8760f3c394fc7745531dd56b2c602676ace60624498d2769afe91d22d new file mode 100644 index 0000000..6d86bb1 Binary files /dev/null and b/.phpunit.cache/code-coverage/e6f197e8760f3c394fc7745531dd56b2c602676ace60624498d2769afe91d22d differ diff --git a/.phpunit.cache/code-coverage/e7780b16fef5245c9092760d31680f0f1bc6a210ec9ed15c7bf65b2aefc52164 b/.phpunit.cache/code-coverage/e7780b16fef5245c9092760d31680f0f1bc6a210ec9ed15c7bf65b2aefc52164 new file mode 100644 index 0000000..269826f Binary files /dev/null and b/.phpunit.cache/code-coverage/e7780b16fef5245c9092760d31680f0f1bc6a210ec9ed15c7bf65b2aefc52164 differ diff --git a/.phpunit.cache/code-coverage/f0c35c54364b5871f636e3e7ec863c5e82dbcde195da948ab3f7f7180ca04d2d b/.phpunit.cache/code-coverage/f0c35c54364b5871f636e3e7ec863c5e82dbcde195da948ab3f7f7180ca04d2d new file mode 100644 index 0000000..fa6d07c Binary files /dev/null and b/.phpunit.cache/code-coverage/f0c35c54364b5871f636e3e7ec863c5e82dbcde195da948ab3f7f7180ca04d2d differ diff --git a/.phpunit.cache/code-coverage/f224d7207aa3ede9db73c2c28e2f5ee8cfc27e064a5e3b7edf830fa8f503b972 b/.phpunit.cache/code-coverage/f224d7207aa3ede9db73c2c28e2f5ee8cfc27e064a5e3b7edf830fa8f503b972 new file mode 100644 index 0000000..8524b71 Binary files /dev/null and b/.phpunit.cache/code-coverage/f224d7207aa3ede9db73c2c28e2f5ee8cfc27e064a5e3b7edf830fa8f503b972 differ diff --git a/.phpunit.cache/code-coverage/f2d9c9dc06b9b8cbad22ffc537cea22fe5b9c5506d945213539fbcd1e40c4784 b/.phpunit.cache/code-coverage/f2d9c9dc06b9b8cbad22ffc537cea22fe5b9c5506d945213539fbcd1e40c4784 new file mode 100644 index 0000000..266b34e Binary files /dev/null and b/.phpunit.cache/code-coverage/f2d9c9dc06b9b8cbad22ffc537cea22fe5b9c5506d945213539fbcd1e40c4784 differ diff --git a/.phpunit.cache/code-coverage/f2dcb13613cdffe35135dd228dc4a4ffc10b83336f58aacfb52e31a52f78d668 b/.phpunit.cache/code-coverage/f2dcb13613cdffe35135dd228dc4a4ffc10b83336f58aacfb52e31a52f78d668 new file mode 100644 index 0000000..0f90b78 Binary files /dev/null and b/.phpunit.cache/code-coverage/f2dcb13613cdffe35135dd228dc4a4ffc10b83336f58aacfb52e31a52f78d668 differ diff --git a/.phpunit.cache/code-coverage/f33a6d3ba7bc33ca815a732fe34bc5d7b177a7bd974c2ad4fa69f22571b40f96 b/.phpunit.cache/code-coverage/f33a6d3ba7bc33ca815a732fe34bc5d7b177a7bd974c2ad4fa69f22571b40f96 new file mode 100644 index 0000000..e22174a Binary files /dev/null and b/.phpunit.cache/code-coverage/f33a6d3ba7bc33ca815a732fe34bc5d7b177a7bd974c2ad4fa69f22571b40f96 differ diff --git a/.phpunit.cache/code-coverage/f3f6a96eaddd5903789e76e131ad6bfcbfc6507c696910604cf78ba971799f4b b/.phpunit.cache/code-coverage/f3f6a96eaddd5903789e76e131ad6bfcbfc6507c696910604cf78ba971799f4b new file mode 100644 index 0000000..e2c93e5 Binary files /dev/null and b/.phpunit.cache/code-coverage/f3f6a96eaddd5903789e76e131ad6bfcbfc6507c696910604cf78ba971799f4b differ diff --git a/.phpunit.cache/code-coverage/f4c9e78af495fc9a3493f8116f52e4730a273b188caf203ce93a67b5fe241228 b/.phpunit.cache/code-coverage/f4c9e78af495fc9a3493f8116f52e4730a273b188caf203ce93a67b5fe241228 new file mode 100644 index 0000000..aa82d46 Binary files /dev/null and b/.phpunit.cache/code-coverage/f4c9e78af495fc9a3493f8116f52e4730a273b188caf203ce93a67b5fe241228 differ diff --git a/.phpunit.cache/code-coverage/f5be4ace0b7edcc86159fd80632118a5daf81b579dc0eba4914369bb3b3d904e b/.phpunit.cache/code-coverage/f5be4ace0b7edcc86159fd80632118a5daf81b579dc0eba4914369bb3b3d904e new file mode 100644 index 0000000..841100b Binary files /dev/null and b/.phpunit.cache/code-coverage/f5be4ace0b7edcc86159fd80632118a5daf81b579dc0eba4914369bb3b3d904e differ diff --git a/.phpunit.cache/code-coverage/fc0a45e891524a6d4876fa5c588334c5dc21f981e15b190264cec347569df71e b/.phpunit.cache/code-coverage/fc0a45e891524a6d4876fa5c588334c5dc21f981e15b190264cec347569df71e new file mode 100644 index 0000000..6563300 Binary files /dev/null and b/.phpunit.cache/code-coverage/fc0a45e891524a6d4876fa5c588334c5dc21f981e15b190264cec347569df71e differ diff --git a/.phpunit.cache/code-coverage/fc0a782ea26827c08f22dbb4c05b4c237e21ece7a905a21accce486accfbfeaa b/.phpunit.cache/code-coverage/fc0a782ea26827c08f22dbb4c05b4c237e21ece7a905a21accce486accfbfeaa new file mode 100644 index 0000000..c40d879 Binary files /dev/null and b/.phpunit.cache/code-coverage/fc0a782ea26827c08f22dbb4c05b4c237e21ece7a905a21accce486accfbfeaa differ diff --git a/.phpunit.cache/test-results b/.phpunit.cache/test-results new file mode 100644 index 0000000..9579b5b --- /dev/null +++ b/.phpunit.cache/test-results @@ -0,0 +1 @@ +{"version":1,"defects":[],"times":{"SimpleTest::testGraph":0.027}} \ No newline at end of file diff --git a/.phpunit.result.cache b/.phpunit.result.cache index 9e3fee5..fef1b4b 100644 --- a/.phpunit.result.cache +++ b/.phpunit.result.cache @@ -1 +1 @@ -{"version":1,"defects":[],"times":{"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testIfArticleCountInXmlCorrect":0.018,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetArticleByName":0.017,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetOptionById":0.02,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetPrintableValuesFromSavedParamsWithCleaning":0.021,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetOptionsForArticle":0.02,"PSC\\Library\\Calc\\Tests\\Customer\\AA\\CalcTest::testAuflageBelow100":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\AA\\CalcTest::testAuflageBelow100AndMaterial160":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\AA\\CalcTest::testAuflageBelow100AndMaterial250":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\G\\CalcTest::testIfDefaultPriceIsOk":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\G\\CalcTest::testIfDisplayValues":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\G\\CalcTest::testIfAjaxValues":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\KK\\CalcTest::testDefault":0.007,"PSC\\Library\\Calc\\Tests\\Customer\\KK\\CalcTest::testCalcValue":0.007,"PSC\\Library\\Calc\\Tests\\Customer\\Q\\CalcTest::testCalcPrice":0.01,"PSC\\Library\\Calc\\Tests\\Customer\\Q\\CalcTest::testCalcPriceDefaultChange":0.012,"PSC\\Library\\Calc\\Tests\\Customer\\Q\\CalcTest::testCalcPriceDefaultChangeSecound":0.022,"PSC\\Library\\Calc\\Tests\\Customer\\X\\CalcTest::testIfPaperDbGrenze":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\X\\CalcTest::testIfPaperDbGrenzeVal":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\X\\CalcTest::testIfPaperDbGrenzeVal3":0.006,"PSC\\Library\\Calc\\Tests\\Parse\\Edge\\ContainerTest::testIfLoadsCorrect":0.005,"PSC\\Library\\Calc\\Tests\\Option\\Type\\RadioboxTest::testIfCorrectType":0.004,"PSC\\Library\\Calc\\Tests\\Option\\Type\\TextareaTest::testIfCorrectType":0.005,"PSC\\Library\\Calc\\Tests\\Option\\Type\\TextareaTest::testIfCorrectAttributes":0.005,"PSC\\Library\\Calc\\Tests\\Recursiv\\FirstTest::testIfArticleCountIsCorrect":0.006,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfArticleCountIsCorrect":0.003,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfParserGetArticleCorrect":0.006,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcArticleCorrect":0.006,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcReturnsPrice":0.006,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcReturnsPriceWithEdge":0.006,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcCompletePrice":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\CC\\CalcTest::testContainerSelectFalse":0.005,"PSC\\Library\\Calc\\Tests\\Customer\\CC\\CalcTest::testContainerSelectBinden":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\CC\\CalcTest::testContainerSelectIgnoreDefaultBinden":0.007,"PSC\\Library\\Calc\\Tests\\Customer\\HH\\CalcTest::testPrice":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\HH\\CalcTest::testDefaultSelectValues":0.007,"PSC\\Library\\Calc\\Tests\\Customer\\JJ\\CalcTest::testPrice":0.284,"PSC\\Library\\Calc\\Tests\\Customer\\T\\CalcTest::testIfDefaultPriceIsOk":0.019,"PSC\\Library\\Calc\\Tests\\Customer\\Y\\CalcTest::testPrice":1.527,"PSC\\Library\\Calc\\Tests\\Article\\SimpleXmlTest::testIfArticleCountInXmlCorrect":0.008,"PSC\\Library\\Calc\\Tests\\Article\\SimpleXmlTest::testIfArticleCountInXmlCorrectWith2Article":0.008,"PSC\\Library\\Calc\\Tests\\Article\\SimpleXmlTest::testGetArticleByName":0.007,"PSC\\Library\\Calc\\Tests\\Complex\\SecondTest::testIfArticleCountIsCorrect":0.004,"PSC\\Library\\Calc\\Tests\\Complex\\SecondTest::testIfDefaultPriceIsOk":0.042,"PSC\\Library\\Calc\\Tests\\Customer\\B\\CalcTest::testIfDefaultPriceIsOk":0.133,"PSC\\Library\\Calc\\Tests\\Customer\\EE\\CalcTest::testPrice":0.013,"PSC\\Library\\Calc\\Tests\\Customer\\EE\\CalcTest::testPriceAuflage2":0.014,"PSC\\Library\\Calc\\Tests\\Customer\\J\\CalcTest::testIfDefaultPriceIsOk":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\K\\CalcTest::testCalcPlan":0.019,"PSC\\Library\\Calc\\Tests\\Customer\\N\\CalcTest::testPreCalcOption":0.004,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CheckboxTest::testCalcDefault":0.021,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CheckboxTest::testCalcOnly2":0.015,"PSC\\Library\\Calc\\Tests\\Customer\\V\\CalcTest::testIfDefaultPriceIsOk":1.034,"PSC\\Library\\Calc\\Tests\\CMS\\Type\\Container\\ColumnTest::testRowColumn":0.008,"PSC\\Library\\Calc\\Tests\\CMS\\Type\\Container\\ColumnTest::testTextOption":0.007,"PSC\\Library\\Calc\\Tests\\CMS\\Type\\Container\\ColumnTest::testInputOption":0.006,"PSC\\Library\\Calc\\Tests\\CMS\\Type\\Container\\ColumnTest::testSubRowsOption":0.006,"PSC\\Library\\Calc\\Tests\\Contact\\Account\\CalcTest::testPriceDefault":0.006,"PSC\\Library\\Calc\\Tests\\Contact\\Account\\CalcTest::testPrice1":0.007,"PSC\\Library\\Calc\\Tests\\Contact\\Account\\CalcTest::testPriceAccountNotExists":0.006,"PSC\\Library\\Calc\\Tests\\Contact\\Account\\CalcTest::testPrice123":0.006,"PSC\\Library\\Calc\\Tests\\Contact\\Account\\CalcTest::testPrice334":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\H\\CalcTest::testIfDefaultPriceIsOk":0.016,"PSC\\Library\\Calc\\Tests\\Customer\\H\\CalcTest::testIfDisplayValues":0.016,"PSC\\Library\\Calc\\Tests\\Customer\\H\\CalcTest::testIfAjaxValues":0.016,"PSC\\Library\\Calc\\Tests\\Customer\\LL\\CalcTest::testChangeDefault":0.007,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcComplexTest::testAuflage500":1.408,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcComplexTest::testAndereProduktArt2":0.729,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcComplexTest::testAndereProduktArt3":0.681,"PSC\\Library\\Calc\\Tests\\CMS\\Type\\Text\\HeadlineTest::testHeadLine1Option":0.006,"PSC\\Library\\Calc\\Tests\\CMS\\Type\\Text\\HeadlineTest::testHeadLine5Option":0.01,"PSC\\Library\\Calc\\Tests\\Complex\\FirstTest::testIfArticleCountIsCorrect":0.004,"PSC\\Library\\Calc\\Tests\\Complex\\FirstTest::testIfDefaultPriceIsOk":0.372,"PSC\\Library\\Calc\\Tests\\Customer\\F\\CalcTest::testIfDefaultPriceIsOk":0.042,"PSC\\Library\\Calc\\Tests\\Customer\\F\\CalcTest::testIfOtherPriceIsOk":0.052,"PSC\\Library\\Calc\\Tests\\Customer\\F\\CalcTest::testIfOtherPrice2IsOk":0.065,"PSC\\Library\\Calc\\Tests\\Customer\\M\\CalcTest::testDefaultOption":0.005,"PSC\\Library\\Calc\\Tests\\Customer\\M\\CalcTest::testCalcValues":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\R\\RadioboxTest::testCalcDefault":0.013,"PSC\\Library\\Calc\\Tests\\Customer\\R\\RadioboxTest::testCalcOnly2":0.013,"PSC\\Library\\Calc\\Tests\\Customer\\W\\CalcTest::testIfDefaultPriceIsOk":0.016,"PSC\\Library\\Calc\\Tests\\Customer\\W\\CalcTest::testMvWestpomPriceIsOk":0.017,"PSC\\Library\\Calc\\Tests\\Json\\FromXmlToJsonAndBackTest::testConvertComplexCalcBackAndForth":0.013,"PSC\\Library\\Calc\\Tests\\Option\\Type\\CheckboxTest::testIfCorrectType":0.005,"PSC\\Library\\Calc\\Tests\\Option\\Type\\SelectTest::testIfCorrectType":0.012,"PSC\\Library\\Calc\\Tests\\Option\\Type\\SelectTest::testIfCorrectAttributes":0.012,"PSC\\Library\\Calc\\Tests\\Option\\Type\\SelectTest::testIfPaperContainerReturnsCorrectItems":0.004,"PSC\\Library\\Calc\\Tests\\Option\\Type\\SelectTest::testIfSelectWithPaperContainerModeReturnsCorrectOpt":0.013,"PSC\\Library\\Calc\\Tests\\Option\\Type\\SelectTest::testIfSelectWithColorModePantoneReturnsCorrectOpt":0.014,"PSC\\Library\\Calc\\Tests\\Option\\Type\\SelectTest::testIfSelectWithColorModeReturnsCorrectOpt":0.007,"PSC\\Library\\Calc\\Tests\\CMS\\Type\\Text\\TextTest::testTextOption":0.006,"PSC\\Library\\Calc\\Tests\\CMS\\Type\\Text\\TextTest::testText2Option":0.006,"PSC\\Library\\Calc\\Tests\\Complex\\FiveTest::testIfArticleCountIsCorrect":0.003,"PSC\\Library\\Calc\\Tests\\Complex\\FiveTest::testIfDefaultPriceIsOk":0.13,"PSC\\Library\\Calc\\Tests\\Customer\\BB\\CalcTest::testPattern":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\BB\\CalcTest::testPlaceHolder":0.004,"PSC\\Library\\Calc\\Tests\\Customer\\BB\\CalcTest::testFormat1":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\BB\\CalcTest::testFormat2":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\BB\\CalcTest::testFormat3":0.007,"PSC\\Library\\Calc\\Tests\\Customer\\JJ\\CalcFasterTest::testPrice":0.275,"PSC\\Library\\Calc\\Tests\\Customer\\S\\CalcTest::testCalcPrice":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\U\\CalcTest::testIfDefaultPriceIsOk":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\Z\\CalcTest::testPrice":1.782,"PSC\\Library\\Calc\\Tests\\Customer\\Z\\CalcTest::testPriceProductArt":1.223,"PSC\\Library\\Calc\\Tests\\Calc\\ColorDBTest::testIfOptionsNotValid":0.008,"PSC\\Library\\Calc\\Tests\\CalcValue\\SimpleTest::testIfParseValue":0.006,"PSC\\Library\\Calc\\Tests\\Complex\\PaperSavedTest::testIfArticleCountIsCorrect":0.004,"PSC\\Library\\Calc\\Tests\\Complex\\PaperSavedTest::testIfDefaultPriceIsOk":0.371,"PSC\\Library\\Calc\\Tests\\Customer\\GG\\CalcTest::testPrice":0.064,"PSC\\Library\\Calc\\Tests\\Customer\\GG\\CalcTest::testColorSelect":0.062,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcTest::testOptionAuswahl330":0.092,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcTest::testOptionAuswahl331":0.134,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcTest::testOptionCheckbox":0.089,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcTest::testOptionDefaultCheckbox":0.194,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcTest::testOptionCalcCheckbox":0.179,"PSC\\Library\\Calc\\Tests\\Calc\\OptionsRemoveTest::testIfArticleCountIsCorrect":0.003,"PSC\\Library\\Calc\\Tests\\Calc\\OptionsRemoveTest::testIfParserGetArticleCorrect":0.006,"PSC\\Library\\Calc\\Tests\\Calc\\OptionsRemoveTest::testIfOptionsNotValid":0.006,"PSC\\Library\\Calc\\Tests\\Complex\\SixTest::testIfArticleCountIsCorrect":0.003,"PSC\\Library\\Calc\\Tests\\Complex\\SixTest::testIfSelectedOptionsCorrect":0.008,"PSC\\Library\\Calc\\Tests\\Complex\\SixTest::testIfCalcCorrect":0.008,"PSC\\Library\\Calc\\Tests\\Customer\\DD\\CalcTest::testPrice":2.334,"PSC\\Library\\Calc\\Tests\\Customer\\DD\\CalcTest::testPricePaper":1.24,"PSC\\Library\\Calc\\Tests\\Customer\\DD\\CalcTest::testPricePaper1":1.12,"PSC\\Library\\Calc\\Tests\\Calc\\PreisPauschaleTest::testIfArticleCountIsCorrect":0.003,"PSC\\Library\\Calc\\Tests\\Calc\\PreisPauschaleTest::testPreisPauschaleCalc":0.006,"PSC\\Library\\Calc\\Tests\\Complex\\FourTest::testIfArticleCountIsCorrect":0.004,"PSC\\Library\\Calc\\Tests\\Complex\\FourTest::testIfDefaultPriceIsOk":0.038,"PSC\\Library\\Calc\\Tests\\Customer\\A\\CalcTest::testIfDefaultPriceIsOk":0.335,"PSC\\Library\\Calc\\Tests\\Customer\\A\\CalcTest::testVariant1":0.358,"PSC\\Library\\Calc\\Tests\\Customer\\A\\CalcTest::testVariant2":0.354,"PSC\\Library\\Calc\\Tests\\General\\LoadTest::testSimpleLoadXmlFromString":0.008,"PSC\\Library\\Calc\\Tests\\General\\LoadTest::testWrongEval":0.016,"PSC\\Library\\Calc\\Tests\\Article\\papierDbWithFormelTest::testSelectWithGrenzen":0.006,"PSC\\Library\\Calc\\Tests\\Option\\Type\\InputTest::testIfCorrectType":0.005,"PSC\\Library\\Calc\\Tests\\Option\\Type\\InputTest::testIfCorrectAttributes":0.005,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseGroupTest::testIfCorrectType":0.004,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseGroupTest::testIfCountCorrect":0.004,"PSC\\Library\\Calc\\Tests\\Type\\Text\\CalcTest::testTextGrenzen":0.004,"PSC\\Library\\Calc\\Tests\\Type\\Text\\CalcTest::testTextGrenzenChanges":0.003,"PSC\\Library\\Calc\\Tests\\Calc\\PriceMinTest::testIfArticleCountIsCorrect":0.003,"PSC\\Library\\Calc\\Tests\\Calc\\PriceMinTest::testIfParserGetMinPrice":0.007,"PSC\\Library\\Calc\\Tests\\Calc\\PriceMinTest::testIfCalcReturnsGrenzeWithFormular":0.007,"PSC\\Library\\Calc\\Tests\\Complex\\ThirdTest::testIfArticleCountIsCorrect":0.004,"PSC\\Library\\Calc\\Tests\\Complex\\ThirdTest::testIfDefaultPriceIsOk":0.023,"PSC\\Library\\Calc\\Tests\\Customer\\C\\CalcTest::testIfDefaultPriceIsOk":0.313,"PSC\\Library\\Calc\\Tests\\Customer\\II\\CalcTest::testPrice":0.126,"PSC\\Library\\Calc\\Tests\\Customer\\O\\CalcTest::testPreCalcOption":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\R\\RadioboxCalcTest::testCalcDefault":0.012,"PSC\\Library\\Calc\\Tests\\Customer\\R\\RadioboxCalcTest::testCalcZweiseitig":0.012,"PSC\\Library\\Calc\\Tests\\Customer\\R\\RadioboxCalcTest::testCalcZweiseitig20":0.014,"PSC\\Library\\Calc\\Tests\\General\\DisplayGroupTest::testDisplayGroup":0.006,"PSC\\Library\\Calc\\Tests\\Json\\FromJsonTest::testFromJson":0.025,"PSC\\Library\\Calc\\Tests\\Parse\\Edge\\SimpleTest::testIfOneValue":0.005,"PSC\\Library\\Calc\\Tests\\Parse\\Edge\\SimpleTest::testIfRegionFrom":0.003,"PSC\\Library\\Calc\\Tests\\Parse\\Edge\\SimpleTest::testIfRegionFromTo":0.004,"PSC\\Library\\Calc\\Tests\\Parse\\Edge\\SimpleTest::testIfCommaSeperated":0.006,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseVariantTest::testIfCorrectType":0.004,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseVariantTest::testIfNameIsCorrect":0.003,"PSC\\Library\\Calc\\Tests\\testTest::testNotOk":0.003,"PSC\\Library\\Calc\\Tests\\testTest::testOk":0.002,"PSC\\Library\\Calc\\Tests\\CalcValue\\AddCalcValuesTest::testIfParseValue":0.007,"PSC\\Library\\Calc\\Tests\\Complex\\EightTest::testIfWeightIsCorrect":0.014,"PSC\\Library\\Calc\\Tests\\Complex\\EightTest::testIfSingleWeightIsCorrect":0.013,"PSC\\Library\\Calc\\Tests\\Complex\\EightTest::testIfDefaultPriceIsOk":0.012,"PSC\\Library\\Calc\\Tests\\Contact\\AccountType\\CalcTest::testPriceWithout":0.006,"PSC\\Library\\Calc\\Tests\\Contact\\AccountType\\CalcTest::testPrice":0.006,"PSC\\Library\\Calc\\Tests\\Contact\\AccountType\\CalcTest::testPriceCompany":0.006,"PSC\\Library\\Calc\\Tests\\Contact\\AccountType\\CalcTest::testPriceAsso":0.007,"PSC\\Library\\Calc\\Tests\\Customer\\FF\\CalcTest::testPrice":0.009,"PSC\\Library\\Calc\\Tests\\Customer\\FF\\CalcTest::testPriceExpress":0.009,"PSC\\Library\\Calc\\Tests\\Customer\\FF\\CalcTest::testPriceFlexo":0.007,"PSC\\Library\\Calc\\Tests\\Customer\\L\\CalcTest::testCalcPlan":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\L\\CalcTest::testCalcVarPlan":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\P\\CalcTest::testCalcPrice":0.054,"PSC\\Library\\Calc\\Tests\\Customer\\P\\CalcTest::testHelpTextAndLink":0.053,"PSC\\Library\\Calc\\Tests\\Customer\\P\\CalcTest::testMaxBreite":0.079,"PSC\\Library\\Calc\\Tests\\Customer\\P\\CalcTest::testMinBreite":0.095,"PSC\\Library\\Calc\\Tests\\Article\\selectWithGrenzenTest::testSelectWithGrenzen":0.006,"PSC\\Library\\Calc\\Tests\\Article\\selectWithGrenzenTest::testSelectWithGrenzenParams":0.005,"PSC\\Library\\Calc\\Tests\\Option\\Type\\TextTest::testIfCorrectType":0.005,"PSC\\Library\\Calc\\Tests\\Option\\Type\\TextTest::testIfCorrectAttributes":0.004,"PSC\\Library\\Calc\\Tests\\PreCalc\\ValueTest::testIfCorrectType":0.003,"PSC\\Library\\Calc\\Tests\\PreCalc\\ValueTest::testIfCorret":0.003,"PSC\\Library\\Calc\\Tests\\CalcValue\\ComplexTest::testIfParseValue":0.172,"PSC\\Library\\Calc\\Tests\\CalcValue\\ComplexTest::testIfPaperGrammaturValue":0.187,"PSC\\Library\\Calc\\Tests\\Customer\\D\\CalcTest::testIfDefaultPriceIsOk":0.035,"PSC\\Library\\Calc\\Tests\\Customer\\E\\CalcTest::testIfDefaultPriceIsOk":0.017,"PSC\\Library\\Calc\\Tests\\Customer\\E\\CalcTest::testIfAnwender2PriceIsOk":0.016,"PSC\\Library\\Calc\\Tests\\Customer\\I\\CalcTest::testIfDefaultPriceIsOk":0.348,"PSC\\Library\\Calc\\Tests\\Customer\\I\\CalcTest::testIf6000PriceIsOk":0.351,"PSC\\Library\\Calc\\Tests\\Customer\\I\\CalcTest::testIfDruckfarbenPriceIsOk":0.353,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseTest::testIfCorrectType":0.004,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseTest::testIfCountIsCorrect":0.004,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseTest::testText":0.004}} \ No newline at end of file +{"version":1,"defects":[],"times":{"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testIfArticleCountInXmlCorrect":0.008,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetArticleByName":0.009,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetOptionById":0.009,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetPrintableValuesFromSavedParamsWithCleaning":0.009,"PSC\\Library\\Calc\\Tests\\Article\\CalendarXmlTest::testGetOptionsForArticle":0.009,"PSC\\Library\\Calc\\Tests\\Customer\\AA\\CalcTest::testAuflageBelow100":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\AA\\CalcTest::testAuflageBelow100AndMaterial160":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\AA\\CalcTest::testAuflageBelow100AndMaterial250":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\F\\CalcTest::testIfDefaultPriceIsOk":0.027,"PSC\\Library\\Calc\\Tests\\Customer\\F\\CalcTest::testIfOtherPriceIsOk":0.028,"PSC\\Library\\Calc\\Tests\\Customer\\F\\CalcTest::testIfOtherPrice2IsOk":0.026,"PSC\\Library\\Calc\\Tests\\Customer\\O\\CalcTest::testPreCalcOption":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\R\\RadioboxCalcTest::testCalcDefault":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\R\\RadioboxCalcTest::testCalcZweiseitig":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\R\\RadioboxCalcTest::testCalcZweiseitig20":0.006,"PSC\\Library\\Calc\\Tests\\General\\LoadTest::testSimpleLoadXmlFromString":0.004,"PSC\\Library\\Calc\\Tests\\General\\LoadTest::testWrongEval":0.005,"PSC\\Library\\Calc\\Tests\\Json\\FromXmlToJsonAndBackTest::testConvertComplexCalcBackAndForth":0.005,"PSC\\Library\\Calc\\Tests\\Option\\Type\\CheckboxTest::testIfCorrectType":0.003,"PSC\\Library\\Calc\\Tests\\Option\\Type\\TextTest::testIfCorrectType":0.002,"PSC\\Library\\Calc\\Tests\\Option\\Type\\TextTest::testIfCorrectAttributes":0.003,"PSC\\Library\\Calc\\Tests\\PreCalc\\ValueTest::testIfCorrectType":0.002,"PSC\\Library\\Calc\\Tests\\PreCalc\\ValueTest::testIfCorret":0.002,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfArticleCountIsCorrect":0.002,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfParserGetArticleCorrect":0.003,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcArticleCorrect":0.003,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcReturnsPrice":0.003,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcReturnsPriceWithEdge":0.003,"PSC\\Library\\Calc\\Tests\\Article\\Complete1Test::testIfCalcCompletePrice":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\CC\\CalcTest::testContainerSelectFalse":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\CC\\CalcTest::testContainerSelectBinden":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\CC\\CalcTest::testContainerSelectIgnoreDefaultBinden":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\HH\\CalcTest::testPrice":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\HH\\CalcTest::testDefaultSelectValues":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\JJ\\CalcTest::testPrice":0.158,"PSC\\Library\\Calc\\Tests\\Customer\\T\\CalcTest::testIfDefaultPriceIsOk":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\W\\CalcTest::testIfDefaultPriceIsOk":0.007,"PSC\\Library\\Calc\\Tests\\Customer\\W\\CalcTest::testMvWestpomPriceIsOk":0.007,"PSC\\Library\\Calc\\Tests\\Json\\FromJsonTest::testFromJson":0.012,"PSC\\Library\\Calc\\Tests\\Parse\\Edge\\SimpleTest::testIfOneValue":0.002,"PSC\\Library\\Calc\\Tests\\Parse\\Edge\\SimpleTest::testIfRegionFrom":0.003,"PSC\\Library\\Calc\\Tests\\Parse\\Edge\\SimpleTest::testIfRegionFromTo":0.002,"PSC\\Library\\Calc\\Tests\\Parse\\Edge\\SimpleTest::testIfCommaSeperated":0.003,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseVariantTest::testIfCorrectType":0.002,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseVariantTest::testIfNameIsCorrect":0.002,"PSC\\Library\\Calc\\Tests\\Article\\SimpleXmlTest::testIfArticleCountInXmlCorrect":0.004,"PSC\\Library\\Calc\\Tests\\Article\\SimpleXmlTest::testIfArticleCountInXmlCorrectWith2Article":0.003,"PSC\\Library\\Calc\\Tests\\Article\\SimpleXmlTest::testGetArticleByName":0.004,"PSC\\Library\\Calc\\Tests\\Complex\\SecondTest::testIfArticleCountIsCorrect":0.002,"PSC\\Library\\Calc\\Tests\\Complex\\SecondTest::testIfDefaultPriceIsOk":0.017,"PSC\\Library\\Calc\\Tests\\Customer\\B\\CalcTest::testIfDefaultPriceIsOk":0.058,"PSC\\Library\\Calc\\Tests\\Customer\\FF\\CalcTest::testPrice":0.004,"PSC\\Library\\Calc\\Tests\\Customer\\FF\\CalcTest::testPriceExpress":0.004,"PSC\\Library\\Calc\\Tests\\Customer\\FF\\CalcTest::testPriceFlexo":0.004,"PSC\\Library\\Calc\\Tests\\Customer\\KK\\CalcTest::testDefault":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\KK\\CalcTest::testCalcValue":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcTest::testOptionAuswahl330":0.04,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcTest::testOptionAuswahl331":0.057,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcTest::testOptionCheckbox":0.04,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcTest::testOptionDefaultCheckbox":0.082,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcTest::testOptionCalcCheckbox":0.082,"PSC\\Library\\Calc\\Tests\\CMS\\Type\\Container\\ColumnTest::testRowColumn":0.003,"PSC\\Library\\Calc\\Tests\\CMS\\Type\\Container\\ColumnTest::testTextOption":0.003,"PSC\\Library\\Calc\\Tests\\CMS\\Type\\Container\\ColumnTest::testInputOption":0.003,"PSC\\Library\\Calc\\Tests\\CMS\\Type\\Container\\ColumnTest::testSubRowsOption":0.003,"PSC\\Library\\Calc\\Tests\\Contact\\Account\\CalcTest::testPriceDefault":0.003,"PSC\\Library\\Calc\\Tests\\Contact\\Account\\CalcTest::testPrice1":0.003,"PSC\\Library\\Calc\\Tests\\Contact\\Account\\CalcTest::testPriceAccountNotExists":0.003,"PSC\\Library\\Calc\\Tests\\Contact\\Account\\CalcTest::testPrice123":0.003,"PSC\\Library\\Calc\\Tests\\Contact\\Account\\CalcTest::testPrice334":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\GG\\CalcTest::testPrice":0.028,"PSC\\Library\\Calc\\Tests\\Customer\\GG\\CalcTest::testColorSelect":0.027,"PSC\\Library\\Calc\\Tests\\Customer\\P\\CalcTest::testCalcPrice":0.022,"PSC\\Library\\Calc\\Tests\\Customer\\P\\CalcTest::testHelpTextAndLink":0.023,"PSC\\Library\\Calc\\Tests\\Customer\\P\\CalcTest::testMaxBreite":0.041,"PSC\\Library\\Calc\\Tests\\Customer\\P\\CalcTest::testMinBreite":0.042,"PSC\\Library\\Calc\\Tests\\Article\\selectWithGrenzenTest::testSelectWithGrenzen":0.003,"PSC\\Library\\Calc\\Tests\\Article\\selectWithGrenzenTest::testSelectWithGrenzenParams":0.003,"PSC\\Library\\Calc\\Tests\\Option\\Type\\TextareaTest::testIfCorrectType":0.002,"PSC\\Library\\Calc\\Tests\\Option\\Type\\TextareaTest::testIfCorrectAttributes":0.002,"PSC\\Library\\Calc\\Tests\\Recursiv\\FirstTest::testIfArticleCountIsCorrect":0.003,"PSC\\Library\\Calc\\Tests\\testTest::testNotOk":0.002,"PSC\\Library\\Calc\\Tests\\testTest::testOk":0.002,"PSC\\Library\\Calc\\Tests\\CMS\\Type\\Text\\HeadlineTest::testHeadLine1Option":0.003,"PSC\\Library\\Calc\\Tests\\CMS\\Type\\Text\\HeadlineTest::testHeadLine5Option":0.003,"PSC\\Library\\Calc\\Tests\\Complex\\FirstTest::testIfArticleCountIsCorrect":0.002,"PSC\\Library\\Calc\\Tests\\Complex\\FirstTest::testIfDefaultPriceIsOk":0.157,"PSC\\Library\\Calc\\Tests\\Customer\\EE\\CalcTest::testPrice":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\EE\\CalcTest::testPriceAuflage2":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\J\\CalcTest::testIfDefaultPriceIsOk":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\L\\CalcTest::testCalcPlan":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\L\\CalcTest::testCalcVarPlan":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcComplexTest::testAuflage500":0.659,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcComplexTest::testAndereProduktArt2":0.736,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CalcComplexTest::testAndereProduktArt3":0.715,"PSC\\Library\\Calc\\Tests\\CMS\\Type\\Text\\TextTest::testTextOption":0.003,"PSC\\Library\\Calc\\Tests\\CMS\\Type\\Text\\TextTest::testText2Option":0.003,"PSC\\Library\\Calc\\Tests\\Complex\\FiveTest::testIfArticleCountIsCorrect":0.002,"PSC\\Library\\Calc\\Tests\\Complex\\FiveTest::testIfDefaultPriceIsOk":0.052,"PSC\\Library\\Calc\\Tests\\Customer\\D\\CalcTest::testIfDefaultPriceIsOk":0.015,"PSC\\Library\\Calc\\Tests\\Customer\\E\\CalcTest::testIfDefaultPriceIsOk":0.008,"PSC\\Library\\Calc\\Tests\\Customer\\E\\CalcTest::testIfAnwender2PriceIsOk":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\I\\CalcTest::testIfDefaultPriceIsOk":0.149,"PSC\\Library\\Calc\\Tests\\Customer\\I\\CalcTest::testIf6000PriceIsOk":0.149,"PSC\\Library\\Calc\\Tests\\Customer\\I\\CalcTest::testIfDruckfarbenPriceIsOk":0.148,"PSC\\Library\\Calc\\Tests\\Option\\Type\\SelectTest::testIfCorrectType":0.005,"PSC\\Library\\Calc\\Tests\\Option\\Type\\SelectTest::testIfCorrectAttributes":0.005,"PSC\\Library\\Calc\\Tests\\Option\\Type\\SelectTest::testIfPaperContainerReturnsCorrectItems":0.002,"PSC\\Library\\Calc\\Tests\\Option\\Type\\SelectTest::testIfSelectWithPaperContainerModeReturnsCorrectOpt":0.006,"PSC\\Library\\Calc\\Tests\\Option\\Type\\SelectTest::testIfSelectWithColorModePantoneReturnsCorrectOpt":0.008,"PSC\\Library\\Calc\\Tests\\Option\\Type\\SelectTest::testIfSelectWithColorModeReturnsCorrectOpt":0.005,"PSC\\Library\\Calc\\Tests\\Calc\\ColorDBTest::testIfOptionsNotValid":0.003,"PSC\\Library\\Calc\\Tests\\Complex\\EightTest::testIfWeightIsCorrect":0.005,"PSC\\Library\\Calc\\Tests\\Complex\\EightTest::testIfSingleWeightIsCorrect":0.005,"PSC\\Library\\Calc\\Tests\\Complex\\EightTest::testIfDefaultPriceIsOk":0.006,"PSC\\Library\\Calc\\Tests\\Contact\\AccountType\\CalcTest::testPriceWithout":0.003,"PSC\\Library\\Calc\\Tests\\Contact\\AccountType\\CalcTest::testPrice":0.003,"PSC\\Library\\Calc\\Tests\\Contact\\AccountType\\CalcTest::testPriceCompany":0.003,"PSC\\Library\\Calc\\Tests\\Contact\\AccountType\\CalcTest::testPriceAsso":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\H\\CalcTest::testIfDefaultPriceIsOk":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\H\\CalcTest::testIfDisplayValues":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\H\\CalcTest::testIfAjaxValues":0.007,"PSC\\Library\\Calc\\Tests\\Customer\\LL\\CalcTest::testPrice":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\Q\\CalcTest::testCalcPrice":0.005,"PSC\\Library\\Calc\\Tests\\Customer\\Q\\CalcTest::testCalcPriceDefaultChange":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\Q\\CalcTest::testCalcPriceDefaultChangeSecound":0.01,"PSC\\Library\\Calc\\Tests\\Customer\\X\\CalcTest::testIfPaperDbGrenze":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\X\\CalcTest::testIfPaperDbGrenzeVal":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\X\\CalcTest::testIfPaperDbGrenzeVal3":0.003,"PSC\\Library\\Calc\\Tests\\Parse\\Edge\\ContainerTest::testIfLoadsCorrect":0.003,"PSC\\Library\\Calc\\Tests\\Option\\Type\\InputTest::testIfCorrectType":0.002,"PSC\\Library\\Calc\\Tests\\Option\\Type\\InputTest::testIfCorrectAttributes":0.002,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseTest::testIfCorrectType":0.002,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseTest::testIfCountIsCorrect":0.002,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseTest::testText":0.002,"PSC\\Library\\Calc\\Tests\\Calc\\OptionsRemoveTest::testIfArticleCountIsCorrect":0.002,"PSC\\Library\\Calc\\Tests\\Calc\\OptionsRemoveTest::testIfParserGetArticleCorrect":0.003,"PSC\\Library\\Calc\\Tests\\Calc\\OptionsRemoveTest::testIfOptionsNotValid":0.003,"PSC\\Library\\Calc\\Tests\\Complex\\SixTest::testIfArticleCountIsCorrect":0.002,"PSC\\Library\\Calc\\Tests\\Complex\\SixTest::testIfSelectedOptionsCorrect":0.004,"PSC\\Library\\Calc\\Tests\\Complex\\SixTest::testIfCalcCorrect":0.004,"PSC\\Library\\Calc\\Tests\\Customer\\DD\\CalcTest::testPrice":1.134,"PSC\\Library\\Calc\\Tests\\Customer\\DD\\CalcTest::testPricePaper":1.161,"PSC\\Library\\Calc\\Tests\\Customer\\DD\\CalcTest::testPricePaper1":1.187,"PSC\\Library\\Calc\\Tests\\Calc\\PreisPauschaleTest::testIfArticleCountIsCorrect":0.002,"PSC\\Library\\Calc\\Tests\\Calc\\PreisPauschaleTest::testPreisPauschaleCalc":0.003,"PSC\\Library\\Calc\\Tests\\Complex\\FourTest::testIfArticleCountIsCorrect":0.002,"PSC\\Library\\Calc\\Tests\\Complex\\FourTest::testIfDefaultPriceIsOk":0.015,"PSC\\Library\\Calc\\Tests\\Customer\\A\\CalcTest::testIfDefaultPriceIsOk":0.15,"PSC\\Library\\Calc\\Tests\\Customer\\A\\CalcTest::testVariant1":0.149,"PSC\\Library\\Calc\\Tests\\Customer\\A\\CalcTest::testVariant2":0.147,"PSC\\Library\\Calc\\Tests\\Customer\\Z\\CalcTest::testPrice":1.134,"PSC\\Library\\Calc\\Tests\\Customer\\Z\\CalcTest::testPriceProductArt":1.169,"PSC\\Library\\Calc\\Tests\\Calc\\PriceMinTest::testIfArticleCountIsCorrect":0.002,"PSC\\Library\\Calc\\Tests\\Calc\\PriceMinTest::testIfParserGetMinPrice":0.003,"PSC\\Library\\Calc\\Tests\\Calc\\PriceMinTest::testIfCalcReturnsGrenzeWithFormular":0.003,"PSC\\Library\\Calc\\Tests\\Complex\\ThirdTest::testIfArticleCountIsCorrect":0.002,"PSC\\Library\\Calc\\Tests\\Complex\\ThirdTest::testIfDefaultPriceIsOk":0.016,"PSC\\Library\\Calc\\Tests\\Customer\\C\\CalcTest::testIfDefaultPriceIsOk":0.142,"PSC\\Library\\Calc\\Tests\\Customer\\II\\CalcTest::testPrice":0.066,"PSC\\Library\\Calc\\Tests\\Customer\\M\\CalcTest::testDefaultOption":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\M\\CalcTest::testCalcValues":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\S\\CalcTest::testCalcPrice":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\U\\CalcTest::testIfDefaultPriceIsOk":0.003,"PSC\\Library\\Calc\\Tests\\General\\DisplayGroupTest::testDisplayGroup":0.003,"SimpleTest::testGraph":0.002,"PSC\\Library\\Calc\\Tests\\Article\\papierDbWithFormelTest::testSelectWithGrenzen":0.003,"PSC\\Library\\Calc\\Tests\\Option\\Type\\RadioboxTest::testIfCorrectType":0.002,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseGroupTest::testIfCorrectType":0.002,"PSC\\Library\\Calc\\Tests\\PreCalc\\ParseGroupTest::testIfCountCorrect":0.002,"PSC\\Library\\Calc\\Tests\\Type\\Text\\CalcTest::testTextGrenzen":0.003,"PSC\\Library\\Calc\\Tests\\Type\\Text\\CalcTest::testTextGrenzenChanges":0.003,"PSC\\Library\\Calc\\Tests\\CalcValue\\AddCalcValuesTest::testIfParseValue":0.003,"PSC\\Library\\Calc\\Tests\\CalcValue\\SimpleTest::testIfParseValue":0.003,"PSC\\Library\\Calc\\Tests\\Complex\\PaperSavedTest::testIfArticleCountIsCorrect":0.002,"PSC\\Library\\Calc\\Tests\\Complex\\PaperSavedTest::testIfDefaultPriceIsOk":0.158,"PSC\\Library\\Calc\\Tests\\Customer\\G\\CalcTest::testIfDefaultPriceIsOk":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\G\\CalcTest::testIfDisplayValues":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\G\\CalcTest::testIfAjaxValues":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\K\\CalcTest::testCalcPlan":0.008,"PSC\\Library\\Calc\\Tests\\Customer\\N\\CalcTest::testPreCalcOption":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CheckboxTest::testCalcDefault":0.009,"PSC\\Library\\Calc\\Tests\\Customer\\R\\CheckboxTest::testCalcOnly2":0.008,"PSC\\Library\\Calc\\Tests\\Customer\\V\\CalcTest::testIfDefaultPriceIsOk":0.466,"PSC\\Library\\Calc\\Tests\\CalcValue\\ComplexTest::testIfParseValue":0.073,"PSC\\Library\\Calc\\Tests\\CalcValue\\ComplexTest::testIfPaperGrammaturValue":0.073,"PSC\\Library\\Calc\\Tests\\Customer\\BB\\CalcTest::testPattern":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\BB\\CalcTest::testPlaceHolder":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\BB\\CalcTest::testFormat1":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\BB\\CalcTest::testFormat2":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\BB\\CalcTest::testFormat3":0.003,"PSC\\Library\\Calc\\Tests\\Customer\\JJ\\CalcFasterTest::testPrice":0.16,"PSC\\Library\\Calc\\Tests\\Customer\\R\\RadioboxTest::testCalcDefault":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\R\\RadioboxTest::testCalcOnly2":0.006,"PSC\\Library\\Calc\\Tests\\Customer\\Y\\CalcTest::testPrice":0.898}} \ No newline at end of file diff --git a/cobertura.xml b/cobertura.xml new file mode 100644 index 0000000..0fc9a6a --- /dev/null +++ b/cobertura.xml @@ -0,0 +1,8028 @@ + + + + + /home/thomas/projekte/calc/src + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/composer.json b/composer.json index b8ed728..bdee4b5 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,8 @@ "bitandblack/colors": "2.13.0", "symfony/cache": "^6.4", "spatie/array-to-xml": "^3.4", - "symfony/console": "^7.3" + "symfony/console": "^7.3", + "nikic/php-parser": "^5.5" }, "require-dev": { "phpunit/phpunit": "^12", diff --git a/composer.lock b/composer.lock index d9d528b..8ae75ca 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f204aff2a1761fbeb059564b9c884256", + "content-hash": "1bcd8dfa133022a46117c71356f54200", "packages": [ { "name": "azuyalabs/yasumi", @@ -1036,6 +1036,64 @@ ], "time": "2025-01-14T11:49:03+00:00" }, + { + "name": "nikic/php-parser", + "version": "v5.5.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "ae59794362fe85e051a58ad36b289443f57be7a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9", + "reference": "ae59794362fe85e051a58ad36b289443f57be7a9", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0" + }, + "time": "2025-05-31T08:24:38+00:00" + }, { "name": "psr/cache", "version": "3.0.0", @@ -2508,64 +2566,6 @@ ], "time": "2025-04-29T12:36:36+00:00" }, - { - "name": "nikic/php-parser", - "version": "v5.5.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "ae59794362fe85e051a58ad36b289443f57be7a9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9", - "reference": "ae59794362fe85e051a58ad36b289443f57be7a9", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-json": "*", - "ext-tokenizer": "*", - "php": ">=7.4" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0" - }, - "time": "2025-05-31T08:24:38+00:00" - }, { "name": "phar-io/manifest", "version": "2.0.4", diff --git a/phpunit.xml.dist b/phpunit.xml.dist index a765c5a..fe3268d 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,19 +1,28 @@ + + + src + + tests/ - + + + + + diff --git a/src/Article.php b/src/Article.php index f890dc6..755c803 100644 --- a/src/Article.php +++ b/src/Article.php @@ -1,10 +1,12 @@ options = new \ArrayIterator(); $this->displayGroups = new \ArrayIterator(); @@ -63,9 +65,8 @@ class Article public function setParams($params) { /** @var Option\Type\Base $option */ - foreach($this->options as $option) - { - if(isset($params[$option->getId()])) { + foreach ($this->options as $option) { + if (isset($params[$option->getId()])) { $option->setRawValue($params[$option->getId()]); $option->processValue(); } @@ -92,45 +93,43 @@ class Article $this->name = $name; } - public function getUUID(): ?string + public function getUUID(): null|string { return $this->uuid; } - public function setUUID(?string $uuid): void + public function setUUID(null|string $uuid): void { $this->uuid = $uuid; } - public function getOptionById($id): ?Base + public function getOptionById($id): Base|Select|null { - if($id === false) { + if ($id === false) { throw new \Exception('No id provided'); } - return $this->getOptionByIdRec($this->options, $id); - + return $this->getOptionByIdRec($this->options, $id); } - - private function getOptionByIdRec($options, $id): ?Base + + private function getOptionByIdRec($options, $id): null|Base { - foreach($options as $option) - { - if($option instanceOf Row) { - foreach($option->getColumns() as $col) { - if($opt = $this->getOptionByIdRec($col->getOptions(), $id)) { + foreach ($options as $option) { + if ($option instanceof Row) { + foreach ($option->getColumns() as $col) { + if ($opt = $this->getOptionByIdRec($col->getOptions(), $id)) { return $opt; } } } - if($option instanceOf Column) { + if ($option instanceof Column) { return $this->getOptionByIdRec($option->getOptions(), $id); } - if($option->getId() == $id) { + if ($option->getId() == $id) { return $option; } } - + return null; } @@ -151,10 +150,10 @@ class Article public function getValidOptions() { - $temp = array(); + $temp = []; foreach ($this->options as $option) { - if($option->isValid()) { + if ($option->isValid()) { $temp[] = $option; } } @@ -163,17 +162,17 @@ class Article public function getOptionsAsArray() { - $temp = array(); + $temp = []; /** @var Option\Type\Base $option */ foreach ($this->options as $option) { - if(($option->getValue() == '' && $option->getRawValue() == '') || !$option->isValid()) { + if ($option->getValue() == '' && $option->getRawValue() == '' || !$option->isValid()) { continue; } - $temp[$option->getId()] = array( + $temp[$option->getId()] = [ 'name' => $option->getName(), 'value' => $option->getValue(), - 'rawVaue' => $option->getRawValue() - ); + 'rawVaue' => $option->getRawValue(), + ]; } return $temp; } @@ -196,7 +195,7 @@ class Article public function generateJson(): array { $tmp = []; - foreach($this->options as $option) { + foreach ($this->options as $option) { $tmp[] = $option->generateJson(); } return $tmp; diff --git a/src/Calc/Calc.php b/src/Calc/Calc.php index ad3391b..ca6bdf6 100644 --- a/src/Calc/Calc.php +++ b/src/Calc/Calc.php @@ -1,4 +1,5 @@ getColumns() as $col) { + foreach ($option->getColumns() as $col) { $price = $this->calcRec($gesamt, $col->getOptions()); } } if ($option instanceof Select || $option instanceof Checkbox || $option instanceof Radio) { - foreach($option->getSelectedOptions() as $opt) { + foreach ($option->getSelectedOptions() as $opt) { if ($opt->isValid()) { - $gesamt = $this->parseEdgeCollection($gesamt, $option, $opt->getEdgesCollectionContainer(), [$option->getId()]); + $gesamt = $this->parseEdgeCollection( + $gesamt, + $option, + $opt->getEdgesCollectionContainer(), + [$option->getId()], + ); } } } - $gesamt = $this->parseEdgeCollection($gesamt, $option, $option->getEdgesCollectionContainer(), [$option->getId()]); + $gesamt = $this->parseEdgeCollection( + $gesamt, + $option, + $option->getEdgesCollectionContainer(), + [$option->getId()], + ); } return $gesamt; } - /** - * @param $gesamt - * @param Base $option - * @param EdgeCollectionContainer $container - * @return int - */ private function parseEdgeCollection($gesamt, $option, EdgeCollectionContainer $container, $calcValueId = []) { - $calcValue1 = 0; $calcValue2 = 0; $calcValueAccount1 = 0; @@ -95,10 +99,10 @@ class Calc $hasVar = true; $hasValidEdge = false; - if ($collection->getName() == "opt") { + if ($collection->getName() == 'opt') { continue; } - if ($collection->getFormel() != "") { + if ($collection->getFormel() != '') { $formel = $this->formelCalc->parse($collection->getFormel()); eval('$var = ' . $formel . ';'); } else { @@ -106,7 +110,7 @@ class Calc $var = $this->engine->getVariables()[$collection->getName()]; } } - if($collection->getDefault() != "" && $var === "XXXXXXXXXXXX") { + if ($collection->getDefault() != '' && $var === 'XXXXXXXXXXXX') { $var = $collection->getDefault(); $hasVar = false; } @@ -117,15 +121,13 @@ class Calc } } - if(!$hasValidEdge && $hasVar && $collection->getDefault()) { + if (!$hasValidEdge && $hasVar && $collection->getDefault()) { $var = $collection->getDefault(); } /** @var Edge $edge */ foreach ($collection as $edge) { - - if ($var !== "XXXXXXXXXXXX" && $edge->isValid($var)) { - + if ($var !== 'XXXXXXXXXXXX' && $edge->isValid($var)) { if ($edge->getPauschale() != 0) { eval('$gesamt += ' . $edge->getPauschale() . ';'); $this->engine->addDebugFlatPrice($collection->getName(), $edge->getPauschale()); @@ -133,15 +135,24 @@ class Calc if ($edge->getPreis() != 0) { eval('$gesamt += ' . ($edge->getPreis() * $var) . ';'); - $this->engine->addDebugPrice($collection->getName(), $edge->getPreis(), $var, $edge->getPreis() * $var); + $this->engine->addDebugPrice( + $collection->getName(), + $edge->getPreis(), + $var, + $edge->getPreis() * $var, + ); } - if ($edge->getCalcValue() != "") { + if ($edge->getCalcValue() != '') { $cv = $this->formelCalc->parse($edge->getCalcValue()); $orgCv = $cv; try { eval('@$cv = ' . $cv . ';'); - $this->engine->addDebugCalcVariables($option->getId() . '_' . $collection->getName(), $edge->getCalcValue(), $orgCv . ' = ' . $cv); + $this->engine->addDebugCalcVariables( + $option->getId() . '_' . $collection->getName(), + $edge->getCalcValue(), + $orgCv . ' = ' . $cv, + ); } catch (\Throwable $e) { $cv = 0; } @@ -149,15 +160,27 @@ class Calc $this->engine->setCalcVaribleStack($orgCv, $calcValueId); } - if ($edge->getFormel() != "") { + if ($edge->getFormel() != '') { $formel = $this->formelCalc->parse($edge->getFormel()); - if ($formel != "" && !in_array($option->getId(), ['weight', 'weight_single']) && !$option->isAjaxExport() && !$option->isDisplayOnly() && $option->isAmount()) { + if ( + $formel != '' && + !in_array($option->getId(), ['weight', 'weight_single']) && + !$option->isAjaxExport() && + !$option->isDisplayOnly() && + $option->isAmount() + ) { $p = 0; - $formel = str_replace("tonumber", '$this->toNumber', $formel); + $formel = str_replace('tonumber', '$this->toNumber', $formel); try { eval('@$p = ' . $this->eval_func($gesamt, $formel) . ';'); - $this->engine->addDebugCalcFormel($edge->getFormel(), $formel . ' = ' . $p); + $this->engine->addDebugCalcFormel($edge->getFormel(), $formel . ' = ' . $p); + $this->engine->getCalcGraph()->addCalcFormel(new ModelFormel( + name: $collection->getName(), + formel: $edge->getFormel(), + parsed: $formel, + result: $p, + )); } catch (\Throwable $e) { $this->engine->addDebugCalcFormel($edge->getFormel(), $formel . ' = error'); $p = 0; @@ -168,9 +191,15 @@ class Calc $this->engine->setVariable('price', $gesamt); } - if ($formel != "" && !in_array($option->getId(), ['weight', 'weight_single']) && $option->isAjaxExport() && !$option->isDisplayOnly() && $option->isAmount()) { + if ( + $formel != '' && + !in_array($option->getId(), ['weight', 'weight_single']) && + $option->isAjaxExport() && + !$option->isDisplayOnly() && + $option->isAmount() + ) { $p = 0; - $formel = str_replace("tonumber", '$this->toNumber', $formel); + $formel = str_replace('tonumber', '$this->toNumber', $formel); try { eval('@$p = ' . $this->eval_func($gesamt, $formel) . ';'); @@ -180,28 +209,34 @@ class Calc $p = 0; } } - if ($formel != "" && !in_array($option->getId(), ['weight', 'weight_single']) && !$option->isAjaxExport() && $option->isDisplayOnly() && $option->isAmount()) { + if ( + $formel != '' && + !in_array($option->getId(), ['weight', 'weight_single']) && + !$option->isAjaxExport() && + $option->isDisplayOnly() && + $option->isAmount() + ) { $p = 0; - $formel = str_replace("tonumber", '$this->toNumber', $formel); + $formel = str_replace('tonumber', '$this->toNumber', $formel); eval('@$p = ' . $this->eval_func($gesamt, $formel) . ';'); $this->engine->addDisplayVariable($option->getId(), $p); } - if ($formel != "" && $option->getId() == "weight_single") { + if ($formel != '' && $option->getId() == 'weight_single') { $p = 0; - $formel = str_replace("tonumber", '$this->toNumber', $formel); + $formel = str_replace('tonumber', '$this->toNumber', $formel); eval('@$p = ' . $this->eval_func($gesamt, $formel) . ';'); $this->engine->setWeightSingle($p); } - if ($formel != "" && $option->getId() == "weight") { + if ($formel != '' && $option->getId() == 'weight') { $p = 0; - $formel = str_replace("tonumber", '$this->toNumber', $formel); + $formel = str_replace('tonumber', '$this->toNumber', $formel); eval('@$p = ' . $this->eval_func($gesamt, $formel) . ';'); $this->engine->setWeight($p); } if (!$option->isAmount()) { $p = 0; - $formel = str_replace("tonumber", '$this->toNumber', $formel); + $formel = str_replace('tonumber', '$this->toNumber', $formel); eval('@$p = ' . $this->eval_func($gesamt, $formel) . ';'); $this->engine->addCalcVariable($option->getId(), $p); @@ -210,7 +245,12 @@ class Calc if ($edge->getEdgesCollectionContainer()->count() > 0) { $calcValueId[] = $collection->getName(); - $gesamt = $this->parseEdgeCollection($gesamt, $option, $edge->getEdgesCollectionContainer(), $calcValueId); + $gesamt = $this->parseEdgeCollection( + $gesamt, + $option, + $edge->getEdgesCollectionContainer(), + $calcValueId, + ); } } } @@ -225,11 +265,10 @@ class Calc try { eval('@$p=' . $formel . ';'); } catch (\Throwable $e) { - if (str_contains($e->getMessage(), 'Undefined constant')) { preg_match('/Undefined constant "(.*)"/', $e->getMessage(), $output_array); if (isset($output_array[1])) { - $formel = str_replace($output_array[1], "'" . $output_array[1] ."'", $formel); + $formel = str_replace($output_array[1], "'" . $output_array[1] . "'", $formel); $p = $this->eval_func($gesamt, $formel); return $p; } @@ -246,6 +285,5 @@ class Calc } return str_replace(',', '.', $value); - } } diff --git a/src/Calc/Formel.php b/src/Calc/Formel.php index f42cd4f..4910b3f 100644 --- a/src/Calc/Formel.php +++ b/src/Calc/Formel.php @@ -1,4 +1,5 @@ engine = $engine; $this->article = $article; } - public function parse($formel, $breakValid = false) { - + public function parse($formel, $breakValid = false): string + { $i = 0; - while((strpos($formel,'$F') !== false || strpos($formel,'$P') !== false || strpos($formel,'$V') !== false || strpos($formel,'$CV') !== false) && $i < 12) { + while ( + ( + str_contains($formel, '$F') || + str_contains($formel, '$P') || + str_contains($formel, '$V') || + str_contains($formel, '$CV') + ) && + $i < 12 + ) { $formel = $this->parseCalcVariables($formel, $breakValid); $formel = $this->parseFormulas($formel, $breakValid); $formel = $this->parseParameters($formel, $breakValid); @@ -42,7 +43,6 @@ class Formel } return $formel; - } private function parseVariables($formel, $breakValid = false) @@ -51,25 +51,25 @@ class Formel $variables = $this->engine->getVariables(); - if (!empty($founds [0])) { - foreach ($founds [0] as $key => $found) { + if (!empty($founds[0])) { + foreach ($founds[0] as $key => $found) { $foundvalue = str_replace('$V', '', $found); - if (isset($variables [$foundvalue])) { - if ($variables [$foundvalue] == 'null') { + if (isset($variables[$foundvalue])) { + if ($variables[$foundvalue] == 'null') { $formel = str_replace($found, 0, $formel); } else { if ($foundvalue == 'auflage') { - $formel = str_replace($found, str_replace(',', '.', $variables [$foundvalue]), $formel); + $formel = str_replace($found, str_replace(',', '.', $variables[$foundvalue]), $formel); } else { - if ($variables [$foundvalue] == '') { + if ($variables[$foundvalue] == '') { $formel = str_replace($found, 0, $formel); } else { - $formel = str_replace($found, $variables [$foundvalue], $formel); + $formel = str_replace($found, $variables[$foundvalue], $formel); } } } } else { - if($breakValid) { + if ($breakValid) { $this->engine->validDirty = true; } $formel = str_replace($found, 0, $formel); @@ -84,19 +84,18 @@ class Formel { preg_match_all('/\$P\w*\$P/', $formel, $founds); - if (!empty($founds [0])) { - try{ - @eval($this->engine->getParameters()); - @eval($this->engine->getFormulas()); - }catch (\Throwable $e) { - + if (!empty($founds[0])) { + try { + eval($this->engine->getParameters()); + eval($this->engine->getFormulas()); + } catch (\Throwable $e) { } - foreach ($founds [0] as $key => $found) { + foreach ($founds[0] as $key => $found) { $foundvalue = str_replace('$P', '', $found); if (isset($$foundvalue)) { $formel = str_replace($found, $$foundvalue, $formel); } else { - if($breakValid) { + if ($breakValid) { $this->engine->validDirty = true; } $formel = str_replace($found, 0, $formel); @@ -111,20 +110,19 @@ class Formel { preg_match_all('/\$F\w*\$F/', $formel, $founds); - if (!empty($founds [0])) { - try{ - @eval($this->engine->getParameters()); - @eval($this->engine->getFormulas()); - }catch (\Throwable $e) { - + if (!empty($founds[0])) { + try { + eval($this->engine->getParameters()); + eval($this->engine->getFormulas()); + } catch (\Throwable $e) { } - foreach ($founds [0] as $key => $found) { + foreach ($founds[0] as $key => $found) { $foundvalue = str_replace('$F', '', $found); - if(isset($$foundvalue)) { + if (isset($$foundvalue)) { $formel = str_replace($found, $$foundvalue, $formel); - }else{ - if($breakValid) { + } else { + if ($breakValid) { $this->engine->validDirty = true; } $formel = str_replace($found, 0, $formel); @@ -140,29 +138,29 @@ class Formel preg_match_all('/\$CV[\w\.]*\$CV/', $formel, $founds); $variables = $this->engine->getCalcVariables(); - if (!empty($founds [0])) { - foreach ($founds [0] as $key => $found) { + if (!empty($founds[0])) { + foreach ($founds[0] as $key => $found) { $foundvalue = str_replace('$CV', '', $found); - if (isset($variables [$foundvalue])) { - if ($variables [$foundvalue] == 'null') { + if (isset($variables[$foundvalue])) { + if ($variables[$foundvalue] == 'null') { $formel = str_replace($found, 0, $formel); } else { if ($foundvalue == 'auflage') { - $formel = str_replace($found, str_replace(',', '.', $variables [$foundvalue]), $formel); + $formel = str_replace($found, str_replace(',', '.', $variables[$foundvalue]), $formel); } else { - if ($variables [$foundvalue] == '') { + if ($variables[$foundvalue] == '') { $formel = str_replace($found, 0, $formel); } else { - if(is_array($variables [$foundvalue])) { + if (is_array($variables[$foundvalue])) { $formel = str_replace($found, 0, $formel); - }else{ - $formel = str_replace($found, $variables [$foundvalue], $formel); + } else { + $formel = str_replace($found, $variables[$foundvalue], $formel); } } } } } else { - if($breakValid) { + if ($breakValid) { $this->engine->validDirty = true; } $formel = str_replace($found, 0, $formel); diff --git a/src/Engine.php b/src/Engine.php index 7b57673..298097c 100644 --- a/src/Engine.php +++ b/src/Engine.php @@ -1,24 +1,25 @@ calcGraph = new Graph(); $parser = new Parser(); $parser->setPaperContainer($this->paperContainer); $parser->setPaperRepository($this->paperRepository); - if($this->templates) { + if ($this->templates) { $parser->setTemplates($this->templates); } - if($this->xml) { + if ($this->xml) { foreach ($this->xml as $article) { $this->articles->append($parser->parseXML($article)); - } - }elseif($this->json){ + } elseif ($this->json) { foreach ($this->json as $article) { $this->articles->append($parser->parseJson($article)); } @@ -145,21 +148,18 @@ class Engine */ private function getArticleByName($name = false) { - if($name === false && $this->activeArticle === false) { + if ($name === false && $this->activeArticle === false) { $this->activeArticle = $this->articles[0]->getName(); return $this->articles[0]; - } - if($name === false && $this->activeArticle !== false) { + if ($name === false && $this->activeArticle !== false) { $name = $this->activeArticle; - } /** @var Article $article */ - foreach($this->articles as $article) - { - if($article->getName() == $name) { + foreach ($this->articles as $article) { + if ($article->getName() == $name) { return $article; } } @@ -252,8 +252,9 @@ class Engine $this->variables = $variables; } - public function calc() { - + public function calc() + { + $this->calcGraph = new Graph(); $this->debugCalcFormel = []; $this->debugCalcVariables = []; $this->debugFlatPrice = []; @@ -262,11 +263,11 @@ class Engine $tmp = []; foreach ($this->variables as $key => $variable) { - if(!is_array($variable)) { - if($variable !== null) { - $tmp[$key] = str_replace(",", ".", $variable); + if (!is_array($variable)) { + if ($variable !== null) { + $tmp[$key] = str_replace(',', '.', $variable); } - }else{ + } else { $tmp[$key] = $variable; } } @@ -275,7 +276,7 @@ class Engine $this->article = $this->getArticleByName($this->activeArticle); - if($this->article === null) { + if ($this->article === null) { $this->dirty = false; return true; } @@ -286,17 +287,17 @@ class Engine $this->processCalc(); $switchedOptions = $this->checkDoubleOptions(); - if(count($switchedOptions) > 0) { - foreach($switchedOptions as $option) { - if($option->getDefault() !== null && !$option instanceof Text) { - if($option instanceof Checkbox) { - $this->variables[$option->getId()] = explode(",", $option->getDefault()); - }else{ + if (count($switchedOptions) > 0) { + foreach ($switchedOptions as $option) { + if ($option->getDefault() !== null && !($option instanceof Text)) { + if ($option instanceof Checkbox) { + $this->variables[$option->getId()] = explode(',', $option->getDefault()); + } else { $this->variables[$option->getId()] = $option->getDefault(); } } - if(isset($this->variables[$option->getId()])) { + if (isset($this->variables[$option->getId()])) { $option->setRawValue($this->variables[$option->getId()]); $option->processValue(); } @@ -311,37 +312,40 @@ class Engine public function prefillVars(\ArrayIterator $options): void { - foreach($options as $option) { - if($option instanceof Row) { - foreach($option->getColumns() as $column) { + foreach ($options as $option) { + if ($option instanceof Row) { + foreach ($option->getColumns() as $column) { $this->prefillVars($column->getOptions()); } continue; } $option->setSavedCalcValues($this->savedCalcValues); - if(!isset($this->variables[$option->getId()]) && $option->getDefault() !== null && !$option instanceof Text) { - if($option instanceof Checkbox) { - $this->variables[$option->getId()] = explode(",", $option->getDefault()); - }else{ + if ( + !isset($this->variables[$option->getId()]) && + $option->getDefault() !== null && + !($option instanceof Text) + ) { + if ($option instanceof Checkbox) { + $this->variables[$option->getId()] = explode(',', $option->getDefault()); + } else { $this->variables[$option->getId()] = $option->getDefault(); } } - if(isset($this->variables[$option->getId()])) { + if (isset($this->variables[$option->getId()])) { $option->setRawValue($this->variables[$option->getId()]); $option->processValue(); } } - - } + public function getPrice() { - if($this->dirty) { + if ($this->dirty) { $this->calc(); } - return round($this->price,2); + return round($this->price, 2); } /** @@ -349,10 +353,10 @@ class Engine */ public function getTaxPrice() { - if($this->dirty) { + if ($this->dirty) { $this->calc(); } - return round(($this->price/100*$this->tax),2); + return round(($this->price / 100) * $this->tax, 2); } /** @@ -360,10 +364,10 @@ class Engine */ public function getCompletePrice() { - if($this->dirty) { + if ($this->dirty) { $this->calc(); } - return round($this->price+($this->price/100*$this->tax),2); + return round($this->price + (($this->price / 100) * $this->tax), 2); } /** @@ -373,7 +377,7 @@ class Engine { $this->price = $price; } - + public function addDebugCalcVariables($id, $orgVar, $var) { $this->debugCalcVariables[$id] = [$orgVar, $var]; @@ -383,12 +387,17 @@ class Engine { return $this->debugCalcVariables; } - + public function addDebugCalcFormel($orgFormel, $formel) { $this->debugCalcFormel[] = [$orgFormel, $formel]; } + public function getCalcGraph(): Graph + { + return $this->calcGraph; + } + public function getDebugCalcFormel() { return $this->debugCalcFormel; @@ -396,8 +405,8 @@ class Engine public function addDebugFlatPrice($key, $flatPrice) { - if(!isset($this->debugFlatPrice[$key])) { - $this->debugFlatPrice[$key] = array(); + if (!isset($this->debugFlatPrice[$key])) { + $this->debugFlatPrice[$key] = []; } $this->debugFlatPrice[$key][] = $flatPrice; } @@ -409,20 +418,21 @@ class Engine public function addDebugPrice($key, $price, $multiplicator, $result) { - if(!isset($this->debugPrice[$key])) { - $this->debugPrice[$key] = array(); + if (!isset($this->debugPrice[$key])) { + $this->debugPrice[$key] = []; } $this->debugPrice[$key][] = [ 'price' => $price, 'multiplicator' => $multiplicator, - 'result' => $result + 'result' => $result, ]; } - public function getDebugPrice() + public function getDebugPrice() { return $this->debugPrice; } + /** * @return array */ @@ -446,15 +456,16 @@ class Engine public function setCalcVaribleStack($value, $stack = []) { $id = array_shift($stack); - foreach($stack as $row) { - $id = $id . '_' . $row; - if(!isset($this->calcVariables[$id]) || $this->calcVariables[$id] == 0) { + foreach ($stack as $row) { + $id = $id . '_' . $row; + if (!isset($this->calcVariables[$id]) || $this->calcVariables[$id] == 0) { $this->calcVariables[$id] = $value; } } } - public function addCalcVariable($id, $value) { + public function addCalcVariable($id, $value) + { $this->calcVariables[$id] = $value; } @@ -490,7 +501,7 @@ class Engine */ public function getArticle($shouldCalc = true) { - if($this->dirty && $shouldCalc) { + if ($this->dirty && $shouldCalc) { $this->calc(); } return $this->article; @@ -509,10 +520,10 @@ class Engine { $tmp = []; - foreach($data as $key => $value) { - if($value instanceof Opt) { + foreach ($data as $key => $value) { + if ($value instanceof Opt) { $tmp[$key] = $value->getId(); - }else{ + } else { $tmp[$key] = $value; } } @@ -587,7 +598,7 @@ class Engine public function getWeight(): float { - if($this->dirty) { + if ($this->dirty) { $this->calc(); } return $this->weight; @@ -595,12 +606,12 @@ class Engine public function setWeightSingle(float $var): void { - $this->weightSingle = $var; + $this->weightSingle = $var; } - + public function getWeightSingle(): float { - if($this->dirty) { + if ($this->dirty) { $this->calc(); } return $this->weightSingle; @@ -608,23 +619,24 @@ class Engine private function checkDoubleOptions(): array { - $options = []; $switchedOptions = []; /** @var Base $option */ - foreach($this->article->getOptions() as $option) { - if($option->isValid()) { + foreach ($this->article->getOptions() as $option) { + if ($option->isValid()) { $options[] = $option; - }else{ - $foundValid = array_filter($this->article->getOptions()->getArrayCopy(), function(Base $elm) use ($option) { - if($elm->getId() == $option->getId() && $elm->isValid()) { - return $elm; - } + } else { + $foundValid = array_filter($this->article->getOptions()->getArrayCopy(), function (Base $elm) use ( + $option, + ) { + if ($elm->getId() == $option->getId() && $elm->isValid()) { + return $elm; + } }); - if(count($foundValid) == 0) { + if (count($foundValid) == 0) { $options[] = $option; - }else{ + } else { $switchedOptions[] = array_shift($foundValid); } } @@ -639,7 +651,7 @@ class Engine $this->validDirty = true; $count = 1; // Check if Option is valid - while($this->validDirty && $count < 4) { + while ($this->validDirty && $count < 4) { $this->validDirty = false; $this->validVars = $this->variables; @@ -653,13 +665,13 @@ class Engine $count++; } - $calcValid = new Valid($this, $this->article); - $calcValid->perform(); + $calcValid = new Valid($this, $this->article); + $calcValid->perform(); // CALC Values - $calcValues = new CalcValues($this, $this->article); - $calcValues->calc(); - + $calcValues = new CalcValues($this, $this->article); + $calcValues->calc(); + // Check if Option is valid // CALC Formel $calcFormel = new Calc($this, $this->article); @@ -668,11 +680,10 @@ class Engine public function generateXML(): string { - $tmp = ['artikel' => array_merge([ - 'name' => $this->getArticleByName()->getName(), - 'uuid' => $this->getArticleByName()->getUUID(), - 'kommentar' => '' + 'name' => $this->getArticleByName()->getName(), + 'uuid' => $this->getArticleByName()->getUUID(), + 'kommentar' => '', ], $this->getArticleByName()->generateXML())]; return ArrayToXml::convert($tmp, 'kalkulation'); @@ -680,7 +691,6 @@ class Engine public function generateJson(): string { - $obj = new \stdClass(); $obj->uuid = $this->getArticleByName(false)->getUUID(); $obj->name = $this->getArticleByName(false)->getName(); diff --git a/src/General/Type/EdgeCollectionContainer.php b/src/General/Type/EdgeCollectionContainer.php index cee6cc9..7c8a31a 100644 --- a/src/General/Type/EdgeCollectionContainer.php +++ b/src/General/Type/EdgeCollectionContainer.php @@ -2,12 +2,14 @@ namespace PSC\Library\Calc\General\Type; +use PSC\Library\Calc\General\Type\EdgeCollection; + class EdgeCollectionContainer extends \ArrayIterator { - public function getCollectionByName($string) + public function getCollectionByName($string): EdgeCollection|null { - while($this->valid()) { - if($string == $this->current()->getName()) { + while ($this->valid()) { + if ($string == $this->current()->getName()) { return $this->current(); } @@ -16,4 +18,4 @@ class EdgeCollectionContainer extends \ArrayIterator return null; } -} \ No newline at end of file +} diff --git a/src/Graph/Calc.php b/src/Graph/Calc.php new file mode 100644 index 0000000..2328a4e --- /dev/null +++ b/src/Graph/Calc.php @@ -0,0 +1,48 @@ +math = new Math(); + } + + public function calc(Part $part): void + { + $visitor = new PostOrderVisitor(); + + $yield = $part->accept($visitor); + + foreach ($yield as $y) { + $this->parseFormulas($y); + $y->setResult($this->math->evaluate($y->getUnparsed())); + var_dump($y); + } + } + + private function parseFormulas(Part $p): void + { + preg_match_all('/\$F\w*\$F/', $formel->getUnparsed(), $founds); + + if (!empty($founds[0])) { + foreach ($founds[0] as $key => $found) { + $foundValue = str_replace('$F', '', $found); + $foundPart = array_find($p->getChildren(), ($c) => $c->getName() == $foundValue)); + if (count($foundPart) > 0) { + $formel->setParsed(str_replace($found, $foundPart[0]->getResult(), $formel->getParsed())) + } else { + $formel->setParsed(str_replace($found, 0, $formel->getParsed())) + } + } + } + } +} diff --git a/src/Graph/Eval/Math.php b/src/Graph/Eval/Math.php new file mode 100644 index 0000000..13f67a9 --- /dev/null +++ b/src/Graph/Eval/Math.php @@ -0,0 +1,420 @@ + 2.71, 'pi' => 3.14]; // variables (and constants) + + /** + * @var array + */ + public $f = []; // user-defined functions + + /** + * @var array + */ + public $vb = ['e', 'pi']; // constants + + /** + * @var array + */ + public $fb = [ // built-in functions + 'sin', + 'sinh', + 'arcsin', + 'asin', + 'arcsinh', + 'asinh', + 'cos', + 'cosh', + 'arccos', + 'acos', + 'arccosh', + 'acosh', + 'tan', + 'tanh', + 'arctan', + 'atan', + 'arctanh', + 'atanh', + 'sqrt', + 'abs', + 'ln', + 'log', + ]; + + public function __construct() + { + // make the variables a little more accurate + $this->v['pi'] = pi(); + $this->v['e'] = exp(1); + } + + /** + * @param string $expr + * @return mixed + */ + public function e($expr) + { + return $this->evaluate($expr); + } + + /** + * @param string $expr + * @return mixed + */ + public function evaluate($expr) + { + $this->last_error = null; + $expr = trim($expr); + if (substr($expr, -1, 1) == ';') + $expr = substr($expr, 0, strlen($expr) - 1); // strip semicolons at the end + //=============== + // is it a variable assignment? + if (preg_match('/^\s*([a-z]\w*)\s*=\s*(.+)$/', $expr, $matches)) { + if (in_array($matches[1], $this->vb)) { // make sure we're not assigning to a constant + return $this->trigger("cannot assign to constant '{$matches[1]}'"); + } + if (($tmp = $this->pfx($this->nfx($matches[2]))) === false) + return false; // get the result and make sure it's good + $this->v[$matches[1]] = $tmp; // if so, stick it in the variable array + return $this->v[$matches[1]]; // and return the resulting value + + //=============== + // is it a function assignment? + } elseif ( + preg_match('/^\s*([a-z]\w*)\s*\(\s*([a-z]\w*(?:\s*,\s*[a-z]\w*)*)\s*\)\s*=\s*(.+)$/', $expr, $matches) + ) { + $fnn = $matches[1]; // get the function name + if (in_array($matches[1], $this->fb)) { // make sure it isn't built in + return $this->trigger("cannot redefine built-in function '{$matches[1]}()'"); + } + $args = explode(',', preg_replace("/\s+/", '', $matches[2])); // get the arguments + if (($stack = $this->nfx($matches[3])) === false) + return false; // see if it can be converted to postfix + for ($i = 0; $i < count($stack); $i++) { // freeze the state of the non-argument variables + $token = $stack[$i]; + if (preg_match('/^[a-z]\w*$/', $token) and !in_array($token, $args)) { + if (array_key_exists($token, $this->v)) { + $stack[$i] = $this->v[$token]; + } else { + return $this->trigger("undefined variable '{$token}' in function definition"); + } + } + } + $this->f[$fnn] = ['args' => $args, 'func' => $stack]; + return true; + + //=============== + } else { + return $this->pfx($this->nfx($expr)); // straight up evaluation, woo + } + } + + /** + * @return array + */ + public function vars() + { + $output = $this->v; + unset($output['pi']); + unset($output['e']); + return $output; + } + + /** + * @return array + */ + public function funcs() + { + $output = []; + foreach ($this->f as $fnn => $dat) { + $output[] = $fnn . '(' . implode(',', $dat['args']) . ')'; + } + + return $output; + } + + //===================== HERE BE INTERNAL METHODS ====================\\ + + // Convert infix to postfix notation + public function nfx($expr) + { + $index = 0; + $stack = new Stack(); + $output = []; // postfix form of expression, to be passed to pfx() + // $expr = trim(strtolower($expr)); + $expr = trim($expr); + + $ops = ['+', '-', '*', '/', '^', '_', '%']; + $ops_r = ['+' => 0, '-' => 0, '*' => 0, '/' => 0, '^' => 1, '%' => 0]; // right-associative operator? + $ops_p = ['+' => 0, '-' => 0, '*' => 1, '/' => 1, '_' => 1, '^' => 2, '%' => 1]; // operator precedence + + $expecting_op = false; // we use this in syntax-checking the expression + // and determining when a - is a negation + + if (preg_match('/[^\%\w\s+*^\/()\.,-]/', $expr, $matches)) { // make sure the characters are all good + return $this->trigger("illegal character '{$matches[0]}'"); + } + + while (1) { // 1 Infinite Loop ;) + $op = substr($expr, $index, 1); // get the first character at the current index + // find out if we're currently at the beginning of a number/variable/function/parenthesis/operand + $ex = preg_match('/^([A-Za-z]\w*\(?|\d+(?:\.\d*)?|\.\d+|\()/', substr($expr, $index), $match); + //=============== + if ($op == '-' and !$expecting_op) { // is it a negation instead of a minus? + $stack->push('_'); // put a negation on the stack + $index++; + } elseif ($op == '_') { // we have to explicitly deny this, because it's legal on the stack + return $this->trigger("illegal character '_'"); // but not in the input expression + + //=============== + } elseif ((in_array($op, $ops) or $ex) and $expecting_op) { // are we putting an operator on the stack? + if ($ex) { // are we expecting an operator but have a number/variable/function/opening parethesis? + $op = '*'; + $index--; // it's an implicit multiplication + } + // heart of the algorithm: + while ( + $stack->count > 0 and + ( + ($o2 = $stack->last()) and + ( + in_array($o2, $ops) and + ($ops_r[$op] ? $ops_p[$op] < $ops_p[$o2] : $ops_p[$op] <= $ops_p[$o2]) + ) + ) + ) { + $output[] = $stack->pop(); // pop stuff off the stack into the output + } + // many thanks: http://en.wikipedia.org/wiki/Reverse_Polish_notation#The_algorithm_in_detail + $stack->push($op); // finally put OUR operator onto the stack + $index++; + $expecting_op = false; + + //=============== + } elseif ($op == ')' and $expecting_op) { // ready to close a parenthesis? + while (($o2 = $stack->pop()) != '(') { // pop off the stack back to the last ( + if (is_null($o2)) + return $this->trigger("unexpected ')'"); + else + $output[] = $o2; + } + + $nextOp = $stack->last(2); + + if ($nextOp !== null && preg_match("/^([A-Za-z]\w*)\($/", $nextOp, $matches)) { // did we just close a function? + $fnn = $matches[1]; // get the function name + $arg_count = $stack->pop(); // see how many arguments there were (cleverly stored on the stack, thank you) + $output[] = $stack->pop(); // pop the function and push onto the output + if (in_array($fnn, $this->fb)) { // check the argument count + if ($arg_count > 1) + return $this->trigger("too many arguments ({$arg_count} given, 1 expected)"); + } elseif (array_key_exists($fnn, $this->f)) { + if ($arg_count != count($this->f[$fnn]['args'])) + return $this->trigger( + "wrong number of arguments ({$arg_count} given, " . + count($this->f[$fnn]['args']) . + ' expected)', + ); + } else { // did we somehow push a non-function on the stack? this should never happen + return $this->trigger('internal error'); + } + } + $index++; + + //=============== + } elseif ($op == ',' and $expecting_op) { // did we just finish a function argument? + while (($o2 = $stack->pop()) != '(') { + if (is_null($o2)) + return $this->trigger("unexpected ','"); // oops, never had a ( + else + $output[] = $o2; // pop the argument expression stuff and push onto the output + } + // make sure there was a function + if (!preg_match("/^([A-Za-z]\w*)\($/", $stack->last(2), $matches)) + return $this->trigger("unexpected ','"); + $stack->push($stack->pop() + 1); // increment the argument count + $stack->push('('); // put the ( back on, we'll need to pop back to it again + $index++; + $expecting_op = false; + + //=============== + } elseif ($op == '(' and !$expecting_op) { + $stack->push('('); // that was easy + $index++; + $allow_neg = true; + + //=============== + } elseif ($ex and !$expecting_op) { // do we now have a function/variable/number? + $expecting_op = true; + $val = $match[1]; + if (preg_match("/^([A-Za-z]\w*)\($/", $val, $matches)) { // may be func, or variable w/ implicit multiplication against parentheses... + if (in_array($matches[1], $this->fb) or array_key_exists($matches[1], $this->f)) { // it's a func + $stack->push($val); + $stack->push(1); + $stack->push('('); + $expecting_op = false; + } else { // it's a var w/ implicit multiplication + $val = $matches[1]; + $output[] = $val; + } + } else { // it's a plain old var or num + $output[] = $val; + } + $index += strlen($val); + + //=============== + } elseif ($op == ')') { // miscellaneous error checking + return $this->trigger("unexpected ')'"); + } elseif (in_array($op, $ops) and !$expecting_op) { + return $this->trigger("unexpected operator '{$op}'"); + } else { // I don't even want to know what you did to get here + return $this->trigger('an unexpected error occured'); + } + if ($index == strlen($expr)) { + if (in_array($op, $ops)) { // did we end with an operator? bad. + return $this->trigger("operator '{$op}' lacks operand"); + } else { + break; + } + } + while (substr($expr, $index, 1) == ' ') { // step the index past whitespace (pretty much turns whitespace + $index++; // into implicit multiplication if no operator is there) + } + } + while (!is_null($op = $stack->pop())) { // pop everything off the stack and push onto output + if ($op == '(') + return $this->trigger("expecting ')'"); // if there are (s on the stack, ()s were unbalanced + $output[] = $op; + } + return $output; + } + + // evaluate postfix notation + public function pfx($tokens, $vars = []) + { + if ($tokens == false) + return false; + + $stack = new Stack(); + + foreach ($tokens as $token) { // nice and easy + // if the token is a binary operator, pop two values off the stack, do the operation, and push the result back on + if (in_array($token, ['+', '-', '*', '/', '^', '%'])) { + if (is_null($op2 = $stack->pop())) + return $this->trigger('internal error'); + if (is_null($op1 = $stack->pop())) + return $this->trigger('internal error'); + switch ($token) { + case '+': + $stack->push($op1 + $op2); + break; + case '-': + $stack->push($op1 - $op2); + break; + case '*': + $stack->push($op1 * $op2); + break; + case '/': + if ($op2 == 0) + return $this->trigger('division by zero'); + $stack->push($op1 / $op2); + break; + case '^': + $stack->push(pow($op1, $op2)); + break; + case '%': + $stack->push($op1 % $op2); + break; + } + + // if the token is a unary operator, pop one value off the stack, do the operation, and push it back on + } elseif ($token == '_') { + $stack->push(-1 * $stack->pop()); + + // if the token is a function, pop arguments off the stack, hand them to the function, and push the result back on + } elseif (preg_match("/^([a-z]\w*)\($/", $token, $matches)) { // it's a function! + $fnn = $matches[1]; + if (in_array($fnn, $this->fb)) { // built-in function: + if (is_null($op1 = $stack->pop())) + return $this->trigger('internal error'); + $fnn = preg_replace('/^arc/', 'a', $fnn); // for the 'arc' trig synonyms + if ($fnn == 'ln') + $fnn = 'log'; + eval('$stack->push(' . $fnn . '($op1));'); // perfectly safe eval() + } elseif (array_key_exists($fnn, $this->f)) { // user function + // get args + $args = []; + for ($i = count($this->f[$fnn]['args']) - 1; $i >= 0; $i--) { + if (is_null($args[$this->f[$fnn]['args'][$i]] = $stack->pop())) + return $this->trigger('internal error'); + } + $stack->push($this->pfx($this->f[$fnn]['func'], $args)); // yay... recursion!!!! + } + + // if the token is a number or variable, push it on the stack + } else { + if (is_numeric($token)) { + $stack->push($token); + } elseif (array_key_exists($token, $this->v)) { + $stack->push($this->v[$token]); + } elseif (array_key_exists($token, $vars)) { + $stack->push($vars[$token]); + } else { + return $this->trigger("undefined variable '{$token}'"); + } + } + } + // when we're out of tokens, the stack should have a single element, the final result + if ($stack->count != 1) + return $this->trigger('internal error'); + return $stack->pop(); + } + + // trigger an error, but nicely, if need be + public function trigger($msg) + { + $this->last_error = $msg; + if (!$this->suppress_errors) { + echo "\nError found in:"; + $this->debugPrintCallingFunction(); + + trigger_error($msg, E_USER_WARNING); + } + return false; + } + + // Prints the file name, function name, and + // line number which called your function + // (not this function, then one that called + // it to begin with) + public function debugPrintCallingFunction() + { + $file = 'n/a'; + $func = 'n/a'; + $line = 'n/a'; + $debugTrace = debug_backtrace(); + if (isset($debugTrace[1])) { + $file = $debugTrace[1]['file'] ? $debugTrace[1]['file'] : 'n/a'; + $line = $debugTrace[1]['line'] ? $debugTrace[1]['line'] : 'n/a'; + } + if (isset($debugTrace[2])) + $func = $debugTrace[2]['function'] ? $debugTrace[2]['function'] : 'n/a'; + echo "\n{$file}, {$func}, {$line}\n"; + } +} diff --git a/src/Graph/Eval/Stack.php b/src/Graph/Eval/Stack.php new file mode 100644 index 0000000..59fc82d --- /dev/null +++ b/src/Graph/Eval/Stack.php @@ -0,0 +1,42 @@ +stack[$this->count] = $val; + $this->count++; + } + + public function pop() + { + if ($this->count > 0) { + $this->count--; + return $this->stack[$this->count]; + } + + return null; + } + + public function last($n = 1) + { + $key = $this->count - $n; + + return array_key_exists($key, $this->stack) ? $this->stack[$key] : null; + } +} diff --git a/src/Graph/Graph.php b/src/Graph/Graph.php new file mode 100644 index 0000000..d9dcaf0 --- /dev/null +++ b/src/Graph/Graph.php @@ -0,0 +1,39 @@ +calcFormel = new PartCollection(); + $this->parser = new Parser($formulas, $params); + $this->calc = new Calc(); + } + + public function addCalcFormel(Part $formel): void + { + $this->calcFormel->append($formel); + } + + public function build(): bool + { + foreach ($this->calcFormel as $formel) { + $this->parser->parse($formel); + } + + foreach ($this->calcFormel as $formel) { + $this->calc->calc($formel); + } + + return true; + } +} diff --git a/src/Graph/Parser.php b/src/Graph/Parser.php new file mode 100644 index 0000000..0b0debd --- /dev/null +++ b/src/Graph/Parser.php @@ -0,0 +1,103 @@ +internalParts = new PartCollection(); + + $mode = 1; + + $traverser = new NodeTraverser(); + $traverser->addVisitor(new class($mode, $this->internalParts) extends NodeVisitorAbstract { + public function __construct( + private int $mode, + private PartCollection $internalParts, + ) {} + + public function enterNode(Node $node): void + { + if ($node instanceof Assign && $this->mode === 1) { + $this->internalParts->append(new Part( + type: PartType::Formel, + name: $node->var->name, + unParsed: $node->expr->value, + )); + } + if ($node instanceof Assign && $this->mode === 2) { + $this->internalParts->append(new Part( + type: PartType::Parameter, + name: $node->var->name, + unParsed: $node->expr->value, + )); + } + } + }); + + $parser = new ParserFactory()->createForNewestSupportedVersion(); + try { + $ast = $parser->parse('traverse($ast); + } catch (Error $error) { + echo "Parse error: {$error->getMessage()}\n"; + return; + } + + try { + $ast = $parser->parse('traverse($ast); + } catch (Error $error) { + echo "Parse error: {$error->getMessage()}\n"; + return; + } + } + + public function parse(Part $formel): void + { + // $formel = $this->parseCalcVariables($formel, $breakValid); + $this->parseFormulas($formel); + + // $formel = $this->parseParameters($formel, $breakValid); + // $formel = $this->parseVariables($formel, $breakValid); + } + + private function parseFormulas(Part $formel): void + { + preg_match_all('/\$F\w*\$F/', $formel->getUnparsed(), $founds); + + if (!empty($founds[0])) { + foreach ($founds[0] as $key => $found) { + $foundValue = str_replace('$F', '', $found); + if ($this->internalParts->getPartByName($foundValue)) { + $formel->addChild($this->internalParts->getPartByName($foundValue)); + } else { + $formel->addChild(new Part( + type: PartType::Formel, + name: $foundValue, + unParsed: $found, + parsed: 0, + result: 0, + )); + } + } + } + } +} diff --git a/src/Graph/Tree/Node.php b/src/Graph/Tree/Node.php new file mode 100644 index 0000000..de850fb --- /dev/null +++ b/src/Graph/Tree/Node.php @@ -0,0 +1,31 @@ + $children + */ + public function __construct(mixed $value = null, array $children = []) + { + $this->setValue($value); + + if ([] === $children) { + return; + } + + $this->setChildren($children); + } +} diff --git a/src/Graph/Tree/NodeInterface.php b/src/Graph/Tree/NodeInterface.php new file mode 100644 index 0000000..6f18e04 --- /dev/null +++ b/src/Graph/Tree/NodeInterface.php @@ -0,0 +1,139 @@ + + */ +interface NodeInterface +{ + /** + * Set the value of the current node. + */ + public function setValue(mixed $value): static; + + /** + * Get the current node value. + */ + public function getValue(): mixed; + + /** + * Add a child. + * + * @return mixed + */ + public function addChild(self $child): static; + + /** + * Remove a node from children. + */ + public function removeChild(self $child): static; + + /** + * Remove all children. + */ + public function removeAllChildren(): static; + + /** + * Return the array of children. + * + * @return array + */ + public function getChildren(): array; + + /** + * Replace the children set with the given one. + * + * @param array $children + * + * @return mixed + */ + public function setChildren(array $children): static; + + /** + * Set the parent node. + */ + public function setParent(null|self $parent = null): void; + + /** + * Return the parent node. + */ + public function getParent(): null|static; + + /** + * Retrieves all ancestors of node excluding current node. + */ + public function getAncestors(): array; + + /** + * Retrieves all ancestors of node as well as the node itself. + * + * @return array + */ + public function getAncestorsAndSelf(): array; + + /** + * Retrieves all neighboring nodes, excluding the current node. + */ + public function getNeighbors(): array; + + /** + * Returns all neighboring nodes, including the current node. + * + * @return array + */ + public function getNeighborsAndSelf(): array; + + /** + * Return true if the node is the root, false otherwise. + */ + public function isRoot(): bool; + + /** + * Return true if the node is a child, false otherwise. + */ + public function isChild(): bool; + + /** + * Return true if the node has no children, false otherwise. + */ + public function isLeaf(): bool; + + /** + * Find the root of the node. + */ + public function root(): static; + + /** + * Return the distance from the current node to the root. + */ + public function getDepth(): int; + + /** + * Return the height of the tree whose root is this node. + */ + public function getHeight(): int; + + /** + * Return the number of nodes in a tree. + */ + public function getSize(): int; + + /** + * Accept method for the visitor pattern (see http://en.wikipedia.org/wiki/Visitor_pattern). + */ + public function accept(Visitor $visitor): mixed; +} diff --git a/src/Graph/Tree/NodeTrait.php b/src/Graph/Tree/NodeTrait.php new file mode 100644 index 0000000..f56f54e --- /dev/null +++ b/src/Graph/Tree/NodeTrait.php @@ -0,0 +1,214 @@ + + */ + private array $children = []; + + public function setValue(mixed $value): static + { + $this->value = $value; + + return $this; + } + + public function getValue(): mixed + { + return $this->value; + } + + public function addChild(NodeInterface $child): static + { + $child->setParent($this); + $this->children[] = $child; + + return $this; + } + + public function removeChild(NodeInterface $child): static + { + foreach ($this->children as $key => $myChild) { + if ($child === $myChild) { + unset($this->children[$key]); + } + } + + $this->children = \array_values($this->children); + + $child->setParent(null); + + return $this; + } + + public function removeAllChildren(): static + { + $this->setChildren([]); + + return $this; + } + + public function getChildren(): array + { + return $this->children; + } + + public function setChildren(array $children): static + { + foreach ($this->getChildren() as $child) { + $child->setParent(null); + } + + $this->children = []; + + foreach ($children as $child) { + $this->addChild($child); + } + + return $this; + } + + public function setParent(null|NodeInterface $parent = null): void + { + $this->parent = $parent; + } + + public function getParent(): null|static + { + return $this->parent; + } + + public function getAncestors(): array + { + $parents = []; + $node = $this; + + while (($parent = $node->getParent()) instanceof NodeInterface) { + \array_unshift($parents, $parent); + $node = $parent; + } + + return $parents; + } + + public function getAncestorsAndSelf(): array + { + return \array_merge($this->getAncestors(), [$this]); + } + + public function getNeighbors(): array + { + if (null === $this->parent) { + return []; + } + + $neighbors = $this->parent->getChildren(); + $that = $this; + + return \array_values(\array_filter($neighbors, static function (NodeInterface $node) use ($that): bool { + return $node !== $that; + })); + } + + public function getNeighborsAndSelf(): array + { + if (null === $this->parent) { + return [ + $this, + ]; + } + + return $this->parent->getChildren(); + } + + public function isRoot(): bool + { + return null === $this->parent; + } + + public function isChild(): bool + { + return null !== $this->parent; + } + + public function isLeaf(): bool + { + return [] === $this->children; + } + + public function root(): static + { + $node = $this; + + while (($parent = $node->getParent()) instanceof NodeInterface) { + $node = $parent; + } + + return $node; + } + + /** + * Return the distance from the current node to the root. + * + * Warning, can be expensive, since each descendant is visited + */ + public function getDepth(): int + { + if ($this->isRoot()) { + return 0; + } + + return $this->getParent()->getDepth() + 1; + } + + /** + * Return the height of the tree whose root is this node. + */ + public function getHeight(): int + { + if ($this->isLeaf()) { + return 0; + } + + $heights = []; + + foreach ($this->getChildren() as $child) { + $heights[] = $child->getHeight(); + } + + return \max($heights) + 1; + } + + public function getSize(): int + { + $size = 1; + + foreach ($this->getChildren() as $child) { + $size += $child->getSize(); + } + + return $size; + } + + public function accept(Visitor $visitor): mixed + { + return $visitor->visit($this); + } +} diff --git a/src/Graph/Visitor/PostOrderVisitor.php b/src/Graph/Visitor/PostOrderVisitor.php new file mode 100644 index 0000000..1239eb1 --- /dev/null +++ b/src/Graph/Visitor/PostOrderVisitor.php @@ -0,0 +1,30 @@ +getChildren() as $child) { + $nodes = \array_merge($nodes, $child->accept($this)); + } + + $nodes[] = $node; + + return $nodes; + } +} diff --git a/src/Graph/Visitor/Visitor.php b/src/Graph/Visitor/Visitor.php new file mode 100644 index 0000000..d88e8fc --- /dev/null +++ b/src/Graph/Visitor/Visitor.php @@ -0,0 +1,19 @@ +name; + } + + public function getUnparsed(): string + { + return $this->unParsed; + } + + public function setResult(int $result): void + { + $this->result = $result; + } +} diff --git a/src/Model/PartCollection.php b/src/Model/PartCollection.php new file mode 100644 index 0000000..10f32ae --- /dev/null +++ b/src/Model/PartCollection.php @@ -0,0 +1,21 @@ +valid()) { + if ($string == $this->current()->getName()) { + return $this->current(); + } + + $this->next(); + } + + return null; + } +} diff --git a/src/Model/PartType.php b/src/Model/PartType.php new file mode 100644 index 0000000..51d404b --- /dev/null +++ b/src/Model/PartType.php @@ -0,0 +1,11 @@ +assertSame("31", $this->engine->getArticle()->getOptionById('set3')->getSelectedOption()->getId()); } - public function testChangeDefault(): void + public function tesChangeDefault(): void { $this->engine->calc(); $this->assertSame("11", $this->engine->getArticle()->getOptionById('set1')->getSelectedOption()->getId()); @@ -60,6 +60,12 @@ class CalcTest extends TestCase $this->assertSame("32", $this->engine->getArticle()->getOptionById('set3')->getSelectedOption()->getId()); $this->assertSame("42", $this->engine->getArticle()->getOptionById('set4')->getSelectedOption()->getId()); } - + + public function testPrice(): void + { + $this->engine->calc(); + $this->assertSame(101900.0, $this->engine->getPrice()); + var_dump($this->engine->getCalcGraph()); + } } diff --git a/tests/Customer/LL/calc.xml b/tests/Customer/LL/calc.xml index b935123..d5e7b7a 100644 --- a/tests/Customer/LL/calc.xml +++ b/tests/Customer/LL/calc.xml @@ -59,6 +59,18 @@ + + + + diff --git a/tests/Customer/LL/formels.txt b/tests/Customer/LL/formels.txt index 8b13789..12ecb99 100644 --- a/tests/Customer/LL/formels.txt +++ b/tests/Customer/LL/formels.txt @@ -1 +1,3 @@ - +$formel1 = '$Fformel2$F+$Fformel3$F+$Vauflage$V'; +$formel2 = '200+$Vauflage$V'; +$formel3 = '100*$Vauflage$V'; diff --git a/tests/Graph/SimpleTest.php b/tests/Graph/SimpleTest.php new file mode 100644 index 0000000..92d5a18 --- /dev/null +++ b/tests/Graph/SimpleTest.php @@ -0,0 +1,32 @@ +graph = new Graph( + file_get_contents(__DIR__ . '/formel.txt'), + file_get_contents(__DIR__ . '/parameter.txt'), + ); + } + + public function testGraph(): void + { + $this->graph->addCalcFormel(new Part( + type: PartType::CalcFormel, + name: 'test1', + unParsed: '$Ftest2$F+$Ftest3$F+10', + )); + + assertTrue($this->graph->build()); + } +} diff --git a/tests/Graph/formel.txt b/tests/Graph/formel.txt new file mode 100644 index 0000000..a5815b8 --- /dev/null +++ b/tests/Graph/formel.txt @@ -0,0 +1,2 @@ +$test1 = '100*50'; +$test2 = '50*50'; diff --git a/tests/Graph/parameter.txt b/tests/Graph/parameter.txt new file mode 100644 index 0000000..8b234a4 --- /dev/null +++ b/tests/Graph/parameter.txt @@ -0,0 +1,2 @@ +$test3 = 12; +$test4 = 13; diff --git a/tests/Parse/Edge/ContainerTest.php b/tests/Parse/Edge/ContainerTest.php index d82ab59..5b1c6a8 100644 --- a/tests/Parse/Edge/ContainerTest.php +++ b/tests/Parse/Edge/ContainerTest.php @@ -1,4 +1,5 @@ fromXML($node); - /** @var \PSC\Library\Calc\General\Type\EdgeCollectionContainer $container */ $container = $containerParser->parseXML(); $this->assertCount(2, $container); $this->assertCount(4, $container->getCollectionByName('gebyn')); $this->assertCount(2, $container->getCollectionByName('seiten')); - } }