Compare commits

...
6 Commits
12 changed files with 129 additions and 15 deletions
+3 -4
View File
@@ -1,10 +1,9 @@
.libs .libs
node_modules/ node_modules/
composer.lock **/composer.lock
vendor/ **/vendor/
tools/ tools/
www/composer.lock
www/vendor
**/.env **/.env
**/.target **/.target
package-lock.json package-lock.json
build/
+17
View File
@@ -19,6 +19,7 @@ Available options:
-v, --verbose Enable verbose output for PHPunit -v, --verbose Enable verbose output for PHPunit
-c, --composer Use composer version and not the default phives bundle -c, --composer Use composer version and not the default phives bundle
-p, --php VERSION Chose PHP version in the form of "N.N", if not found will exit -p, --php VERSION Chose PHP version in the form of "N.N", if not found will exit
-C, --coverage Generate code coverage report in text format (default: disabled)
EOF EOF
exit exit
} }
@@ -47,6 +48,8 @@ opt_verbose="";
php_version=""; php_version="";
no_php_version=0; no_php_version=0;
use_composer=0; use_composer=0;
opt_generate_coverage="";
opt_generate_coverage_html="";
while [ -n "${1-}" ]; do while [ -n "${1-}" ]; do
case "${1}" in case "${1}" in
-t | --testdox) -t | --testdox)
@@ -59,6 +62,14 @@ while [ -n "${1-}" ]; do
use_composer=1; use_composer=1;
shift shift
;; ;;
-C | --coverage)
opt_generate_coverage="--coverage-text";
shift
;;
--coverage-report)
opt_generate_coverage_html="--coverage-html build/coverage-report";
shift
;;
-p | --php) -p | --php)
php_version="${2-}"; php_version="${2-}";
shift shift
@@ -100,9 +111,15 @@ if [ "${use_composer}" -eq 1 ]; then
else else
PHPUNIT_CALL+=("${BASE_PATH}tools/phpunit"); PHPUNIT_CALL+=("${BASE_PATH}tools/phpunit");
fi; fi;
if [ -n "${opt_generate_coverage}" ]; then
echo "Will run coverage report";
export XDEBUG_MODE=coverage
fi;
PHPUNIT_CALL+=( PHPUNIT_CALL+=(
"${opt_testdox}" "${opt_testdox}"
"${opt_verbose}" "${opt_verbose}"
"${opt_generate_coverage}"
"${opt_generate_coverage_html}"
"-c" "${PHPUNIT_CONFIG}" "-c" "${PHPUNIT_CONFIG}"
"${BASE_PATH}4dev/tests/" "${BASE_PATH}4dev/tests/"
); );
-1
View File
@@ -45,7 +45,6 @@ use CoreLibs\DB\Support\ConvertPlaceholder;
* Test class for DB\IO + DB\SQL\PgSQL * Test class for DB\IO + DB\SQL\PgSQL
* This will only test the PgSQL parts * This will only test the PgSQL parts
* @coversDefaultClass \CoreLibs\DB\IO * @coversDefaultClass \CoreLibs\DB\IO
* @coversDefaultClass \CoreLibs\DB\SQL\PgSQL
* @testdox \CoreLibs\DB\IO method tests for SQL\PgSQL * @testdox \CoreLibs\DB\IO method tests for SQL\PgSQL
*/ */
final class CoreLibsDBIOTest extends TestCase final class CoreLibsDBIOTest extends TestCase
+1 -1
View File
@@ -1,7 +1,7 @@
<?php <?php
$set = 0; $set = 0;
foreach (['/../../www', '/../www', '/../..', '/..', '/../../src', '/../src'] as $src) { foreach (['/../../www', '/../www', '/../../src', '/../src', '/../..', '/..'] as $src) {
if (is_file(dirname(__DIR__) . $src . '/vendor/autoload.php')) { if (is_file(dirname(__DIR__) . $src . '/vendor/autoload.php')) {
require dirname(__DIR__) . $src . '/vendor/autoload.php'; require dirname(__DIR__) . $src . '/vendor/autoload.php';
$set = 1; $set = 1;
+5 -2
View File
@@ -1,8 +1,11 @@
// https://www.typescriptlang.org/tsconfig/#compilerOptions // https://www.typescriptlang.org/tsconfig/#compilerOptions
{ {
"compilerOptions": { "compilerOptions": {
"module": "ESNext", // if "bundler"
"moduleResolution": "Node", // "module": "ESNext",
"module": "NodeNext",
// "bundler" (front), "nodenext" or "node16"
"moduleResolution": "nodenext",
"target": "ES2020", "target": "ES2020",
"jsx": "react", "jsx": "react",
"checkJs": true, "checkJs": true,
+13
View File
@@ -10,4 +10,17 @@
<directory>4dev/tests</directory> <directory>4dev/tests</directory>
</testsuite> </testsuite>
</testsuites> </testsuites>
<coverage processUncoveredFiles="true">
<include>
<directory suffix=".php">./www/lib/CoreLibs</directory>
</include>
<!-- <report>
<html outputDirectory="build/coverage-report"/>
</report> -->
</coverage>
<!-- <source>
<include>
<directory>./www/lib/CoreLibs</directory>
</include>
</source> -->
</phpunit> </phpunit>
+3 -1
View File
@@ -59,8 +59,9 @@ $output = $json_class::jsonConvertToArray($json);
print "J/S::E-JSON: $json: " . DgS::printAr($output) . "<br>"; print "J/S::E-JSON: $json: " . DgS::printAr($output) . "<br>";
print "J/S::E-JSON ERROR: " . $json_class::jsonGetLastError() . ": " . $json_class::jsonGetLastError(true) . "<br>"; print "J/S::E-JSON ERROR: " . $json_class::jsonGetLastError() . ": " . $json_class::jsonGetLastError(true) . "<br>";
echo "<hr>";
$json = '{"valid":"json","invalid":"\xB1\x31"}'; $json = '{"valid":"json","invalid":"\xB1\x31"}';
$json = '{"valid":"json","invalid":"abc\x80def"}'; // $json = '{"valid":"json","invalid":"abc\x80def"}';
$output_no_flag = Json::jsonConvertToArray($json); $output_no_flag = Json::jsonConvertToArray($json);
print "No Flag JSON: $json: " . DgS::printAr($output_no_flag) . "<br>"; print "No Flag JSON: $json: " . DgS::printAr($output_no_flag) . "<br>";
print "No Flag JSON ERROR: " . Json::jsonGetLastError() . ": " . Json::jsonGetLastError(true) . "<br>"; print "No Flag JSON ERROR: " . Json::jsonGetLastError() . ": " . Json::jsonGetLastError(true) . "<br>";
@@ -73,6 +74,7 @@ $output_raw = json_decode($json, true, flags:JSON_INVALID_UTF8_SUBSTITUTE);
print "No Flag JSON RAW (F-2): $json: " . DgS::printAr($output_raw) . "<br>"; print "No Flag JSON RAW (F-2): $json: " . DgS::printAr($output_raw) . "<br>";
$output_raw = json_decode($json, true); $output_raw = json_decode($json, true);
print "No Flag JSON RAW: $json: " . DgS::printAr($output_raw) . "<br>"; print "No Flag JSON RAW: $json: " . DgS::printAr($output_raw) . "<br>";
echo "<hr>";
// $json = '{"foo": "bar"}'; // $json = '{"foo": "bar"}';
+2 -2
View File
@@ -15,9 +15,9 @@
] ]
}, },
"repositories": { "repositories": {
"git.egplusww.jp.Composer": { "packages.omnicomproduction.jp.Composer": {
"type": "composer", "type": "composer",
"url": "https://git.egplusww.jp/api/packages/Composer/composer" "url": "https://packages.omnicomproduction.jp/api/packages/Composer/composer"
} }
}, },
"require": { "require": {
@@ -811,6 +811,87 @@ class ArrayHandler
); );
return $in_array; return $in_array;
} }
/**
* TODO: move to CoreLibs ArrayCombined
* return one random entry from an array (value)
* the return entry is null if the incoming array is empty
* the array can also be an array of arrays
*
* @param array<mixed> $array
* @return string|int|float|bool|array<mixed>|null
*/
public static function getRandomEntryFromArray(array $array): string|int|float|bool|array|null
{
if (empty($array)) {
return null;
}
$random_index = array_rand($array);
return $array[$random_index];
}
/**
* TODO: move to CoreLibs ArrayCombined
* find and remove one value
* on default removes only the first entry
* on default does not strict compare
*
* @param array<mixed> $array
* @param string|int|float|bool|array<mixed> $value
* @param bool $strict [false]
* @return array<mixed>
*/
public static function removeArrayEntryByValue(
array $array,
string|int|float|bool|array $value,
bool $strict = false,
): array {
return array_filter($array, function ($element) use ($value, $strict) {
return $strict ?
$element !== $value :
$element != $value;
});
}
/**
* TODO: move to CoreLibs ArrayCombined
* add a string to each element in an array, default is at the end of the value,
* can be switched with the prefix flag
*
* @param array<string> $array
* @param string $string_to_add
* @param bool $prefix [false]
* @return array<string>
*/
public static function addStringToEachValueInArray(array $array, string $string_to_add, bool $prefix = false): array
{
return array_map(function ($value) use ($string_to_add, $prefix) {
return $prefix ?
$string_to_add . $value :
$value . $string_to_add;
}, $array);
}
/**
* sort by key any array, even if it is nested
*
* @param array<mixed> $data
* @return array<mixed>
*/
public static function createSortedArrayByKey(array $data): array
{
// Sort by keys
ksort($data);
// Recursively sort nested arrays
foreach ($data as $key => $value) {
if (is_array($value)) {
$data[$key] = self::createSortedArrayByKey($value);
}
}
return $data;
}
} }
// __END__ // __END__
+2 -2
View File
@@ -134,8 +134,8 @@ class Support
* Convert bool value to string value. Short name alias for printBool * Convert bool value to string value. Short name alias for printBool
* *
* @param bool $bool Bool value to be transformed * @param bool $bool Bool value to be transformed
* @param string $true [='true'] Override default string 'true' * @param string $true [=true] Override default string 'true'
* @param string $false [=false'] Override default string 'false' * @param string $false [=false] Override default string 'false'
* @return string $true or $false string for true/false bool * @return string $true or $false string for true/false bool
*/ */
public static function prBl( public static function prBl(
+1 -1
View File
@@ -63,7 +63,7 @@ enum Flag: int
/** /**
* Get internal name from int value * Get internal name from int value
* *
* @param int $value * @param value-of<self::VALUES> $value
* @return self * @return self
*/ */
public static function fromValue(int $value): self public static function fromValue(int $value): self