diff --git a/build/logs/junit.xml b/build/logs/junit.xml
new file mode 100644
index 0000000..ebc2b04
--- /dev/null
+++ b/build/logs/junit.xml
@@ -0,0 +1,2384 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/testdox.html b/build/testdox.html
new file mode 100644
index 0000000..ea35043
--- /dev/null
+++ b/build/testdox.html
@@ -0,0 +1,1999 @@
+
+
+
+
+ Test Documentation
+
+
+
+ AAASetupData\AAASetupDataTest just setup BASE
+
+ \CoreLibs\ACL\Login method tests
+
+ - ACL\Login Class tests [load, no login]
+ - ACL\Login Class tests [load, no login, ajax flag]
+ - ACL\Login Class tests [load, no login, ajax globals]
+ - ACL\Login Class tests [load, session eucuuid set only, php error]
+ - ACL\Login Class tests [load, session eucuuid set, all set]
+ - ACL\Login Class tests [login: failed: all missing]
+ - ACL\Login Class tests [login: failed: missing username]
+ - ACL\Login Class tests [login: failed: missing password]
+ - ACL\Login Class tests [login: failed: user not found]
+ - ACL\Login Class tests [login: failed: invalid password]
+ - ACL\Login Class tests [login: ok -> failed: but deleted]
+ - ACL\Login Class tests [login: ok -> failed: but not enabled]
+ - ACL\Login Class tests [login: ok -> failed: but locked]
+ - ACL\Login Class tests [login: ok -> failed: get locked, strict]
+ - ACL\Login Class tests [login: ok -> failed: but locked period (until:on)]
+ - ACL\Login Class tests [login: ok, but locked period (until:off)]
+ - ACL\Login Class tests [login: ok -> failed: but locked period (after:on)]
+ - ACL\Login Class tests [login: ok -> failed:, but locked period (until:on, after:on)]
+ - ACL\Login Class tests [login: ok -> failed:, but loginUserId locked]
+ - ACL\Login Class tests [login: ok]
+ - ACL\Login Class tests [login: ok, _GET loginUserId]
+ - ACL\Login Class tests [login: ok, _POST loginUserId]
+ - ACL\Login Class tests [login: ok, illegal chars in _GET loginUserId]
+ - ACL\Login Class tests [login: not matching _GET loginUserId]
+ - ACL\Login Class tests [login: ok, _GET loginUserId AND login post user data]
+ - ACL\Login Class tests [login: ok, bad _GET loginUserId AND good login post user data]
+ - ACL\Login Class tests [login: ok -> failed:, but revalidate trigger, _GET loginUserId]
+ - ACL\Login Class tests [login: ok, revalidate set (outside), _GET loginUserId]
+ - ACL\Login Class tests [login: ok -> failed:, _GET loginUserId, but outside valid (from:on) ]
+ - ACL\Login Class tests [login: ok, _GET loginUserId, but outside valid (from:off) ]
+ - ACL\Login Class tests [login: ok -> failed:, _GET loginUserId, but outside valid (until:on) ]
+ - ACL\Login Class tests [login: ok -> failed:, _GET loginUserId, but outside valid (from:on,until:on) ]
+ - ACL\Login Class tests [login: ok -> failed -> ok:, _GET loginUserId, but must revalidate, normal login, _GET loginUserId]
+ - ACL\Login list if NULL and NULL exepcted level is NULL [null, get full list]
+ - ACL\Login list if 20 and read exepcted level is 20 [valid, search]
+ - ACL\Login list if 12 and foo exepcted level is false [invalid search]
+ - ACL\Login password min length set 12 is true and matches 12 [set new length]
+ - ACL\Login password min length set 5 is false and matches 9 [set new length, too short]
+ - ACL\Login password min length set 500 is false and matches 9 [set new length, too long]
+ - ACL\Login get password length min [min]
+ - ACL\Login get password length lower [lower]
+ - ACL\Login get password length max [max]
+ - ACL\Login get password length upper [upper]
+ - ACL\Login get password length minimum_length [minimum_length]
+ - ACL\Login get password length min_length [min_length]
+ - ACL\Login get password length length [length]
+ - ACL\Login failed login set/get 10 is true and matches 10 [set valid max failed login]
+ - ACL\Login failed login set/get -1 is true and matches -1 [set valid unlimted]
+ - ACL\Login failed login set/get 0 is false and matches -1 [set invalid 0]
+ - ACL\Login failed login set/get -5 is false and matches -1 [set invalid negative]
+
+ \CoreLibs\Admin\Backend method tests
+
+ - Admin\Backend Class tests
+
+ \CoreLibs\Admin\EditPage method tests
+
+ - Admin\EditPage Class tests
+
+ \CoreLibs\Check\Colors method tests
+
+ - validateColor #ab12cd with flags NULL be true [valid hex rgb, flag ALL (default)]
+ - validateColor #ab12cd with flags 63 be true [valid hex rgb, flag ALL]
+ - validateColor #ab12cd with flags 1 be true [valid hex rgb, flag HEX_RGB]
+ - validateColor #ab12cd with flags 4 be false [valid hex rgb, wrong flag]
+ - validateColor #ab12zz with flags NULL be false [invalid hex rgb A]
+ - validateColor #ZyQfo with flags NULL be false [invalid hex rgb B]
+ - validateColor #AB12cd with flags NULL be true [valid hex rgb, alt A]
+ - validateColor #ab12cd12 with flags NULL be true [valid hex rgb alpha, flag ALL (default)]
+ - validateColor #ab12cd12 with flags 63 be true [valid hex rgb alpha, flag ALL]
+ - validateColor #ab12cd12 with flags 2 be true [valid hex rgb alpha, flag HEX_RGBA]
+ - validateColor #ab12cd12 with flags 4 be false [valid hex rgb alpha, wrong flag]
+ - validateColor #ab12dd1 with flags NULL be false [invalid hex rgb alpha A]
+ - validateColor #ab12ddzz with flags NULL be false [invalid hex rgb alpha B]
+ - validateColor #ab12cdEE with flags NULL be true [valid hex rgb alpha, alt A]
+ - validateColor rgb(255, 10, 20) with flags NULL be true [valid rgb, flag ALL (default)]
+ - validateColor rgb(255, 10, 20) with flags 63 be true [valid rgb, flag ALL]
+ - validateColor rgb(255, 10, 20) with flags 4 be true [valid rgb, flag RGB]
+ - validateColor rgb(255, 10, 20) with flags 1 be false [valid rgb, wrong flag]
+ - validateColor rgb(356, 10, 20) with flags NULL be false [invalid rgb A]
+ - validateColor rgb(100%, 10%, 20%) with flags NULL be true [valid rgb, alt A (percent)]
+ - validateColor rgb(100%, 10, 40) with flags NULL be true [valid rgb, alt B (percent, mix)]
+ - validateColor rgba(255, 10, 20, 0.5) with flags NULL be true [valid rgba, flag ALL (default)]
+ - validateColor rgba(255, 10, 20, 0.5) with flags 63 be true [valid rgba, flag ALL]
+ - validateColor rgba(255, 10, 20, 0.5) with flags 8 be true [valid rgba, flag RGB]
+ - validateColor rgba(255, 10, 20, 0.5) with flags 1 be false [valid rgba, wrong flag]
+ - validateColor rgba(356, 10, 20, 0.5) with flags NULL be false [invalid rgba A]
+ - validateColor rgba(100%, 10%, 20%, 0.5) with flags NULL be true [valid rgba, alt A (percent)]
+ - validateColor rgba(100%, 10, 40, 0.5) with flags NULL be true [valid rgba, alt B (percent, mix)]
+ - validateColor rgba(100%, 10%, 20%, 50%) with flags NULL be true [valid rgba, alt C (percent transparent)]
+ - validateColor hsl(100, 50%, 60%) with flags NULL be true [valid hsl, flag ALL (default)]
+ - validateColor hsl(100, 50%, 60%) with flags 63 be true [valid hsl, flag ALL]
+ - validateColor hsl(100, 50%, 60%) with flags 16 be true [valid hsl, flag RGB]
+ - validateColor hsl(100, 50%, 60%) with flags 1 be false [valid hsl, wrong flag]
+ - validateColor hsl(500, 50%, 60%) with flags NULL be false [invalid hsl A]
+ - validateColor hsl(100, 50.5%, 60.5%) with flags NULL be true [valid hsl, alt A]
+ - validateColor hsla(100, 50%, 60%, 0.5) with flags NULL be true [valid hsla, flag ALL (default)]
+ - validateColor hsla(100, 50%, 60%, 0.5) with flags 63 be true [valid hsla, flag ALL]
+ - validateColor hsla(100, 50%, 60%, 0.5) with flags 32 be true [valid hsla, flag RGB]
+ - validateColor hsla(100, 50%, 60%, 0.5) with flags 1 be false [valid hsla, wrong flag]
+ - validateColor hsla(500, 50%, 60%, 0.5) with flags NULL be false [invalid hsla A]
+ - validateColor hsla(100, 50.5%, 60.5%, 50%) with flags NULL be true [valid hsla, alt A (percent alpha]
+ - validateColor rgb(100%, 10%, 20%) with flags 12 be true [valid rgb, flag RGB|RGBA]
+ - validateColor invalid string with flags NULL be false [invalid string A]
+ - validateColor (hsla(100, 100, 100)) with flags NULL be false [invalid string B]
+ - validateColor hsla(100, 100, 100 with flags NULL be false [invalid string C]
+ - Check Exception throw for 99
+
+ \CoreLibs\Check\Email method tests
+
+ - getEmailRegex -1 will be ^[A-Za-z0-9!#$%&'*+\-\/=?^_`{|}~][A-Za-z0-9!#$%:\(\)&'*+\-\/=?^_`{|}~\.]{0,63}@(?!-)[A-Za-z0-9-]{1,63}(?
+
- getEmailRegex 10 will be ^[A-Za-z0-9!#$%&'*+\-\/=?^_`{|}~][A-Za-z0-9!#$%:\(\)&'*+\-\/=?^_`{|}~\.]{0,63}@(?!-)[A-Za-z0-9-]{1,63}(?
+
- getEmailRegex 1 will be @(.*)@(.*) [get email regex valid 1, will be 1]
+ - checkEmail test@test.com will be true [valid email]
+ - checkEmail '' will be false [invalid empty email]
+ - checkEmail -@- will be false [invalid email]
+ - checkEmail .test@test.com will be false [invalid email leading dot]
+ - checkEmail test@t_est.com will be false [invalid email invalid domain]
+ - checkEmail test@@test.com will be false [invalid email double @]
+ - checkEmail test@test..com will be false [invalid email double dot]
+ - checkEmail test@test. will be false [invalid email end with dot]
+ - checkEmail test@test.j will be false [invalid email bad top level]
+ - checkEmail test@@test..com will be false [invalid email double @ and double dot]
+ - checkEmailFull test@test.com will be array [valid email]
+ - checkEmailFull '' will be array [invalid empty email]
+ - checkEmailFull -@- will be array [invalid email]
+ - checkEmailFull .test@test.com will be array [invalid email leading dot]
+ - checkEmailFull test@t_est.com will be array [invalid email invalid domain]
+ - checkEmailFull test@@test.com will be array [invalid email double @]
+ - checkEmailFull test@test..com will be array [invalid email double dot]
+ - checkEmailFull test@test. will be array [invalid email end with dot]
+ - checkEmailFull test@test.j will be array [invalid email bad top level]
+ - checkEmailFull test@@test..com will be array [invalid email double @ and double dot]
+ - getEmailRegexErrorMessage 0 will be array [error 0 will return general]
+ - getEmailRegexErrorMessage 1 will be array [error 1 will return double @ error]
+ - getEmailRegexErrorMessage 2 will be array [error 2 will be invalid before @]
+ - getEmailRegexErrorMessage 3 will be array [error 3 will be invalid domain and top level]
+ - getEmailRegexErrorMessage 4 will be array [error 4 will be invalid domain]
+ - getEmailRegexErrorMessage 5 will be array [error 5 will be invalid domain top level only]
+ - getEmailRegexErrorMessage 6 will be array [error 6 will be domain double dot]
+ - getEmailRegexErrorMessage 7 will be array [error 7 will domain ends with dot]
+ - getEmailType test@test.com will be normal pc_html [email test@test.com is valid and matches normal pc_html]
+ - getEmailType test@docomo.ne.jp will be normal keitai_docomo [email test@docomo.ne.jp is valid and matches normal keitai_docomo]
+ - getEmailType test@softbank.ne.jp will be normal keitai_softbank [email test@softbank.ne.jp is valid and matches normal keitai_softbank]
+ - getEmailType test@i.softbank.ne.jp will be normal smartphone_softbank_iphone [email test@i.softbank.ne.jp is valid and matches normal smartphone_softbank_iphone]
+ - getEmailType '' will be normal invalid [email is empty and not valid normal]
+ - getEmailType test@test.com will be short pc [email test@test.com is valid and matches short pc]
+ - getEmailType test@docomo.ne.jp will be short docomo [email test@docomo.ne.jp is valid and matches short docomo]
+ - getEmailType test@softbank.ne.jp will be short softbank [email test@softbank.ne.jp is valid and matches short softbank]
+ - getEmailType test@i.softbank.ne.jp will be short iphone [email test@i.softbank.ne.jp is valid and matches short iphone]
+ - getEmailType '' will be short invalid [email is empty and not valid short]
+ - getShortEmailType keitai_docomo will be docomo [keitai_docomo matches to docomo]
+ - getShortEmailType keitai_kddi_ezweb will be kddi [keitai_kddi_ezweb matches to kddi]
+ - getShortEmailType keitai_kddi will be kddi [keitai_kddi matches to kddi]
+ - getShortEmailType keitai_kddi_tu-ka will be kddi [keitai_kddi_tu-ka matches to kddi]
+ - getShortEmailType keitai_kddi_sky will be kddi [keitai_kddi_sky matches to kddi]
+ - getShortEmailType keitai_softbank will be softbank [keitai_softbank matches to softbank]
+ - getShortEmailType smartphone_softbank_iphone will be iphone [smartphone_softbank_iphone matches to iphone]
+ - getShortEmailType keitai_softbank_disney will be softbank [keitai_softbank_disney matches to softbank]
+ - getShortEmailType keitai_softbank_vodafone will be softbank [keitai_softbank_vodafone matches to softbank]
+ - getShortEmailType keitai_softbank_j-phone will be softbank [keitai_softbank_j-phone matches to softbank]
+ - getShortEmailType keitai_willcom will be willcom [keitai_willcom matches to willcom]
+ - getShortEmailType keitai_willcom_pdx will be willcom [keitai_willcom_pdx matches to willcom]
+ - getShortEmailType keitai_willcom_bandai will be willcom [keitai_willcom_bandai matches to willcom]
+ - getShortEmailType keitai_willcom_pipopa will be willcom [keitai_willcom_pipopa matches to willcom]
+ - getShortEmailType keitai_willcom_ymobile will be willcom [keitai_willcom_ymobile matches to willcom]
+ - getShortEmailType keitai_willcom_emnet will be willcom [keitai_willcom_emnet matches to willcom]
+ - getShortEmailType pc_html will be pc [pc_html matches to pc]
+ - getShortEmailType invalid will be false [Not found will be bool false]
+
+ \CoreLibs\Check\Encoding method tests
+
+ - check encoding convert from UTF-8 to SJIS [valid test UTF-8 to SJIS (default)]
+ - check encoding convert from UTF-8 to SJIS [invalid test UTF-8 to SJIS (dots as code point)]
+ - check encoding convert from UTF-8 to SJIS [invalid test UTF-8 to SJIS (dots as string)]
+ - check encoding convert from UTF-8 to SJIS [invalid test UTF-8 to SJIS (none)]
+ - check encoding convert from UTF-8 to SJIS [invalid test UTF-8 to SJIS (long)]
+ - check encoding convert from UTF-8 to SJIS [invalid test UTF-8 to SJIS (entity)]
+
+ \CoreLibs\Check\File method tests
+
+ - getFilenameEnding filename.txt must be extension txt [filename.txt must be extension txt]
+ - getFilenameEnding filename.csv must be extension csv [filename.csv must be extension csv]
+ - getFilenameEnding filename.tsv must be extension tsv [filename.tsv must be extension tsv]
+ - getFilenameEnding file_does_not_exits must be extension '' [file_does_not_exits must be extension ]
+ - getLinesFromFile filename.txt must have 5 lines [filename.txt must have 5 lines]
+ - getLinesFromFile filename.csv must have 15 lines [filename.csv must have 15 lines]
+ - getLinesFromFile filename.tsv must have 0 lines [filename.tsv must have 0 lines]
+ - getLinesFromFile file_does_not_exits must have -1 lines [file_does_not_exits must have -1 lines]
+ - getMimeType filename.txt must be mime type text/plain [filename.txt must be mime type text/plain]
+ - getMimeType filename.csv must be mime type text/csv [filename.csv must be mime type text/csv]
+ - getMimeType filename.tsv must be mime type text/plain [filename.tsv must be mime type text/plain]
+ - getMimeType file_does_not_exits must be mime type '' [file_does_not_exits must be mime type ]
+
+ \CoreLibs\Check\PHPVersion method tests
+
+ - checkPHPVersion 7 and '' will be true [min 7]
+ - checkPHPVersion 7.4 and '' will be true [min 7.4]
+ - checkPHPVersion 7.4.1 and '' will be true [min 7.4.1]
+ - checkPHPVersion 10 and '' will be false [min 10]
+ - checkPHPVersion 10.0 and '' will be false [min 10.0]
+ - checkPHPVersion 10.0.0 and '' will be false [min 10.0.0]
+ - checkPHPVersion 7 and 10 will be true [min 7/max 10]
+ - checkPHPVersion 7 and 10.0 will be true [min 7/max 10.0]
+ - checkPHPVersion 7 and 10.0.0 will be true [min 7/max 10.0.0]
+ - checkPHPVersion 5 and 7 will be false [min 5/max 7]
+ - checkPHPVersion 5 and 7.4 will be false [min 5/max 7.4]
+ - checkPHPVersion 5 and 7.4.1 will be false [min 5/max 7.4.1]
+ - checkPHPVersion '' and 7 will be false [max 7]
+ - checkPHPVersion '' and 7.4 will be false [max 7.4]
+ - checkPHPVersion '' and 7.4.1 will be false [max 7.4.1]
+ - checkPHPVersion '' and 10 will be true [max 10]
+ - checkPHPVersion '' and 10.0 will be true [max 10.0]
+ - checkPHPVersion '' and 10.0.0 will be true [max 10.0.0]
+
+ Core Libs Combined Array Handler Find Arrays Missing Key (tests\CoreLibsCombinedArrayHandlerFindArraysMissingKey)
+
+ - Find missing single key with value search
+ - Find missing single key with key value search
+ - Find missing multiple keys
+ - Find missing key in nested arrays
+ - No missing keys
+ - Search value not found
+ - Different search value types
+ - Empty array
+ - Mixed array types
+ - Deep nesting path building
+ - Custom path separator
+ - Default path separator
+ - Path separator does not affect search logic
+ - Strict type checking
+
+ Core Libs Combined Array Handler Ksort Array (tests\CoreLibsCombinedArrayHandlerKsortArray)
+
+ - Ksort array basic ascending
+ - Ksort array descending
+ - Ksort array case insensitive ascending
+ - Ksort array case insensitive descending
+ - Ksort array case sensitivity comparison
+ - Ksort array numeric string keys
+ - Ksort array special characters
+ - Ksort array empty
+ - Ksort array single element
+ - Ksort array does not modify original
+ - Ksort array mixed value types
+ - Ksort array all parameter combinations
+ - Ksort array with data provider with data set "default"
+ - Ksort array with data provider with data set "reverse"
+ - Ksort array with data provider with data set "lowercase"
+ - Ksort array with data provider with data set "lowercase_reverse"
+
+ Core Libs Combined Array Handler Select Array From Option (tests\CoreLibsCombinedArrayHandlerSelectArrayFromOption)
+
+ - Empty array returns empty
+ - Basic string search
+ - Basic integer search
+ - Basic float search
+ - Basic boolean search
+ - Strict comparison
+ - Case insensitive search
+ - Case sensitive search
+ - Recursive search with flat result
+ - Recursive search with nested result
+ - Recursive search deep nesting
+ - Custom flat separator
+ - Non recursive search
+ - No matches found
+ - Missing lookup key
+ - Combined strict and case insensitive
+ - Boolean with case insensitive
+ - Array with numeric keys
+ - Recursive with mixed key types
+ - All parameters combined
+
+ Core Libs Combined Array Handler Sort Array (tests\CoreLibsCombinedArrayHandlerSortArray)
+
+ - Basic ascending sort
+ - Basic descending sort
+ - Ascending sort with key maintenance
+ - Descending sort with key maintenance
+ - String lower case sort
+ - String lower case sort reverse
+ - String lower case sort with keys
+ - String lower case sort reverse with keys
+ - Numeric string sorting
+ - Natural string sorting
+ - Empty array
+ - Single element array
+ - Array with null values
+ - Mixed data types
+ - Original array not modified
+ - Case sensitivity without lowercase
+ - All parameters combination
+ - Floating point numbers
+ - Duplicate values with key maintenance
+ - Sort parameter combinations with data set "basic_ascending"
+ - Sort parameter combinations with data set "basic_descending"
+ - Sort parameter combinations with data set "lowercase_ascending"
+ - Sort parameter combinations with data set "lowercase_descending"
+
+ \CoreLibs\Combined\ArrayHandler method tests
+
+ - arraySearchRecursive bar (key NULL) in array and will be array [find value]
+ - arraySearchRecursive bar (key nested) in array and will be array [find value with key]
+ - arraySearchRecursive not exists (key NULL) in array and will be array [not existing value]
+ - arraySearchRecursive 4 (key NULL) in array and will be array [find value int]
+ - arraySearchRecursive 4 (key NULL) in array and will be array [find value int as string]
+ - arraySearchRecursive 4 (key foobar) in array and will be array [find value int as string with key]
+ - arraySearchRecursive d (key NULL) in array and will be array [first level value]
+ - arraySearchRecursive foobar (key NULL) in array and will be array [find value, return int key]
+ - arraySearchRecursiveAll bar (key NULL) in array and will be array (old: true) [find value]
+ - arraySearchRecursiveAll bar (key NULL) in array and will be array (old: false) [find value, new type]
+ - arraySearchRecursiveAll bar (key nested) in array and will be array (old: true) [find value with key]
+ - arraySearchRecursiveAll not exists (key NULL) in array and will be array (old: true) [not existing value]
+ - arraySearchRecursiveAll not exists (key NULL) in array and will be array (old: false) [not existing value, new type]
+ - arraySearchSimple array searched with key: c / value: foo (strict: $flag) will be true [key/value exist]
+ - arraySearchSimple array searched with key: same / value: same (strict: $flag) will be true [key/value exists twice]
+ - arraySearchSimple array searched with key: not exists / value: not exists (strict: $flag) will be false [key/value not found]
+ - arraySearchSimple array searched with key: b / value: not exists (strict: $flag) will be false [key exists, value not]
+ - arraySearchSimple array searched with key: not exists / value: bar (strict: $flag) will be false [key not, value exists]
+ - arraySearchSimple array searched with key: 0 / value: d (strict: $flag) will be true [numeric key, value exists]
+ - arraySearchSimple array searched with key: 0 / value: d (strict: $flag) will be true [numeric key as string, value exists]
+ - arraySearchSimple array searched with key: 0 / value: d (strict: $flag) will be false [numeric key as string, value exists, strinct]
+ - arraySearchSimple array searched with key: foobar / value: 4 (strict: $flag) will be true [key exists, value numeric]
+ - arraySearchSimple array searched with key: foobar / value: 4 (strict: $flag) will be true [key exists, value numeric as string]
+ - arraySearchSimple array searched with key: foobar / value: 4 (strict: $flag) will be false [key exists, value numeric as string, strict]
+ - arraySearchSimple array searched with key: true / value: true (strict: $flag) will be true [key exists, value bool]
+ - arraySearchSimple array searched with key: true / value: true (strict: $flag) will be true [key exists, value bool as string]
+ - arraySearchSimple array searched with key: true / value: true (strict: $flag) will be false [key exists, value bool as string, strict]
+ - arraySearchSimple array searched with key: more / value: array (strict: $flag) will be true [array type, both exist]
+ - arraySearchSimple array searched with key: more / value: array (strict: $flag) will be true [array type, one exist]
+ - arraySearchSimple array searched with key: more / value: array (strict: $flag) will be false [array type, none exist]
+ - arraySearchSimple array searched with key: barbaz / value: array (strict: $flag) will be true [array type, both exist, not strict, int and string]
+ - arraySearchSimple array searched with key: barbaz / value: array (strict: $flag) will be true [array type, both exist, not strict, both string]
+ - arraySearchSimple array searched with key: barbaz / value: array (strict: $flag) will be true [array type, both exist, not strict, int and int]
+ - arraySearchSimple array searched with key: barbaz / value: array (strict: $flag) will be true [array type, both exist, strict, int and string]
+ - arraySearchSimple array searched with key: barbaz / value: array (strict: $flag) will be true [array type, both exist, strict, both string]
+ - arraySearchSimple array searched with key: barbaz / value: array (strict: $flag) will be true [array type, both exist, strict, int and int]
+ - arraySearchSimple array searched with key: zapzap / value: array (strict: $flag) will be false [array type, both exist, strict, int and int to string and string]
+ - arraySearchSimple array searched with key: zapzap / value: array (strict: $flag) will be true [array type, both exist, strict, string and string to string and string]
+ - arraySearchSimple array searched with key: zapzap / value: array (strict: $flag) will be true [array type, both exist, not strict, int and int to string and string]
+ - arraySearchKey Search array with keys and flat: NULL, prefix: NULL [find single, standard]
+ - arraySearchKey Search array with keys and flat: NULL, prefix: true [find single, prefix]
+ - arraySearchKey Search array with keys and flat: true, prefix: NULL [find single, flat]
+ - arraySearchKey Search array with keys and flat: true, prefix: true [find single, flat, prefix]
+ - arraySearchKey Search array with keys and flat: NULL, prefix: NULL [not found, standard]
+ - arraySearchKey Search array with keys and flat: NULL, prefix: true [not found, standard, prefix]
+ - arraySearchKey Search array with keys and flat: true, prefix: NULL [not found, flat]
+ - arraySearchKey Search array with keys and flat: true, prefix: true [not found, flat, prefix]
+ - arraySearchKey Search array with keys and flat: NULL, prefix: NULL [multiple found, standard]
+ - arraySearchKey Search array with keys and flat: true, prefix: NULL [multiple found, flat]
+ - arraySearchKey Search array with keys and flat: NULL, prefix: NULL [search multiple, standard]
+ - arraySearchKey Search array with keys and flat: NULL, prefix: true [search multiple, prefix]
+ - arraySearchKey Search array with keys and flat: true, prefix: NULL [search multiple, flat]
+ - arraySearchKey Search array with keys and flat: true, prefix: true [search multiple, flat, prefix]
+ - arrayMergeRecursive ... [two arrays]
+ - arrayMergeRecursive ... [two arrays, string flag]
+ - arrayMergeRecursive ... [non hash array merge, no string flag]
+ - arrayMergeRecursive ... [non hash array merge, string flag]
+ - arrayMergeRecursive with E_USER_WARNING [too view arguments]
+ - arrayMergeRecursive with E_USER_WARNING [only one array]
+ - arrayMergeRecursive with E_USER_WARNING [non array between array]
+ - arrayDiff array diff array will be array [one matching]
+ - arrayDiff array diff array will be array [all the same]
+ - arrayDiff array diff array will be array [all different]
+ - arrayDiff array diff array will be array [empty arrays]
+ - inArrayAny needle array in haystack array will be array [all exist in haystack]
+ - inArrayAny needle array in haystack array will be array [not all exist in haystack]
+ - inArrayAny needle array in haystack array will be false [none exist in haystack]
+ - genAssocArray array array with false or false and flag set only false will be array [non set]
+ - genAssocArray array array with a or false and flag set only false will be array [key set]
+ - genAssocArray array array with false or a and flag set only false will be array [value set]
+ - genAssocArray array array with a or b and flag set only false will be array [key and value set, add empty, null]
+ - genAssocArray array array with a or b and flag set only false will be array [key and value set, add empty]
+ - genAssocArray array array with a or b and flag set only true will be array [key/value set, skip empty]
+ - testFlattenArray array array will be array [array key/value, single]
+ - testFlattenArray array array will be array [array values, single]
+ - testFlattenArray array array will be array [array key/value, multi]
+ - testFlattenArray array array will be array [array with double values]
+ - flattenArrayKey array array will be array [array key/value, single]
+ - flattenArrayKey array array will be array [array values, single]
+ - flattenArrayKey array array will be array [array key/value, multi]
+ - flattenArrayKey array array will be array [array with double values]
+ - flattenArrayKeyLeavesOnly array array will be array [array key/value, single]
+ - flattenArrayKeyLeavesOnly array array will be array [array values, single]
+ - flattenArrayKeyLeavesOnly array array will be array [array key/value, multi]
+ - flattenArrayKeyLeavesOnly array array will be array [array with double values]
+ - arrayFlatForKey array array will be array [all present, single level]
+ - arrayFlatForKey array array will be array [no sub arrays]
+ - arrayFlatForKey array array will be array [sub arrays with missing]
+ - arrayFlatForKey array array will be array [deep nested sub arrays]
+ - arrayGetNextPrevKey get next/prev key for b wtih a/c [find, ok]
+ - arrayGetNextPrevKey get next/prev key for a wtih NULL/b [find, first]
+ - arrayGetNextPrevKey get next/prev key for c wtih b/NULL [find, last]
+ - arrayGetNextPrevKey get next/prev key for z wtih NULL/NULL [find, not found]
+ - arrayGetNextPrevKey get next/prev key for 1 wtih 0/2 [int, index]
+ - arrayReturnMatchingKeyOnly get only selected key entries from array [limited entries]
+ - arrayReturnMatchingKeyOnly get only selected key entries from array [limited entries, with one wrong key]
+ - arrayReturnMatchingKeyOnly get only selected key entries from array [wrong keys only]
+ - arrayReturnMatchingKeyOnly get only selected key entries from array [empty keys]
+ - arrayModifyKey check that key is correctly modified with Prefix: and .suffix [prefix and suffix add]
+ - arrayModifyKey check that key is correctly modified with Prefix: and '' [prefix add only]
+ - arrayModifyKey check that key is correctly modified with '' and .suffix [suffix add only]
+ - arrayModifyKey check that key is correctly modified with '' and .suffix [empty array]
+ - arrayModifyKey check that key is correctly modified with '' and '' [no suffix or prefix]
+ - arrayModifyKey check that key is correctly modified with '' and .suffix [integer index mixed]
+ - sortArray sort array with lower case NULL, reverse NULL, maintain keys NULL with expeted array [sort default]
+ - sortArray sort array with lower case false, reverse false, maintain keys false with expeted array [sort param set]
+ - sortArray sort array with lower case true, reverse false, maintain keys false with expeted array [sort lower case]
+ - sortArray sort array with lower case false, reverse true, maintain keys false with expeted array [sort reverse]
+ - sortArray sort array with lower case true, reverse true, maintain keys false with expeted array [sort lower case + reverse]
+ - sortArray sort array with lower case false, reverse false, maintain keys false with expeted array [keys, do not maintain, default]
+ - sortArray sort array with lower case false, reverse false, maintain keys true with expeted array [sort maintain keys]
+ - sortArray sort array with lower case true, reverse false, maintain keys true with expeted array [sort maintain keys + lower case]
+ - sortArray sort array with lower case false, reverse true, maintain keys true with expeted array [sort maintain keys + reverse]
+ - sortArray sort array with lower case true, reverse true, maintain keys true with expeted array [sort maintain keys + lower case + reverse]
+ - sortArray sort array with lower case false, reverse false, maintain keys false with expeted array [empty]
+ - sortArray sort array with lower case false, reverse false, maintain keys false with expeted array [null entries]
+ - sortArray sort array with lower case false, reverse false, maintain keys false with expeted array [double entries]
+ - ksortArray sort array with lower case false, reverse false with expeted array [sort keys]
+ - ksortArray sort array with lower case true, reverse false with expeted array [sort keys + lower case]
+ - ksortArray sort array with lower case false, reverse true with expeted array [sort keys + reverse]
+ - ksortArray sort array with lower case true, reverse true with expeted array [sort keys + lower case + reverse]
+ - ksortArray sort array with lower case false, reverse false with expeted array [empty]
+ - findArraysMissingKey array find other_block with NULL and missing time_validation [find, no key set]
+ - findArraysMissingKey array find other_block with pflaume and missing time_validation [find, key set]
+ - findArraysMissingKey array find other_block with pflaume and missing time_validation [find, key set, different separator]
+ - findArraysMissingKey array find other_block with pflaume and missing array [find, key set, multiple check]
+ - findArraysMissingKey array find access_d_cd with NULL and missing time_validation [has set]
+ - findArraysMissingKey array find not_found with NULL and missing value [not found]
+ - findArraysMissingKey array find something with NULL and missing other [empty]
+ - selectArrayFromOption array find lookup with 1, strict: false, case sensitive: false, recursive: false, flag result: $flag_result, flag separator: NULL amd expected array [search, flat with found]
+ - selectArrayFromOption array find lookup with 1, strict: false, case sensitive: false, recursive: true, flag result: $flag_result, flag separator: NULL amd expected array [search, recusrive with found]
+ - selectArrayFromOption array find lookup with 1, strict: false, case sensitive: false, recursive: true, flag result: $flag_result, flag separator: + amd expected array [search, recusrive with found, other separator]
+ - selectArrayFromOption array find lookup with 1, strict: false, case sensitive: false, recursive: true, flag result: $flag_result, flag separator: NULL amd expected array [search, recusrive with found, not flat result]
+ - selectArrayFromOption array find other with Other, strict: false, case sensitive: true, recursive: false, flag result: $flag_result, flag separator: NULL amd expected array [search case insensitive]
+ - selectArrayFromOption array find other with Other, strict: false, case sensitive: false, recursive: false, flag result: $flag_result, flag separator: NULL amd expected array [search case sensitiv]
+ - selectArrayFromOption array find strict with 2, strict: true, case sensitive: false, recursive: false, flag result: $flag_result, flag separator: NULL amd expected array [search strict]
+ - selectArrayFromOption array find strict with 2, strict: false, case sensitive: false, recursive: false, flag result: $flag_result, flag separator: NULL amd expected array [search not strict]
+ - selectArrayFromOption array find something with NOT_SET_AT_ALL, strict: false, case sensitive: false, recursive: false, flag result: $flag_result, flag separator: NULL amd expected array [empty]
+ - getRandomEntryFromArray get random value from array [empty array]
+ - getRandomEntryFromArray get random value from array [single element array]
+ - getRandomEntryFromArray get random value from array [multiple elements array]
+ - removeArrayEntryByValue Remove '' from array array, with NULL [empty array]
+ - removeArrayEntryByValue Remove only from array array, with NULL [single element array]
+ - removeArrayEntryByValue Remove foo from array array, with NULL [single element array, not found]
+ - removeArrayEntryByValue Remove second from array array, with NULL [multiple elements array]
+ - removeArrayEntryByValue Remove first from array array, with NULL [array with multiple identical elements]
+ - removeArrayEntryByValue Remove second from array array, with NULL [array with multiple identical elements, other remove]
+ - removeArrayEntryByValue Remove value2 from array array, with NULL [array with key value entries]
+ - removeArrayEntryByValue Remove array from array array, with NULL [nested array, array match]
+ - removeArrayEntryByValue Remove 3 from array array, with NULL [strict test, off]
+ - removeArrayEntryByValue Remove 3 from array array, with true [strict test, on]
+ - removeArrayEntryByValue Remove false from array array, with NULL [strict test bool, off]
+ - removeArrayEntryByValue Remove false from array array, with true [strict test bool, on]
+ - removeArrayEntryByValue Remove 3.14 from array array, with NULL [strict test float, off]
+ - removeArrayEntryByValue Remove 3.14 from array array, with true [strict test float, on]
+ - removeArrayEntryByValue Remove 1 from array array, with NULL [stric test float and int, off]
+ - removeArrayEntryByValue Remove 1 from array array, with true [stric test float and int, on]
+ - addStringToEachValueInArray Add string to each value in array, with NULL [empty array]
+ - addStringToEachValueInArray Add '' to each value in array, with NULL [empty string to add]
+ - addStringToEachValueInArray Add pre_ to each value in array, with true [prefix true]
+ - addStringToEachValueInArray Add _suf to each value in array, with false [prefix false]
+ - addStringToEachValueInArray Add X to each value in array, with true [mixed values]
+ - createSortedArrayByKey Sort the array by keys recursively [empty]
+ - createSortedArrayByKey Sort the array by keys recursively [flat array]
+ - createSortedArrayByKey Sort the array by keys recursively [nested array]
+ - createSortedArrayByKey Sort the array by keys recursively [deeply nested array]
+ - createSortedArrayByKey Sort the array by keys recursively [mixed key type]
+
+ \CoreLibs\Combined\DateTime method tests
+
+ - dateStringFormat 1641515890 (mt false, float mt false) will be 2022-01-07 09:38:10 [valid timestamp no microtime]
+ - dateStringFormat 1641515890 (mt true, float mt false) will be 2022-01-07 09:38:10 [valid timestamp with microtime]
+ - dateStringFormat 1641515890 (mt true, float mt true) will be 2022-01-07 09:38:10 [valid timestamp with microtime float]
+ - dateStringFormat 1641515890.123456 (mt true, float mt false) will be 2022-01-07 09:38:10 1235ms [valid micro timestamp with microtime]
+ - dateStringFormat 1641515890.123456 (mt true, float mt true) will be 2022-01-07 09:38:10.1235 [valid micro timestamp with microtime float]
+ - dateStringFormat 1641515890.123456 (mt false, float mt false) will be 2022-01-07 09:38:10 [valid micro timestamp no microtime]
+ - dateStringFormat -123123 (mt false, float mt false) will be 1969-12-30 22:47:57 [invalid timestamp]
+ - timeStringFormat 3600 (microtime false) will be 1h 0m 0s [on hour]
+ - timeStringFormat 1641515890 (microtime false) will be 18999d 0h 38m 10s [interval no microtime]
+ - timeStringFormat 1641515890 (microtime true) will be 18999d 0h 38m 10s 0ms [interval with microtime]
+ - timeStringFormat 1641515890.123456 (microtime false) will be 18999d 0h 38m 10s [micro interval no microtime]
+ - timeStringFormat 1641515890.123456 (microtime true) will be 18999d 0h 38m 10s 124ms [micro interval with microtime]
+ - timeStringFormat -1641515890 (microtime false) will be -18999d 0h 38m 10s [negative interval no microtime]
+ - timeStringFormat 0.123456 (microtime true) will be 0s 123ms [microtime only]
+ - timeStringFormat 30.123456 (microtime true) will be 30s 123ms [seconds only]
+ - timeStringFormat 90.123456 (microtime true) will be 1m 30s 123ms [minutes only]
+ - timeStringFormat 3690.123456 (microtime true) will be 1h 1m 30s 123ms [hours only]
+ - timeStringFormat 90090.123456 (microtime true) will be 1d 1h 1m 30s 123ms [days only]
+ - timeStringFormat 1d 1h 1m 30s 1235ms (microtime true) will be 1d 1h 1m 30s 1235ms [already set]
+ - timeStringFormat xyz (microtime true) will be 0s [invalid data]
+ - timeStringFormat 999999999999999 (microtime false) will be 1s [out of bounds timestamp]
+ - intervalStringFormat 3600 (microtime false) will be 1h 0m 0s [on hour]
+ - intervalStringFormat 1641515890 (microtime false) will be 18999d 0h 38m 10s [interval no microtime]
+ - intervalStringFormat 1641515890 (microtime true) will be 18999d 0h 38m 10s 0ms [interval with microtime]
+ - intervalStringFormat 1641515890.123456 (microtime false) will be 18999d 0h 38m 10s [micro interval no microtime]
+ - intervalStringFormat 1641515890.123456 (microtime true) will be 18999d 0h 38m 10s 124ms [micro interval with microtime]
+ - intervalStringFormat -1641515890 (microtime false) will be -18999d 0h 38m 10s [negative interval no microtime]
+ - intervalStringFormat 0.123456 (microtime true) will be 0s 123ms [microtime only]
+ - intervalStringFormat 30.123456 (microtime true) will be 30s 123ms [seconds only]
+ - intervalStringFormat 90.123456 (microtime true) will be 1m 30s 123ms [minutes only]
+ - intervalStringFormat 3690.123456 (microtime true) will be 1h 1m 30s 123ms [hours only]
+ - intervalStringFormat 90090.123456 (microtime true) will be 1d 1h 1m 30s 123ms [days only]
+ - intervalStringFormat 1d 1h 1m 30s 1235ms (microtime true) will be 1d 1h 1m 30s 1235ms [already set]
+ - intervalStringFormat xyz (microtime true) will be 0s [invalid data]
+ - intervalStringFormat 999999999999999 (microtime false) will be 1s [out of bounds timestamp]
+ - intervalStringFormat $input will be 1m / NULL [(60) default value]
+ - intervalStringFormat $input will be 1m 0s 0ms / NULL [(60) default value, skip_last_zero:false]
+ - intervalStringFormat $input will be 2m 100ms / NULL [(120.1) default value]
+ - intervalStringFormat $input will be 2m 0s 100ms / NULL [(120.1) default value, skip_zero:false]
+ - intervalStringFormat $input will be 2m 100ms / NULL [(120.1) default value, skip_last_zero:false]
+ - intervalStringFormat $input will be 1h 1s / NULL [(3601) default value]
+ - intervalStringFormat $input will be 1h 0m 1s / NULL [(3601) default value, skip_zero:false]
+ - intervalStringFormat $input will be 1h 1s 0ms / NULL [(3601) default value, skip_last_zero:false]
+ - intervalStringFormat $input will be NULL / array [exception: \UnexpectedValueException:1]
+ - intervalStringFormat: test Exceptions with data set "UnexpectedValueException: 1 A"
+ - intervalStringFormat: test Exceptions with data set "UnexpectedValueException: 1 B"
+ - intervalStringFormat: test Exceptions with data set "LengthException: 3"
+ - intervalStringFormat: test Exceptions with data set "UnexpectedValueException: 4"
+ - intervalStringFormat: test Exceptions with data set "UnexpectedValueException: 5"
+ - stringToTime 18999d 0h 38m 10s will be 1641515890 [interval no microtime]
+ - stringToTime 18999d 0h 38m 10s 1234567890ms will be 1642750457.89 [micro interval with microtime]
+ - stringToTime -18999d 0h 38m 10s will be -1641515890 [negative interval no microtime]
+ - stringToTime 0s 1235ms will be 1.235 [microtime only]
+ - stringToTime 30s 1235ms will be 31.235 [seconds only]
+ - stringToTime 1m 30s 1235ms will be 91.235 [minutes only]
+ - stringToTime 1h 1m 30s 1235ms will be 3691.235 [hours only]
+ - stringToTime 1d 1h 1m 30s 1235ms will be 90091.235 [days only]
+ - stringToTime 1day 1hour 1min 30second 1235millisecond will be 90091.235 [days only with long name]
+ - stringToTime 5day will be 432000 [day singular]
+ - stringToTime 3days will be 259200 [days plural]
+ - stringToTime 2days 5h will be 190800 [days with space]
+ - stringToTime 1day1h will be 90000 [day without space]
+ - stringToTime 2hour will be 7200 [hour singular]
+ - stringToTime 4hours will be 14400 [hours plural]
+ - stringToTime 3hours 30m will be 12600 [hours with space]
+ - stringToTime 1hour30m will be 5400 [hour without space]
+ - stringToTime 45min will be 2700 [min short]
+ - stringToTime 1minute will be 60 [minute singular]
+ - stringToTime 10minutes will be 600 [minutes plural]
+ - stringToTime 5minutes 20s will be 320 [minutes with space]
+ - stringToTime 2min30s will be 150 [min without space]
+ - stringToTime 30sec will be 30 [sec short]
+ - stringToTime 1second will be 1 [second singular]
+ - stringToTime 45seconds will be 45 [seconds plural]
+ - stringToTime 15seconds 500ms will be 15.5 [seconds with space]
+ - stringToTime 10sec250ms will be 10.25 [sec without space]
+ - stringToTime 500ms will be 0.5 [ms short]
+ - stringToTime 250millis will be 0.25 [millis short]
+ - stringToTime 250millisec will be 0.25 [millisec medium singular]
+ - stringToTime 250millisecs will be 0.25 [millisecs medium plural]
+ - stringToTime 250millisec will be 0.25 [misec medium singular]
+ - stringToTime 250millisecs will be 0.25 [msecs medium plural]
+ - stringToTime 1millisecond will be 0.001 [millisecond long singular]
+ - stringToTime 999milliseconds will be 0.999 [milliseconds long plural]
+ - stringToTime -5d will be -432000 [negative days]
+ - stringToTime -3h will be -10800 [negative hours]
+ - stringToTime -45m will be -2700 [negative minutes]
+ - stringToTime -30s will be -30 [negative seconds]
+ - stringToTime -500ms will be -0.5 [negative milliseconds]
+ - stringToTime -2days 3hours 15minutes 30seconds 250milliseconds will be -184530.25 [negative complex]
+ - stringToTime 1d 2h 3m 4s 5ms will be 93784.005 [all components short]
+ - stringToTime 2days 3hours 4minutes 5seconds 678milliseconds will be 183845.678 [all components long]
+ - stringToTime 1day 2h 3minutes 4sec 100ms will be 93784.1 [mixed short and long]
+ - stringToTime 1d2h3m4s5ms will be 93784.005 [no spaces between components]
+ - stringToTime 5d 123ms will be 432000.123 [only days and milliseconds]
+ - stringToTime 2h 45s will be 7245 [only hours and seconds]
+ - stringToTime 30m 500ms will be 1800.5 [only minutes and milliseconds]
+ - stringToTime 0s will be 0 [zero seconds]
+ - stringToTime 0s 123ms will be 0.123 [zero with milliseconds]
+ - stringToTime 365days will be 31536000 [large days]
+ - stringToTime 48hours will be 172800 [large hours]
+ - stringToTime 1440minutes will be 86400 [large minutes]
+ - stringToTime 86400seconds will be 86400 [large seconds]
+ - stringToTime 1d 2h 3m 4s 5ms will be 93784.005 [extra spaces]
+ - stringToTime 1d 2h3m 4s5ms will be 93784.005 [mixed spaces and no spaces]
+ - stringToTime 7d will be 604800 [only days short]
+ - stringToTime 12h will be 43200 [only hours short]
+ - stringToTime 90m will be 5400 [only minutes short]
+ - stringToTime 120s will be 120 [only seconds short]
+ - stringToTime 1500ms will be 1.5 [only milliseconds short]
+ - stringToTime 1641515890 will be 1641515890 [already set]
+ - stringToTime xyz will be xyz [invalid data]
+ - stringToTime will be [empty data]
+ - stringToTime 99999999999999999999d will be 8.64E+24 [out of bound data]
+ - stringToTime - 9 d 2h 58minutes 35 seconds 123 ms will be -788315.123 [spaces inbetween]
+ - stringToTime invalid input will throw exception if requested
+ - stringToTime empty input will throw exception if requested
+ - checkDate 2021-12-12 will be true [valid date with -]
+ - checkDate 2021/12/12 will be true [valid date with /]
+ - checkDate 2021-12-12 12:12:12 will be true [valid date time with -]
+ - checkDate 2021-31-31 will be false [invalid date]
+ - checkDate xyz will be false [invalid date string]
+ - checkDate 9999-12-31 will be true [out of bound date]
+ - checkDateTime 2021-12-12 12:12:12 will be true [valid date time with -]
+ - checkDateTime 2021/12/12 12:12:12 will be true [valid date time with /]
+ - checkDateTime 2021/12/12 12:12 will be true [vald date time with hour/min]
+ - checkDateTime 2021-12-12 will be false [valid date missing time]
+ - checkDateTime 2021-12-12 ab:cd will be false [valid date invalid time string]
+ - checkDateTime 2021-12-12 35:12 will be false [invalid hour +]
+ - checkDateTime 2021-12-12 -12:12 will be false [invalid hour -]
+ - checkDateTime 2021-12-12 23:65:12 will be false [invalid minute +]
+ - checkDateTime 2021-12-12 23:-12:12 will be false [invalid minute -]
+ - checkDateTime 2021-12-12 23:12:99 will be false [invalid seconds +]
+ - checkDateTime 2021-12-12 23:12:-12 will be false [invalid seconds -]
+ - checkDateTime 2021-12-12 23:12:ss will be false [invalid seconds string]
+ - compareDate 2020-12-12 compared to 2021-12-12 will be -1 [first date smaller]
+ - compareDate 2020-12-12 compared to 2020-12-12 will be 0 [dates equal]
+ - compareDate 2021-12-12 compared to 2020-12-12 will be 1 [second date smaller]
+ - compareDate 2020-12-12 12:12:12 compared to 2020-12-12 13:13:13 will be 0 [dates equal with different time]
+ - compareDate -- compared to -- will be false [invalid dates --]
+ - compareDate '' compared to '' will be false [empty dates]
+ - compareDate not a date compared to not a date either will be false [invalid dates]
+ - compareDate 1990-01-01 compared to not a date either will be false [invalid end date]
+ - compareDate 1900-1-1 compared to 9999-12-31 will be -1 [out of bound dates]
+ - compareDateTime 2020-12-12 compared to 2021-12-12 will be -1 [first date smaller no time]
+ - compareDateTime 2020-12-12 compared to 2020-12-12 will be 0 [dates equal no timestamp]
+ - compareDateTime 2021-12-12 compared to 2020-12-12 will be 1 [second date smaller no timestamp]
+ - compareDateTime 2020-12-12 12:12:12 compared to 2020-12-12 13:13:13 will be -1 [date equal first time smaller]
+ - compareDateTime 2020-12-12 12:12:12 compared to 2020-12-12 12:12:12 will be 0 [date equal time equal]
+ - compareDateTime 2020-12-12 13:13:13 compared to 2020-12-12 12:12:12 will be 1 [date equal second time smaller]
+ - compareDateTime 2020-12-12 13:99:13 compared to 2020-12-12 12:12:99 will be false [valid date invalid time]
+ - compareDateTime 2020-12-12 13:12:13 compared to 2020-12-12 12:12:99 will be false [valid date invalid end time]
+ - compareDateTime -- compared to -- will be false [invalid datetimes --]
+ - compareDateTime '' compared to '' will be false [empty datetimess]
+ - compareDateTime not a date compared to not a date either will be false [invalid date times]
+ - compareDateTime 1990-01-01 12:12:12 compared to not a date either will be false [invalid end date time]
+ - calcDaysInterval 2020/1/1 compared to 2020/1/30 will be array [valid interval / not named array]
+ - calcDaysInterval 2020/1/1 compared to 2020/1/30 will be array [valid interval / named array]
+ - calcDaysInterval 2020-1-1 compared to 2020-1-30 will be array [valid interval with "-"]
+ - calcDaysInterval 2020/1/1 12:12:12 compared to 2020/1/30 13:13:13 will be array [valid interval with time]
+ - calcDaysInterval abc compared to xyz will be array [invalid dates]
+ - calcDaysInterval 1900-1-1 compared to 9999-12-31 will be array [out of bound dates]
+ - calcDaysInterval 2020/1/1 compared to 2020/1/30 will be array [exclude end date]
+ - calcDaysInterval 2020/1/1 compared to 2020/1/30 will be array [exclude start date]
+ - calcDaysInterval 2020/1/1 compared to 2020/1/30 will be array [exclude start and end date]
+ - calcDaysInterval 2020/1/30 compared to 2020/1/1 will be array [reverse: valid interval]
+ - calcDaysInterval 2020/1/30 compared to 2020/1/1 will be array [reverse: exclude end date]
+ - calcDaysInterval 2020/1/30 compared to 2020/1/1 will be array [reverse: exclude start date]
+ - calcDaysInterval 2020/1/30 compared to 2020/1/1 will be array [reverse: exclude start and end date]
+ - weekdayListProvider 0 (short NULL) will be Inv [0 invalid]
+ - weekdayListProvider 0 (short true) will be Invalid [0 invalid long]
+ - weekdayListProvider 1 (short NULL) will be Mon [1 short]
+ - weekdayListProvider 1 (short true) will be Monday [1 long]
+ - weekdayListProvider 2 (short NULL) will be Tue [2 short]
+ - weekdayListProvider 2 (short true) will be Tuesday [2 long]
+ - weekdayListProvider 3 (short NULL) will be Wed [3 short]
+ - weekdayListProvider 3 (short true) will be Wednesday [3 long]
+ - weekdayListProvider 4 (short NULL) will be Thu [4 short]
+ - weekdayListProvider 4 (short true) will be Thursday [4 long]
+ - weekdayListProvider 5 (short NULL) will be Fri [5 short]
+ - weekdayListProvider 5 (short true) will be Friday [5 long]
+ - weekdayListProvider 6 (short NULL) will be Sat [6 short]
+ - weekdayListProvider 6 (short true) will be Saturday [6 long]
+ - weekdayListProvider 7 (short NULL) will be Sun [7 short]
+ - weekdayListProvider 7 (short true) will be Sunday [7 long]
+ - weekdayListProvider 8 (short NULL) will be Inv [8 invalid]
+ - weekdayListProvider 8 (short true) will be Invalid [8 invalid long]
+ - setWeekdayNumberFromDate 2022-02-31 will be -1 [invalid date]
+ - setWeekdayNumberFromDate 2022-07-25 will be 1 [1: monday]
+ - setWeekdayNumberFromDate 2022-07-26 will be 2 [2: tuesday]
+ - setWeekdayNumberFromDate 2022-07-27 will be 3 [3: wednesday]
+ - setWeekdayNumberFromDate 2022-07-28 will be 4 [4: thursday]
+ - setWeekdayNumberFromDate 2022-07-29 will be 5 [5: friday]
+ - setWeekdayNumberFromDate 2022-07-30 will be 6 [6: saturday]
+ - setWeekdayNumberFromDate 2022-07-31 will be 7 [7: sunday]
+ - setWeekdayNameFromDate 2022-02-31 (short NULL) will be Inv [invalid date short]
+ - setWeekdayNameFromDate 2022-02-31 (short true) will be Invalid [invalid date long]
+ - setWeekdayNameFromDate 2022-07-25 (short NULL) will be Mon [Mon short]
+ - setWeekdayNameFromDate 2022-07-25 (short true) will be Monday [Monday long]
+ - setWeekdayNameFromDate 2022-07-26 (short NULL) will be Tue [Tue short]
+ - setWeekdayNameFromDate 2022-07-26 (short true) will be Tuesday [Tuesday long]
+ - setWeekdayNameFromDate 2022-07-27 (short NULL) will be Wed [Wed short]
+ - setWeekdayNameFromDate 2022-07-27 (short true) will be Wednesday [Wednesday long]
+ - setWeekdayNameFromDate 2022-07-28 (short NULL) will be Thu [Thu short]
+ - setWeekdayNameFromDate 2022-07-28 (short true) will be Thursday [Thursday long]
+ - setWeekdayNameFromDate 2022-07-29 (short NULL) will be Fri [Fri short]
+ - setWeekdayNameFromDate 2022-07-29 (short true) will be Friday [Friday long]
+ - setWeekdayNameFromDate 2022-07-30 (short NULL) will be Sat [Sat short]
+ - setWeekdayNameFromDate 2022-07-30 (short true) will be Saturday [Saturday long]
+ - setWeekdayNameFromDate 2022-07-31 (short NULL) will be Sun [Sun short]
+ - setWeekdayNameFromDate 2022-07-31 (short true) will be Sunday [Sunday long]
+ - dateRangeHasWeekend 2023-07-03 and 2023-07-04 are expected weekend false [no weekend]
+ - dateRangeHasWeekend 2023-07-01 and 2023-07-04 are expected weekend true [start weekend sat]
+ - dateRangeHasWeekend 2023-07-02 and 2023-07-04 are expected weekend true [start weekend sun]
+ - dateRangeHasWeekend 2023-07-03 and 2023-07-08 are expected weekend true [end weekend sat]
+ - dateRangeHasWeekend 2023-07-03 and 2023-07-09 are expected weekend true [end weekend sun]
+ - dateRangeHasWeekend 2023-07-03 and 2023-07-27 are expected weekend true [long period > 6 days]
+ - dateRangeHasWeekend 2023-07-04 and 2023-07-03 are expected weekend false [reverse: no weekend]
+ - dateRangeHasWeekend 2023-07-04 and 2023-07-01 are expected weekend true [reverse: start weekend sat]
+ - dateRangeHasWeekend 2023-07-04 and 2023-07-02 are expected weekend true [reverse: start weekend sun]
+ - dateRangeHasWeekend 2023-07-08 and 2023-07-03 are expected weekend true [reverse: end weekend sat]
+ - dateRangeHasWeekend 2023-07-09 and 2023-07-03 are expected weekend true [reverse: end weekend sun]
+ - dateRangeHasWeekend 2023-07-27 and 2023-07-03 are expected weekend true [reverse: long period > 6 days]
+
+ \CoreLibs\Convert\Byte method tests
+
+ - humanReadableByteFormat 1024 will be 1 KB, 1.02 KiB SI, 1KB no space, 1.00 KB adjust, 1.02KiB SI/no space [string number]
+ - humanReadableByteFormat 1024 MB will be 1024 MB, 1024 MB SI, 1024 MB no space, 1024 MB adjust, 1024 MB SI/no space [invalid string number]
+ - humanReadableByteFormat -123123123 will be -117.42 MB, -123.12 MiB SI, -117.42MB no space, -117.42 MB adjust, -123.12MiB SI/no space [negative number]
+ - humanReadableByteFormat 999999 will be 976.56 KB, 1 MiB SI, 976.56KB no space, 976.56 KB adjust, 1MiB SI/no space [kilobyte minus one]
+ - humanReadableByteFormat 999999999 will be 953.67 MB, 1 GiB SI, 953.67MB no space, 953.67 MB adjust, 1GiB SI/no space [megabyte minus one]
+ - humanReadableByteFormat 254779258 will be 242.98 MB, 254.78 MiB SI, 242.98MB no space, 242.98 MB adjust, 254.78MiB SI/no space [megabyte]
+ - humanReadableByteFormat 999999999999999 will be 909.49 TB, 1 PiB SI, 909.49TB no space, 909.49 TB adjust, 1PiB SI/no space [terabyte minus one]
+ - humanReadableByteFormat 588795544887632 will be 535.51 TB, 588.8 TiB SI, 535.51TB no space, 535.51 TB adjust, 588.8TiB SI/no space [terabyte]
+ - humanReadableByteFormat 999999999999999999 will be 888.18 PB, 1 EiB SI, 888.18PB no space, 888.18 PB adjust, 1EiB SI/no space [petabyte minus one]
+ - humanReadableByteFormat 9223372036854775807 will be 8 EB, 9.22 EiB SI, 8EB no space, 8.00 EB adjust, 9.22EiB SI/no space [max int value]
+ - humanReadableByteFormat 1.0E+21 will be 867.36 EB, 1000 EiB SI, 867.36EB no space, 867.36 EB adjust, 1000EiB SI/no space [exabyte minus 1]
+ - stringByteFormat -117.42 MB will be -123123794 and -117420000 SI [negative number]
+ - stringByteFormat 242.98 MB will be 254782996 and 242980000 SI [megabyte]
+ - stringByteFormat 254.78 MiB will be 267156193 and 254780000 SI [megabyte si]
+ - stringByteFormat 1 EiB will be 1152921504606846976 and 1000000000000000000 SI [petabyte]
+ - stringByteFormat 8 EB will be 0 and 0 SI [max int]
+ - stringByteFormat 867.36EB will be 0 and 0 SI [exabyte, overflow]
+ - stringByteFormat 1000EB will be 0 and 0 SI [huge exabyte, overflow]
+ - Test exception for humanReadableByteFormat with flag 99
+ - Test exception for stringByteFormat with flag 1
+ - Test exception for stringByteFormat with flag 2
+ - Test exception for stringByteFormat with flag 99
+
+ \CoreLibs\Convert\Color\Color method tests
+
+ - Single
+ - Convert from and to RGB via HSL, HWB, HSB/V
+ - Convert from and to HSL via RGB, HWB, HSB/V
+ - Convert from and to HSB via RGB, HWB, HSL
+ - Convert from and to HWB via RGB, HSL, HSB/V
+ - Convert from and to RGB via hex
+ - Convert from and to RGB linear conversion check
+ - Convert from and to RGB to OkLab / OkLch
+ - Convert from and to OkLab / OkLch
+ - Convert from and to RGB to Cie Lab / Cie Lch
+ - Convert from and to Cie Lab / Cie Lch
+ - Exception handling for HSB for error 1 [H]
+ - Exception handling for HSB for error 1 [H close]
+ - Exception handling for HSB for error 2 [S/W]
+ - Exception handling for HSB for error 2 [S/W close]
+ - Exception handling for HSB for error 3 [L/B]
+ - Exception handling for HSB for error 3 [L/B close]
+ - Exception handling for HSB general calls
+ - Exception handling for HSL for error 1 [H]
+ - Exception handling for HSL for error 1 [H close]
+ - Exception handling for HSL for error 2 [S/W]
+ - Exception handling for HSL for error 2 [S/W close]
+ - Exception handling for HSL for error 3 [L/B]
+ - Exception handling for HSL for error 3 [L/B close]
+ - Exception handling for HSL general calls
+ - Exception handling for HWB for error 1 [H]
+ - Exception handling for HWB for error 1 [H close]
+ - Exception handling for HWB for error 2 [S/W]
+ - Exception handling for HWB for error 2 [S/W close]
+ - Exception handling for HWB for error 3 [L/B]
+ - Exception handling for HWB for error 3 [L/B close]
+ - Exception handling for HWB general calls
+ - Exception handling for RGB for error 1 [R]
+ - Exception handling for RGB for error 1 [G]
+ - Exception handling for RGB for error 1 [B]
+ - Exception handling for RGB for error 2 [R linear]
+ - Exception handling for RGB for error 2 [G linear]
+ - Exception handling for RGB for error 2 [B linear]
+ - Exception handling for RGB general calls
+ - Exception handling for RGB setFromHex failues
+ - Exception handling for Lab for error 1 [L CieLab]
+ - Exception handling for Lab for error 1 [L OkLab]
+ - Exception handling for Lab for error 2 [a CieLab]
+ - Exception handling for Lab for error 2 [a OkLab]
+ - Exception handling for Lab for error 3 [b CieLab]
+ - Exception handling for Lab for error 3 [b OkLab]
+ - Exception handling for Lab general calls
+ - Exception handling for LCH general calls
+ - Exception handling for XYZ general calls
+
+ \CoreLibs\Convert\Colors legacy method tests
+
+ - rgb2hex 10,100,200 will be 0a64c8 [color]
+ - rgb2hex 12,12,12 will be 0c0c0c [gray]
+ - rgb2hex 0,0,0 will be 000000 [black]
+ - rgb2hex 255,255,255 will be ffffff [white]
+ - rgb2hex -12,300,12 will be false [invalid color red & green]
+ - rgb2hex -12,12,12 will be false [invalid color red ]
+ - rgb2hex 12,-12,12 will be false [invalid color green ]
+ - rgb2hex 12,12,-12 will be false [invalid color blue ]
+ - hex2rgb #0a64c8 will be array, 10,100,200 str[,], 10;100;200 str[;] [color]
+ - hex2rgb 0c0c0c will be array, 12,12,12 str[,], 12;12;12 str[;] [gray, long]
+ - hex2rgb ccc will be array, 204,204,204 str[,], 204;204;204 str[;] [gray, short]
+ - hex2rgb #0c0c0c will be array, 12,12,12 str[,], 12;12;12 str[;] [hex string with #]
+ - hex2rgb #0c0c0c0c will be false, false str[,], false str[;] [a too long hex string]
+ - hex2rgb 0c0c will be false, false str[,], false str[;] [a too short hex string]
+ - rgb2hsb 12,12,12 will be array [valid gray, rgb to hsb]
+ - rgb2hsb 10,100,200 will be array [valid color, rgb to hsb]
+ - rgb2hsb 200,10,10 will be array [valid color hue 360, rgb to hsb]
+ - rgb2hsb -1,12,12 will be false [invalid color r/h/h low, rgb to hsb]
+ - rgb2hsb 256,12,12 will be false [invalid color r/h/h high, rgb to hsb]
+ - rgb2hsb 12,-1,12 will be false [invalid color g/s/s low, rgb to hsb]
+ - rgb2hsb 12,256,12 will be false [invalid color g/s/s high, rgb to hsb]
+ - rgb2hsb 12,12,-1 will be false [invalid color b/b/l low, rgb to hsb]
+ - rgb2hsb 12,12,256 will be false [invalid color b/b/l high, rgb to hsb]
+ - hsb2rgb 0,0,5 will be array [valid gray, hsb to rgb]
+ - hsb2rgb 212,95,78.0 will be array [valid color, hsb to rgb]
+ - hsb2rgb 360,95,78.0 will be array [valid color hue 360, hsb to rgb]
+ - hsb2rgb -1,50,50 will be false [invalid color r/h/h low, hsb to rgb]
+ - hsb2rgb 361,50,50 will be false [invalid color r/h/h high, hsb to rgb]
+ - hsb2rgb 1,-1,50 will be false [invalid color g/s/s low, hsb to rgb]
+ - hsb2rgb 1,101,50 will be false [invalid color g/s/s high, hsb to rgb]
+ - hsb2rgb 1,50,-1 will be false [invalid color b/b/l low, hsb to rgb]
+ - hsb2rgb 1,50,101 will be false [invalid color b/b/l high, hsb to rgb]
+ - rgb2hsl 12,12,12 will be array [valid gray, rgb to hsl]
+ - rgb2hsl 10,100,200 will be array [valid color, rgb to hsl]
+ - rgb2hsl 200,10,10 will be array [valid color hue 360, rgb to hsl]
+ - rgb2hsl -1,12,12 will be false [invalid color r/h/h low, rgb to hsl]
+ - rgb2hsl 256,12,12 will be false [invalid color r/h/h high, rgb to hsl]
+ - rgb2hsl 12,-1,12 will be false [invalid color g/s/s low, rgb to hsl]
+ - rgb2hsl 12,256,12 will be false [invalid color g/s/s high, rgb to hsl]
+ - rgb2hsl 12,12,-1 will be false [invalid color b/b/l low, rgb to hsl]
+ - rgb2hsl 12,12,256 will be false [invalid color b/b/l high, rgb to hsl]
+ - hsl2rgb 0.0,0.0,4.7 will be array [valid gray, hsl to rgb]
+ - hsl2rgb 211.6,90.5,41.2 will be array [valid color, hsl to rgb]
+ - hsl2rgb 360.0,90.5,41.2 will be array [valid color hue 360, hsl to rgb]
+ - hsl2rgb -1,50,50 will be false [invalid color r/h/h low, hsl to rgb]
+ - hsl2rgb 361,50,50 will be false [invalid color r/h/h high, hsl to rgb]
+ - hsl2rgb 1,-1,50 will be false [invalid color g/s/s low, hsl to rgb]
+ - hsl2rgb 1,101,50 will be false [invalid color g/s/s high, hsl to rgb]
+ - hsl2rgb 1,50,-1 will be false [invalid color b/b/l low, hsl to rgb]
+ - hsl2rgb 1,50,101 will be false [invalid color b/b/l high, hsl to rgb]
+ - hsl2rgb/hsb2rgb hue 360 valid check
+
+ \CoreLibs\Convert\Encoding method tests
+
+ - convert encoding SJIS, source: NULL, auto: NULL [simple from UTF-8 to SJIS]
+ - convert encoding SJIS, source: NULL, auto: NULL [kanji from UTF-8 to SJIS]
+ - convert encoding SJIS, source: UTF-8, auto: NULL [kanji from UTF-8 to SJIS with source]
+
+ \CoreLibs\Convert\Html method tests
+
+ - htmlent I am some string will be I am some string [no conversion]
+ - htmlent I have special <> inside will be I have special <> inside [conversion]
+ - htmlent 1234 will be 1234 [skip number]
+ - htmlent 日本語 <> will be 日本語 <> [utf8]
+ - removeLB I am some string with replace NULL will be I am some string [nothing replaced, default]
+ - removeLB I am
+some string with replace - will be I am-some string [string with \n replace -]
+ - removeLB I am
some string with replace _ will be I am_some string [string with \r replace _]
+ - removeLB I am
+
some string with replace NULL will be I am some string [string with \n\r, default]
+ - removeLB I am
+
some string with replace ##BR## will be I am##BR##some string [string with \n\r replae ##BR##]
+ - checked find string in string and return 0 will be selected [haystack is a string and matching selected]
+ - checked find string in string and return 1 will be checked [haystack is a string and matching checked]
+ - checked find not matching in string and return 1 will be NULL [haystack is a string and not matching]
+ - checked find a in array and return 0 will be selected [haystack is array and matching]
+ - checked find not matching in array and return 0 will be NULL [haystack is array and not matching]
+
+ \CoreLibs\Convert\Json method tests
+
+ - jsonConvertToArray {"m":2,"f":"sub_2"} (Override: false) will be array [valid json]
+ - jsonConvertToArray '' (Override: false) will be array [empty json]
+ - jsonConvertToArray not valid (Override: true) will be array [invalid json override]
+ - jsonConvertToArray not valid (Override: false) will be array [invalid json]
+ - jsonConvertToArray NULL (Override: false) will be array [null json]
+ - jsonConvertToArray flag test, if flag is used
+ - Json convert to array remove throw flag
+ - jsonGetLastError {} will be 0/'' [no error]
+ - jsonGetLastError [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] will be 1/Maximum stack depth exceeded [depth error]
+ - jsonGetLastError not valid will be 4/Syntax error, malformed JSON [syntax error]
+ - jsonValidate {} will be 0/'' [no error]
+ - jsonValidate [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] will be 1/Maximum stack depth exceeded [depth error]
+ - jsonValidate not valid will be 4/Syntax error, malformed JSON [syntax error]
+ - jsonValidate test valid and invalid json
+ - jsonValidate test exception thrown on invalid flag
+ - jsonValidate test no exception on valid flag
+ - jsonConvertArrayTo array (Override: $flag) will be {"m":2,"f":"sub_2"} [valid json]
+ - jsonConvertArrayTo array (Override: $flag) will be [] [empty json array]
+ - jsonConvertArrayTo array (Override: $flag) will be {"":""} [empty json hash]
+
+ \CoreLibs\Convert\Math method tests
+
+ - fceil: Input 5.5 must be 6
+ - fceil: Input 5.123456789 must be 6
+ - fceil: Input 6 must be 6
+ - floor: Input 5123456 with cutoff -3 must be 5123000
+ - floor: Input 5123456 with cutoff -10 must be 5000000
+ - initNumeric: Input int 5 must match 5 [5 must be 5]
+ - initNumeric: Input float 5.123 must match 5.123 [5.123 must be 5.123]
+ - initNumeric: Input string 5 must match 5 ['5' must be 5]
+ - initNumeric: Input string 5.123 must match 5.123 ['5.123' must be 5.123]
+ - initNumeric: Input $input must match 1.25992 [cube root of 2]
+ - initNumeric: Input $input must match 1.44225 [cube root of 3]
+ - initNumeric: Input $input must match NAN [cube root of -1]
+ - initNumeric: Input array x array must match array [[3] x [3] => [3x1]]
+ - initNumeric: Input array x array must match array [[3] x [3x1]]
+ - initNumeric: Input array x array must match array [[1x3L] x [3x1]]
+ - initNumeric: Input array x array must match array [[1x3] x [3x1]]
+ - initNumeric: Input array x array must match array [[2x3] x [3] => [3x1]]
+ - initNumeric: Input array x array must match array [[2x3] x [3x1]]
+ - initNumeric: Input array x array must match array [[2x3] x [2x3] => [3x3]]
+ - initNumeric: Input array x array must match array [[2x3] x [3x3]]
+ - initNumeric: Input array x array must match array [[2x3] x [3x2]]
+ - initNumeric: Input array x array must match array [[3x3] x [3] => [1x3]]
+ - initNumeric: Input array x array must match array [[3x3] x [2x3] => [3x3]]
+ - initNumeric: Input array x array must match array [[3x3] x [3x3]]
+ - initNumeric: Input array x array must match array [[3] x [3x3]]
+ - initNumeric: Input array x array must match array [inblanaced [2x2,3] x [3x2]]
+ - initNumeric: Input array x array must match array [inblanaced [2x3] x [3x1,2]]
+ - equalWithEpsilon with 2.22E-16 and 2.22E-16 and Epsilon: 2.220446049250313E-16 must be equal: true [equal]
+ - equalWithEpsilon with 2.22E-16 and 2.32E-16 and Epsilon: 2.220446049250313E-16 must be equal: true [almost equal]
+ - equalWithEpsilon with 2.22E-16 and 4.222E-15 and Epsilon: 2.220446049250313E-16 must be equal: false [not equal]
+ - equalWithEpsilon with 2.22E-16 and 4.222E-15 and Epsilon: 0.0001 must be equal: true [equal, different epsilon]
+ - equalWithEpsilon with 0.0001 and 0.0002 and Epsilon: 0.0001 must be equal: false [not equal, different epsilon]
+ - compareWithEpsilon 0.0001 < 0.0002 with 1.0E-5 must match: true [smaller, true]
+ - compareWithEpsilon 0.0001 < 0.0001 with 1.0E-5 must match: false [smaller, false]
+ - compareWithEpsilon 0.0002 > 0.0001 with 1.0E-5 must match: true [bigger, true]
+ - compareWithEpsilon 0.0001 > 0.0001 with 1.0E-5 must match: false [bigger, false]
+
+ \CoreLibs\Convert\MimeAppName method tests
+
+ - mimeSetAppName set foo/bar with FooBar Application and will be FooBar Application [find matching app]
+ - mimeSetAppName set '' with Some app and will be Other file [try to set empty mime type]
+ - mimeSetAppName set some/app with '' and will be Other file [try to set empty app name]
+
+ \CoreLibs\Convert\MimeEncode method tests
+
+ - mb encoding target UTF-8 [standard UTF-8]
+ - mb encoding target UTF-8 [long text UTF-8]
+ - mb encoding target UTF-8 [standard with special chars UTF-8]
+ - mb encoding target UTF-8 [35 chars and space at the end UTF-8]
+ - mb encoding target UTF-8 [36 chars and space at the end UTF-8]
+ - mb encoding target UTF-8 [36 kanji and space UTF-8]
+
+ \CoreLibs\Convert\SetVarTypeNull method tests
+
+ - setStr '' with override NULL will be '' [empty string]
+ - setStr string with override NULL will be string [filled string]
+ - setStr string with override override will be string [valid string, override set]
+ - setStr 1 with override NULL will be 1 [int, no override]
+ - setStr 1 with override not int will be 1 [int, override set]
+ - setStr array with override NULL will be NULL [array, override set]
+ - makeStr '' with override NULL will be '' [empty string]
+ - makeStr string with override NULL will be string [filled string]
+ - makeStr string with override override will be string [valid string, override set]
+ - makeStr 1 with override NULL will be 1 [int, no override]
+ - makeStr 1 with override not int will be 1 [int, override set]
+ - makeStr 1.5 with override NULL will be 1.5 [float, no override]
+ - makeStr Closure with override function will be function [function, override set]
+ - makeStr Closure with override NULL will be NULL [function, no override]
+ - makeStr 85 with override hex will be 85 [hex value, override set]
+ - setInt 1 with override NULL will be 1 [int]
+ - setInt 1 with override -1 will be 1 [int, override set]
+ - setInt string with override NULL will be NULL [string, no override]
+ - setInt string with override -1 will be -1 [string, override]
+ - setInt 1.5 with override NULL will be 1 [float]
+ - makeInt 1 with override NULL will be 1 [int]
+ - makeInt 1 with override -1 will be 1 [int, override set]
+ - makeInt string with override NULL will be 0 [string, no override]
+ - makeInt string with override -1 will be 0 [string, override]
+ - makeInt 1.5 with override NULL will be 1 [float]
+ - makeInt Closure with override -1 will be -1 [function, override set]
+ - makeInt Closure with override NULL will be NULL [function, no override ]
+ - makeInt 85 with override -1 will be 85 [hex value, override set]
+ - setFloat 1.5 with override NULL will be 1.5 [float]
+ - setFloat 1.5 with override -1.5 will be 1.5 [float, override set]
+ - setFloat string with override NULL will be NULL [string, no override]
+ - setFloat string with override 1.5 will be 1.5 [string, override]
+ - setFloat 1 with override NULL will be 1.0 [int]
+ - makeFloat 1.5 with override NULL will be 1.5 [float]
+ - makeFloat 1.5 with override -1.5 will be 1.5 [float, override set]
+ - makeFloat string with override NULL will be 0.0 [string, no override]
+ - makeFloat string with override 1.5 will be 0.0 [string, override]
+ - makeFloat 1 with override NULL will be 1.0 [int]
+ - makeFloat Closure with override -1.0 will be -1.0 [function, override set]
+ - makeFloat Closure with override NULL will be NULL [function, no override]
+ - makeFloat 85 with override -1 will be 85.0 [hex value, override set]
+ - setArray array with override NULL will be array [array, empty]
+ - setArray array with override NULL will be array [array, filled]
+ - setArray string with override NULL will be NULL [string, no override]
+ - setArray string with override array will be array [string, override]
+ - setBool true with override NULL will be true [bool true]
+ - setBool false with override NULL will be false [bool false]
+ - setBool string with override NULL will be NULL [string, no override]
+ - setBool string with override true will be true [string, override]
+ - setBool true will be true [true]
+ - setBool false will be false [false]
+ - setBool on will be true [string on]
+ - setBool off will be false [string off]
+ - setBool sulzenbacher will be NULL [invalid string]
+ - setBool sulzenbacher will be NULL [invalid string, override]
+ - setBool array will be false [array to default]
+
+ \CoreLibs\Convert\SetVarType method tests
+
+ - setStr '' with override NULL will be '' [empty string]
+ - setStr string with override NULL will be string [filled string]
+ - setStr string with override override will be string [valid string, override set]
+ - setStr 1 with override NULL will be 1 [int, no override]
+ - setStr 1 with override not int will be 1 [int, override set]
+ - setStr array with override not int will be not int [array, override set]
+ - makeStr '' with override NULL will be '' [empty string]
+ - makeStr string with override NULL will be string [filled string]
+ - makeStr string with override override will be string [valid string, override set]
+ - makeStr 1 with override NULL will be 1 [int, no override]
+ - makeStr 1 with override not int will be 1 [int, override set]
+ - makeStr Closure with override function will be function [function, override set]
+ - makeStr 85 with override hex will be 85 [hex value, override set]
+ - setInt 1 with override NULL will be 1 [int]
+ - setInt 1 with override -1 will be 1 [int, override set]
+ - setInt string with override NULL will be 0 [string, no override]
+ - setInt string with override -1 will be -1 [string, override]
+ - setInt 1.5 with override NULL will be 1 [float]
+ - makeInt 1 with override NULL will be 1 [int]
+ - makeInt 1 with override -1 will be 1 [int, override set]
+ - makeInt string with override NULL will be 0 [string, no override]
+ - makeInt string with override -1 will be 0 [string, override]
+ - makeInt 1.5 with override NULL will be 1 [float]
+ - makeInt Closure with override -1 will be -1 [function, override set]
+ - makeInt 85 with override -1 will be 85 [hex value, override set]
+ - setFloat 1.5 with override NULL will be 1.5 [float]
+ - setFloat 1.5 with override -1.5 will be 1.5 [float, override set]
+ - setFloat string with override NULL will be 0.0 [string, no override]
+ - setFloat string with override 1.5 will be 1.5 [string, override]
+ - setFloat 1 with override NULL will be 1.0 [int]
+ - makeFloat 1.5 with override NULL will be 1.5 [float]
+ - makeFloat 1.5 with override -1.5 will be 1.5 [float, override set]
+ - makeFloat string with override NULL will be 0.0 [string, no override]
+ - makeFloat string with override 1.5 will be 0.0 [string, override]
+ - makeFloat 1 with override NULL will be 1.0 [int]
+ - makeFloat Closure with override -1.0 will be -1.0 [function, override set]
+ - makeFloat 85 with override -1 will be 85.0 [hex value, override set]
+ - setArray array with override NULL will be array [array, empty]
+ - setArray array with override NULL will be array [array, filled]
+ - setArray string with override NULL will be array [string, no override]
+ - setArray string with override array will be array [string, override]
+ - setBool true with override NULL will be true [bool true]
+ - setBool false with override NULL will be false [bool false]
+ - setBool string with override NULL will be false [string, no override]
+ - setBool string with override true will be true [string, override]
+ - setBool true will be true [true]
+ - setBool false will be false [false]
+ - setBool on will be true [string on]
+ - setBool off will be false [string off]
+ - setBool sulzenbacher will be false [invalid string]
+ - setBool sulzenbacher will be true [invalid string, override]
+ - setBool array will be false [array to default]
+
+ Core Libs Convert Strings Regex Validate (tests\CoreLibsConvertStringsRegexValidate)
+
+ - Is valid regex with valid patterns
+ - Is valid regex with invalid patterns
+ - Get last regex error string returns correct messages
+ - Get last regex error string with unknown error
+ - Validate regex with valid patterns
+ - Validate regex with invalid patterns
+ - Validate regex array structure
+ - Edge cases
+ - Preg error messages constant
+ - Error state isolation
+ - Different delimiters
+
+ \CoreLibs\Convert\Strings method tests
+
+ - splitFormatString '' with format '' will be '' [all empty string]
+ - splitFormatString '' with format 2-2 will be '' [empty input string]
+ - splitFormatString 1234 with format '' will be 1234 [empty format string string]
+ - splitFormatString 1234 with format 2-2 will be 12-34 [string format match]
+ - splitFormatString 1234 with format 2-2- will be 12-34 [string format trailing match]
+ - splitFormatString 1234 with format -2-2 will be 12-34 [string format leading match]
+ - splitFormatString 1234 with format 2--2 will be 12--34 [string format double inside match]
+ - splitFormatString 1 with format 2-2 will be 1 [string format short first]
+ - splitFormatString 12 with format 2-2 will be 12 [string format match first]
+ - splitFormatString 123 with format 2-2 will be 12-3 [string format short second]
+ - splitFormatString 1234567 with format 2-2 will be 12-34-567 [string format too long]
+ - splitFormatString 1234 with format 2_2 will be 12_34 [different split character]
+ - splitFormatString 123456 with format 2-2_2 will be 12-34_56 [mixed split characters]
+ - splitFormatString ABCD12345568ABC13 with format 2-4_5-2#4 will be AB-CD12_34556-8A#BC13 [length mixed]
+ - splitFormatString 12-34 with format 2-2 will be 12--3-4 [split with split chars in string]
+ - splitFormatString Exception catch checks for 1234 with 22[string format with no splitter match]
+ - splitFormatString Exception catch checks for 1234 with 2あ2[invalid format string]
+ - splitFormatString Exception catch checks for あいうえ with 2-2[mutltibyte string]
+ - splitFormatString Exception catch checks for 1234 with 2-2[mutltibyte split string]
+ - splitFormatStringFixed abcdefg with length 4 and split chars NULL will be abcd-efg [normal split, default split char]
+ - splitFormatStringFixed abcdefg with length 4 and split chars = will be abcd=efg [noraml split, other single split char]
+ - splitFormatStringFixed abcdefg with length 4 and split chars -=- will be abcd-=-efg [noraml split, other multiple split char]
+ - splitFormatStringFixed あいうえお with length 2 and split chars - will be あい-うえ-お [non ascii characters]
+ - splitFormatStringFixed '' with length 4 and split chars - will be '' [empty string]
+ - splitFormatStringFixed Exception catch checks for abcdefg with -1 [split length too short]
+ - splitFormatStringFixed Exception catch checks for abcdefg with 20 [split length longer than string]
+ - countSplitParts '' with splitters NULL will be 0 [0 elements]
+ - countSplitParts 1 with splitters NULL will be 1 [1 element]
+ - countSplitParts 1-2- with splitters NULL will be 2 [2 elements, trailing]
+ - countSplitParts -1-2 with splitters NULL will be 2 [2 elements, leading]
+ - countSplitParts 1--2 with splitters NULL will be 2 [2 elements, midde double]
+ - countSplitParts 1-2-3-4 with splitters NULL will be 4 [4 elements]
+ - countSplitParts 2-3_3 with splitters -_ will be 3 [3 elemenst, other splitter]
+ - countSplitParts あsdf with splitters NULL will be 0 [illegal splitter]
+ - stripMultiplePathSlashes string_abc will be string_abc [no slahses]
+ - stripMultiplePathSlashes some/foo will be some/foo [one slash]
+ - stripMultiplePathSlashes some//foo will be some/foo [two slashes]
+ - stripMultiplePathSlashes some///foo will be some/foo [three slashes]
+ - stripMultiplePathSlashes /foo will be /foo [slashes in front]
+ - stripMultiplePathSlashes //foo will be /foo [two slashes in front]
+ - stripMultiplePathSlashes ///foo will be /foo [thee slashes in front]
+ - stripMultiplePathSlashes foo/ will be foo/ [slashes in back]
+ - stripMultiplePathSlashes foo// will be foo/ [two slashes in back]
+ - stripMultiplePathSlashes foo/// will be foo/ [thee slashes in back]
+ - stripMultiplePathSlashes /foo//bar///string/end_times will be /foo/bar/string/end_times [multiple slashes]
+ - stripUTF8BomBytes UTF8BOM.csv will be Asset Type,Epic,File Name
+ [utf8-bom]
+ - stripUTF8BomBytes UTF8.csv will be Asset Type,Epic,File Name
+ [utf8]
+ - allCharsInSet $input in abcdef with expected true [find]
+ - allCharsInSet $input in abcdef with expected false [not found]
+ - buildCharStringFromLists all array convert to abc [test a]
+ - buildCharStringFromLists all array convert to abc123 [test b]
+ - buildCharStringFromLists all NULL convert to '' [test c: no params]
+ - buildCharStringFromLists all array convert to '' [test c: empty 1]
+ - buildCharStringFromLists all array convert to abc [test nested]
+ - removeDuplicates make ABCDEFG unqiue to ABCDEFG [test no change]
+ - removeDuplicates make aa unqiue to a [test simple]
+ - removeDuplicates make AaBbCc unqiue to AaBbCc [test keep lower and uppwer case]
+ - removeDuplicates make aabbcc unqiue to abc [test unqiue]
+ - removeDuplicates make あいうえお unqiue to あいうえお [test multibyte no change]
+ - removeDuplicates make ああいいううええおお unqiue to あいうえお [test multibyte]
+ - removeDuplicates make あぁいぃうぅえぇおぉ unqiue to あぁいぃうぅえぇおぉ [test multibyte special]
+ - isValidRegexSimple make /^[A-z]$/ unqiue to true [valid regex]
+ - isValidRegexSimple make /^[A-z]$ unqiue to false [invalid regex A]
+ - isValidRegexSimple make /^[A-z$ unqiue to false [invalid regex B]
+ - parseCharacterRanges array to abcdefghijklmnopqrstuvwxyz [simple a-z]
+ - parseCharacterRanges array to ABCDEFGHIJKLMNOPQRSTUVWXYZ [simple A-Z]
+ - parseCharacterRanges array to 0123456789 [simple 0-9]
+ - parseCharacterRanges array to abcXYZ345 [mixed ranges]
+ - parseCharacterRanges array to abcdefghijklmnopqrstuvwxyz [reverse ranges]
+ - parseCharacterRanges array to abcdefghij [overlapping ranges]
+ - parseCharacterRanges array to abcdefghijklmnopqrstuvwxyz0123 [mixed valid and overlap ranges]
+ - parseCharacterRanges array to abcdf [range without dashes]
+ - parseCharacterRanges array to '' [invalid ranges]
+
+ \CoreLibs\Create\Crc64 method tests
+
+ - generate crc64 for /var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All/test/phpunit/Create/files/random_10KB.bin and expecting oMgkUkGrDME= and a0c8245241ab0cc1 [10kb]
+ - generate crc64 for /var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All/test/phpunit/Create/files/random_100KB.bin and expecting i9Lpf3Y3D3M= and 8bd2e97f76370f73 [100kb]
+ - generate crc64 for /var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All/test/phpunit/Create/files/random_1MB.bin and expecting WqYAirRJ0q8= and 5aa6008ab449d2af [1mb]
+ - generate crc64 for /var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All/test/phpunit/Create/files/random_5MB.bin and expecting 9hS5kUxbgR0= and f614b9914c5b811d [5mb]
+ - generate crc64 for /var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All/test/phpunit/Create/files/random_10MB.bin and expecting xDmtkk1JhjM= and c439ad924d498633 [10mb]
+
+ \CoreLibs\Create\Email method tests
+
+ - encode email '', name NULL, encoding NULL, folding NULL will be '' [all empty]
+ - encode email test@test.com, name NULL, encoding NULL, folding NULL will be test@test.com [email only]
+ - encode email test@test.com, name Test Name, encoding NULL, folding NULL will be "Test Name" [email and name]
+ - encode email test@test.com, name 日本語, encoding NULL, folding NULL will be "=?UTF-8?B?5pel5pys6Kqe?=" [name in mime encoded, default UTF-8]
+ - encode email test@test.com, name 日本語カタカナパ, encoding NULL, folding NULL will be "=?UTF-8?B?5pel5pys6Kqe7722776A7722776F776K776f?=" [name in mime encoded with half width Katakana, default UTF-8]
+ - encode email test@test.com, name 日本語カタカナパ, encoding UTF-8, folding true will be "=?UTF-8?B?5pel5pys6Kqe44Kr44K/44Kr44OK44OR?=" [name in mime encoded with half width Katakana, folding on, default UTF-8]
+ - encode email test@test.com, name 日本語, encoding UTF-8, folding NULL will be "=?UTF-8?B?5pel5pys6Kqe?=" [name in mime encoded, UTF-8 parameter]
+ - encode email test@test.com, name 日本語, encoding ISO-2022-JP, folding NULL will be "=?ISO-2022-JP?B?GyRCRnxLXDhsGyhC?=" [encoding in ISO-2022-JP]
+ - encode email test@test.com, name 日本語カタカナパ, encoding ISO-2022-JP, folding NULL will be "=?ISO-2022-JP?B?GyRCRnxLXDhsGyhCPz8/Pz8/?=" [encoding with half width Katakana in ISO-2022-JP]
+ - encode email test@test.com, name 日本語カタカナパ, encoding ISO-2022-JP, folding true will be "=?ISO-2022-JP?B?GyRCRnxLXDhsGyhCPz8/Pz8/?=" [encoding with half width Katakana, folding on in ISO-2022-JP]
+ - email sending with expected status -1 [all empty, fail -1]
+ - email sending with expected status -2 [missing to entry, fail -2]
+ - email sending with expected status -3 [bad encoding, fail -3]
+ - email sending with expected status 2 [sending email 1]
+ - email sending with expected status 2 [sending email 1, encoded]
+ - email sending with expected status 2 [sending email 1, encoded, with half width katakanata]
+ - email sending with expected status 2 [sending email 1, encoded, with half width katakanata, folding on]
+ - email sending with expected status 2 [sending email 1, encoded subject ISO-2022-JP]
+ - email sending with expected status 2 [sending email 2]
+ - email sending with expected status 2 [sending email 1: dynamic]
+ - email sending with expected status 2 [sending email 1: dynamic encoded]
+ - email sending with expected status 2 [sending email 1: dynamic, to override]
+ - email sending with expected status 2 [sending email 1: dynamic, to override encoded]
+ - email sending with expected status 2 [sending email 3: dynamic, to mixed override]
+ - email sending with expected status 2 [sending email 3: dynamic, to mixed override encoded]
+
+ \CoreLibs\Create\Hash method tests
+
+ - __crc32b Some String Text will be c5c21d91 [hash tests to crc32b reverse]
+ - __sha1Short/__crc32b/sha1short Some String Text will be c5c21d91 (crc32b) and 4d2bc9ba0 (sha1 short) [hash tests to sha1 short]
+ - __hash/hashShort/hash Some String Text with adler32 will be 31aa05f1 [hash tests to adler32]
+ - __hash/hashShort/hash Some String Text with crc32b will be 911dc2c5 [hash tests to crc32b]
+ - __hash/hashShort/hash Some String Text with fnv132 will be 9df444f9 [hash tests to fnv132]
+ - __hash/hashShort/hash Some String Text with fnv1a32 will be 2c5f91b9 [hash tests to fnv1a32]
+ - __hash/hashShort/hash Some String Text with joaat will be 50dab846 [hash tests to joaat]
+ - __hash/hashShort/hash Some String Text with ripemd160 will be aeae3f041b20136451519edd9361570909300342 [hash tests to ripemd160]
+ - __hash/hashShort/hash Some String Text with sha256 will be 9055080e022f224fa835929b80582b3c71c672206fa3a49a87412c25d9d42ceb [hash tests to sha256]
+ - __hashLong/hashLong Some String Text will be aeae3f041b20136451519edd9361570909300342 [Long Hash check: ripemd160]
+ - hash/hashStd Some String Text will be 9055080e022f224fa835929b80582b3c71c672206fa3a49a87412c25d9d42ceb [Long Hash check: sha256]
+ - hash with invalid type
+ - hash hmac test
+ - hash hmac with invalid type
+ - check if crc32b is valid for hash true and hash hmac false [Hash crc32b]
+ - check if adler32 is valid for hash true and hash hmac false [Hash adler32]
+ - check if fnv132 is valid for hash true and hash hmac false [HAsh fnv132]
+ - check if fnv1a32 is valid for hash true and hash hmac false [Hash fnv1a32]
+ - check if joaat is valid for hash true and hash hmac false [Hash: joaat]
+ - check if ripemd160 is valid for hash true and hash hmac true [Hash: ripemd160]
+ - check if sha256 is valid for hash true and hash hmac true [Hash: sha256]
+ - check if invalid is valid for hash false and hash hmac false [Hash: invalid]
+ - generate immutable hash for array with result 064f01fe [Empty array]
+ - generate immutable hash for array with result 78f40899 [Simple array]
+ - generate immutable hash for array with result ccec0f5b [flat array a]
+ - generate immutable hash for array with result c6040f5b [flat array b]
+ - generate immutable hash for array with result c6040f5b [flat array b, not sorted]
+ - generate immutable hash for array with result 01f11355 [key array a]
+ - generate immutable hash for array with result 04911355 [key array a, not sorted]
+ - generate immutable hash for array with result 01f11355 [key array b]
+ - generate immutable hash for array with result 01f11355 [key array b, not sorted]
+ - generate immutable hash for array with result d8de1565 [complex nested array]
+
+ \CoreLibs\Create\RandomKey method tests
+
+ - randomKeyGen use NULL key length 4 [default key length, default char set]
+ - randomKeyGen use -1 key length 4 [set -1 key length, default char set]
+ - randomKeyGen use -1 key length 4 [set 0 key length, default char set]
+ - randomKeyGen use 300 key length 4 [set too large key length, default char set]
+ - randomKeyGen use 6 key length 6 [set override key lenght, default char set]
+ - randomKeyGen use 4 key length 4 [default key length, different char set A]
+ - randomKeyGen use 16 key length 16 [different key length, different char set B]
+
+ \CoreLibs\Create\Session method tests
+
+ - startSession sessionNameParameter name for $type will be sessionNameParameter (error: $expected_error) [session parameter]
+ - startSession sessionNameGlobals name for $type will be sessionNameGlobals (error: $expected_error) [session globals]
+ - startSession sessionNameAutoWriteClose name for $type will be sessionNameAutoWriteClose (error: $expected_error) [auto write close]
+ - create session TEST_EXCEPTION with exception RuntimeException (1) [not cli]
+ - checkValidSessionName abc seessionn name is true [valid name]
+ - checkValidSessionName something-abc-123 seessionn name is true [valid name longer]
+ - checkValidSessionName abc#abc seessionn name is false [invalid name]
+ - checkValidSessionName 123 seessionn name is false [only numbers]
+ - checkValidSessionName abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz seessionn name is false [longer than 128 chars]
+ - checkValidSessionName '' seessionn name is false [too short]
+ - set/get/isset/unset foo with bar is bar (NULL) [test]
+ - set/get/isset/unset 123 with bar is bar (UnexpectedValueException) [int key test]
+ - set/get/isset/unset array with array is array (NULL) [array values]
+ - setMany/getMany/unsetMany array is array (NULL) [valid set]
+ - setMany/getMany/unsetMany array is array (UnexpectedValueException) [invalid entry]
+ - unsetAllS test
+
+ \CoreLibs\Create\Uids method tests
+
+ - uuidv4 check that return is matching regex []
+ - uniqId 1 will be length 4 (Force NULL) [too short]
+ - uniqId 10 will be length 10 (Force NULL) [valid length: 10]
+ - uniqId 9 will be length 8 (Force NULL) [valid length: 9, auto length]
+ - uniqId 9 will be length 9 (Force true) [valid length: 9, force length]
+ - uniqId 512 will be length 512 (Force NULL) [very long: 512]
+ - uniqId md5 will be length 32 (Force NULL) [md5 hash]
+ - uniqId sha256 will be length 64 (Force NULL) [sha256 hash]
+ - uniqId ripemd160 will be length 40 (Force NULL) [ripemd160 hash]
+ - uniqId adler32 will be length 8 (Force NULL) [adler32 hash]
+ - uniqId sha3-512 will be length 64 (Force NULL) [not in list, set default length]
+ - uniqId NULL will be length 64 (Force NULL) [default hash not set]
+ - uniqId iamnotavalidhash will be length 64 (Force NULL) [invalid name]
+ - uniqId 64 will be length 64 (Force NULL) [auto: 64]
+ - uniqId ripemd160 will be length 40 (Force NULL) [auto: ripemd160]
+ - uniqId adler32 will be length 8 (Force NULL) [auto: adler32]
+ - uniqId use DEFAULT_HASH set invalidhash with length 64 [0]
+ - uniqIdShort will be length 8 [0]
+ - uniqIdLong will be length 40 [uniq id long: ripemd160]
+
+ \CoreLibs\Extended\ArrayIO method tests for extended DB interface
+
+ - DB\Extended\ArrayIO Class tests
+
+ \CoreLibs\DB\IO method tests for SQL\PgSQL
+
+ - test db version string return matching retex
+ - test db version numeric return matching retex
+ - test db version parameters are returned as array
+ - Version Info client matches as /^\d+\.\d+/ [client]
+ - Version Info session_authorization matches as /^\w+$/ [session authorization]
+ - Version Info non_existing matches as /^$/ [test non existing]
+ - Version =13.6.0 compares as true [compare = ok]
+ - Version =9.2.0 compares as false [compare = bad]
+ - Version <99.0.0 compares as true [compare < ok]
+ - Version <9.2.0 compares as false [compare < bad]
+ - Version <=99.0.0 compares as true [compare <= ok a]
+ - Version <=13.6.0 compares as true [compare <= ok b]
+ - Version <=9.2.0 compares as false [compare <= false]
+ - Version >9.2.0 compares as true [compare > ok]
+ - Version >99.2.0 compares as false [compare > bad]
+ - Version >=13.6.0 compares as true [compare >= ok a]
+ - Version >=9.2.0 compares as true [compare >= ok b]
+ - Version >=99.0.0 compares as false [compare >= bad]
+ - Connection will be $expected [invalid connection]
+ - Connection will be $expected [valid connection]
+ - Set and Get Debug flag
+ - Set max query call with NULL out with true and 20 (Warning: ''/Error: '') [set default]
+ - Set max query call with -1 out with true and -1 (Warning: 50/Error: '') [set to -1 with warning]
+ - Set max query call with 0 out with false and 20 (Warning: ''/Error: 51) [set to 0 with error]
+ - Set max query call with -2 out with false and 20 (Warning: ''/Error: 51) [set to -2 with error]
+ - Set max query call with 10 out with true and 10 (Warning: ''/Error: '') [set to valid value]
+ - Get settings for connection valid [DB Connection: valid]
+ - Get settings for connection valid_with_encoding_utf8 [DB Connection: valid_with_encoding_utf8]
+ - Get settings for connection valid_no_schema [DB Connection: valid_no_schema]
+ - Get settings for connection invalid [DB Connection: invalid]
+ - Have t and convert (false) to true [source "t" to true]
+ - Have t and convert (NULL) to true [source "t" to true null flag]
+ - Have true and convert (false) to true [source "true" to true]
+ - Have f and convert (false) to false [source "f" to false]
+ - Have false and convert (false) to false [source "false" to false]
+ - Have something and convert (false) to true [source anything to true]
+ - Have '' and convert (false) to false [source empty to false]
+ - Have true and convert (true) to t [source bool true to "t"]
+ - Have false and convert (true) to f [source bool false to "f"]
+ - Have 41 years 9 mons 18 days and convert (false) to 41 years 9 mons 18 days [interval a]
+ - Have 41 years 9 mons 18 days and convert (NULL) to 41 years 9 mons 18 days [interval a null micro time]
+ - Have 41 years 9 mons 18 days 12:31:11 and convert (false) to 41 years 9 mons 18 days 12h 31m 11s [interval a-1]
+ - Have 41 years 9 mons 18 days 12:31:11.87418 and convert (false) to 41 years 9 mons 18 days 12h 31m 11s [interval a-2]
+ - Have 41 years 9 mons 18 days 12:31:11.87418 and convert (true) to 41 years 9 mons 18 days 12h 31m 11s 87418ms [interval a-2-1]
+ - Have 41 years 9 mons 18 days 12:00:11 and convert (false) to 41 years 9 mons 18 days 12h 11s [interval a-3]
+ - Have 1218 days and convert (false) to 1218 days [interval b]
+ - Have 1 year 1 day and convert (false) to 1 year 1 day [interval c]
+ - Have 12:00:05 and convert (false) to 12h 5s [interval d]
+ - Have 00:00:00.12345 and convert (true) to 12345ms [interval e]
+ - Have 00:00:00 and convert (true) to 0s [interval e-1]
+ - Have -41 years 9 mons 18 days 00:05:00 and convert (false) to -41 years 9 mons 18 days 5m [interval a (negative)]
+ - Input array string {1,2,3,"4 this is shit"} to array [array 1]
+ - Input array string {{1,2,3},{4,5,6}} to array [array 2]
+ - Input array string {{{1,2},{3}},{{4},{5,6}}} to array [array 3]
+ - Input array string {dfasdf,"qw,,e{q\"we",'qrer'} to array [array 4]
+ - strip assoc non string entries from return [empty]
+ - strip assoc non string entries from return [int only]
+ - strip assoc non string entries from return [mixed]
+ - strip assoc non string entries from return [key only]
+ - Input string Foo Bar to $expected [string normal]
+ - Input string Foo '" Bar to $expected [string quotes]
+ - Input string Foo \ Bar to $expected [string backslash]
+ - Input bytea '' to \x [standard empty string]
+ - Input bytea ""9f8a!1012938123712378a../%('%)"!"#0"#$%'"#$input"#$input"#0$input"#$ to \x2222396638612131303132393338313233373132333738612e2e2f2528272529222122233022232425272223243030222324302223302430222324 [random values]
+ - Input bytea string d to \x737472696e672064 [random text]
+ - Input value 1 as i to 1 [integer value]
+ - Input value za as i to 0 [bad integer value]
+ - Input value '' as i to NULL [empty integer value]
+ - Input value NULL as i to NULL [null integer value]
+ - Input value 1.1 as f to 1.1 [float value]
+ - Input value za as f to 0 [bad float value]
+ - Input value '' as f to NULL [empty float value]
+ - Input value NULL as f to NULL [null float value]
+ - Input value string value as t to 'string value' [string value]
+ - Input value '' as t to '' [empty string value]
+ - Input value NULL as t to NULL [null string value]
+ - Input value string literal as tl to 'string literal' [string value literal]
+ - Input value '' as tl to '' [empty string value literal]
+ - Input value NULL as tl to NULL [null string value literal]
+ - Input value string d as by to \x737472696e672064 [string value d]
+ - Input value '' as by to NULL [empty string value d]
+ - Input value NULL as by to NULL [null string value d]
+ - Input value string d as dl to 'string d' [string value literal d]
+ - Input value '' as dl to NULL [empty string value literal d]
+ - Input value NULL as dl to NULL [null string value literal d]
+ - Input value true as b to 't' [bool true value]
+ - Input value false as b to 'f' [bool false value]
+ - Input value '' as b to NULL [empty bool value]
+ - Input value NULL as b to NULL [null bool value]
+ - Input value 1 as i2 to 1 [integer2 value]
+ - Input value za as i2 to 0 [bad integer2 value]
+ - Input value '' as i2 to 0 [empty integer2 value]
+ - Input value NULL as i2 to 0 [null integer2 value]
+ - Check table test_meta in schema '' with array [simple table]
+ - Check table test_meta in schema NULL with array [simple table null schema]
+ - Check table non_existing in schema public with false [table does not exist]
+ - dbExec INSERT INTO table_with_primary_key (row_date) VALUES (NOW()) and pk '' with object (Warning: ''/Error: '') [table with pk insert]
+ - dbExec INSERT INTO table_with_primary_key (row_date) VALUES (NOW()) and pk NULL with object (Warning: ''/Error: '') [table with pk insert null]
+ - dbExec INSERT INTO table_with_primary_key (row_varchar) VALUES () and pk NULL with object (Warning: ''/Error: '') [table with pk insert params]
+ - dbExec INSERT INTO table_without_primary_key (row_date) VALUES (NOW()) and pk '' with object (Warning: ''/Error: '') [table with no pk insert]
+ - dbExec INSERT INTO table_without_primary_key (row_varchar) VALUES () and pk NULL with object (Warning: ''/Error: '') [table with no pk insert params]
+ - dbExec INSERT INTO table_with_primary_key (row_date) VALUES(NOW()), (NOW()), (NOW()), (NOW()) and pk '' with object (Warning: 32/Error: '') [table with pk insert multile]
+ - dbExec INSERT INTO table_with_primary_key (row_date) VALUES (NOW()) and pk NULL with object (Warning: ''/Error: '') [table with pk insert and NULL pk name]
+ - dbExec INSERT INTO table_with_primary_key (row_date) VALUES (NOW()) and pk table_with_primary_key_id with object (Warning: ''/Error: '') [table with pk insert and pk name]
+ - dbExec UPDATE table_with_primary_key SET row_date = NOW() and pk '' with object (Warning: ''/Error: '') [table with pk update]
+ - dbExec SELECT * FROM table_with_primary_key and pk '' with object (Warning: ''/Error: '') [table with pk select]
+ - dbExec '' and pk '' with false (Warning: ''/Error: 11) [no query set]
+ - dbExec INSERT INTO table_with_primary_key (row_varchar) VALUES (, ) and pk NULL with false (Warning: ''/Error: 23) [wrong params count]
+ - dbExec INSERT INTO table_with_primary_key (row_varchar) VALUES (, ) and pk NULL with false (Warning: ''/Error: 23) [wrong params count, null params]
+ - dbExec SELECT row_date FROM table_with_primary_key and pk '' with object (Warning: ''/Error: 30) [same query run too many times]
+ - dbExec INVALID and pk '' with false (Warning: ''/Error: 13) [invalid query]
+ - dbExec INSERT INTO table_with_primary_key (row_date) VALUES (NOW()) RETURNING invalid and pk '' with false (Warning: ''/Error: 13) [invalid returning]
+ - dbReturnRow SELECT row_int, uid FROM table_with_primary_key WHERE uid = 'A' and assoc NULL with array (Warning: ''/Error: '') [valid select]
+ - dbReturnRow SELECT row_int, uid FROM table_with_primary_key WHERE uid = 'A' and assoc false with array (Warning: ''/Error: '') [valid select, assoc only false]
+ - dbReturnRow SELECT row_int, uid FROM table_with_primary_key WHERE uid = 'A' and assoc true with array (Warning: ''/Error: '') [valid select, assoc only true]
+ - dbReturnRow SELECT row_int, uid FROM table_with_primary_key WHERE uid = and assoc true with array (Warning: ''/Error: '') [valid select, params]
+ - dbReturnRow SELECT row_int, uid FROM table_with_primary_key WHERE uid = and assoc true with false (Warning: ''/Error: 23) [wrong params count]
+ - dbReturnRow '' and assoc NULL with false (Warning: ''/Error: 11) [empty select]
+ - dbReturnRow INSERT INTO table_with_primary_key (row_int, uid) VALUES (1, 'A') and assoc NULL with false (Warning: ''/Error: 17) [insert query]
+ - dbReturnArray SELECT row_int, uid FROM table_with_primary_key and assoc NULL with array (Warning: ''/Error: '') [valid select]
+ - dbReturnArray SELECT row_int, uid FROM table_with_primary_key and assoc false with array (Warning: ''/Error: '') [valid select, assoc ]
+ - dbReturnArray SELECT row_int, uid FROM table_with_primary_key WHERE uid = and assoc true with array (Warning: ''/Error: '') [valid select, params]
+ - dbReturnArray SELECT row_int, uid FROM table_with_primary_key WHERE uid = and assoc true with false (Warning: ''/Error: 23) [wrong params count]
+ - dbReturnArray '' and assoc NULL with false (Warning: ''/Error: 11) [empty select]
+ - dbReturnArray INSERT INTO table_with_primary_key (row_int, uid) VALUES (1, 'A'), (2, 'B') and assoc NULL with false (Warning: ''/Error: 17) [insert query]
+ - dbReturn Read First true only and cache NULL and assoc NULL with (Warning: ''/Error: '') [valid select, default cache settings (NO_CACHE)]
+ - dbReturn Read First true only and cache 0 and assoc true with (Warning: ''/Error: '') [valid select, use cache, assoc only]
+ - dbReturn Read First true only and cache 1 and assoc true with (Warning: ''/Error: '') [valid select, read new, assoc only]
+ - dbReturn Read First true only and cache 2 and assoc true with (Warning: ''/Error: '') [valid select, clear cache, assoc only]
+ - dbReturn Read First true only and cache 3 and assoc true with (Warning: ''/Error: '') [valid select, no cache, assoc only]
+ - dbReturn Read First true only and cache 3 and assoc true with (Warning: ''/Error: '') [valid select params, no cache, assoc only]
+ - dbReturn Read First true only and cache NULL and assoc NULL with (Warning: ''/Error: 11) [empty select error]
+ - dbReturn Read First true only and cache NULL and assoc NULL with (Warning: ''/Error: 23) [params count wrong]
+ - dbReturn Read First true only and cache NULL and assoc NULL with (Warning: ''/Error: 17) [insert query error]
+ - dbReturn Read First false only and cache NULL and assoc NULL with (Warning: ''/Error: '') [valid select, full read, default cache settings (NO CACHE)]
+ - dbReturn Read First false only and cache 0 and assoc NULL with (Warning: ''/Error: '') [valid select, full read, USE CACHE]
+ - dbReturn Read First false only and cache 1 and assoc NULL with (Warning: ''/Error: '') [valid select, full read, READ NEW]
+ - dbReturn Read First false only and cache 2 and assoc NULL with (Warning: ''/Error: '') [valid select, full read, CLEAR CACHE]
+ - dbReturn Read First false only and cache 3 and assoc NULL with (Warning: ''/Error: '') [valid select, full read, NO CACHE]
+ - prepared query insert with result (warning ''/error '') and result (warning ''/error '') [prepare query insert]
+ - prepared query update with result (warning ''/error '') and result (warning ''/error '') [prepare query update]
+ - prepared query select with result (warning ''/error '') and result (warning ''/error '') [prepare select query]
+ - prepared query select_noparam with result (warning ''/error '') and result (warning ''/error '') [prepare select query no parameter]
+ - prepared query '' with false (warning ''/error 25) and false (warning ''/error 25) [empty statement]
+ - prepared query Empty Query with false (warning ''/error 11) and false (warning ''/error 24) [empty query]
+ - prepared query double with true (warning 20/error '') and result (warning ''/error '') [prepare query with same statement name]
+ - prepared query double_error with false (warning ''/error 26) and '' (warning ''/error '') [prepare query with same statement name, different query]
+ - prepared query wrong_param_count with result (warning ''/error '') and false (warning ''/error 23) [wrong parmeter count]
+ - prepared query read with pk_name expect error id '' [no error]
+ - prepared query '' with '' expect error id 101 [statement name empty]
+ - prepared query read with '' expect error id 102 [key empty]
+ - prepared query read with invalid expect error id 102 [key invalid]
+ - prepared query invalid with pk_name expect error id 103 [statement name not found]
+ - Check prepared test_stm_a ('') status is false [empty statement pararm]
+ - Check prepared test_stm_b (other_name) status is 0 [different stm_name]
+ - Check prepared test_stm_c (test_stm_c) status is 1 [same stm_name]
+ - Check prepared test_stm_d (test_stm_d) status is 2 [same stm_name and query]
+ - Check prepared test_stm_e (test_stm_e) status is 1 [same stm_name and different query]
+ - Check prepared test_stm_f (test_stm_f) status is 2 [insert query test]
+ - set schema NULL on valid with true (error '') and get public/public [schema get check only]
+ - set schema public on valid with true (error '') and get public/public [new schema set]
+ - set schema public on valid_no_schema with true (error '') and get public/public [no schema set, set new schema]
+ - set schema invalid on valid with false (error 71) and get public/public [try to set empty schema]
+ - set schema testschema on valid with true (error '') and get testschema/testschema [try to set new valid schema]
+ - error 0 for type error with 51 [trigger error]
+ - error -1 for type warning with 50 [trigger warning]
+ - Set encoding on valid to '' expect false and UTF8 [default set no encoding]
+ - Set encoding on valid to ShiftJIS expect true and SJIS [set to Shift JIS]
+ - Set encoding on valid to Invalid expect false and UTF8 [set to Invalid]
+ - Set encoding on valid to '' expect false and UTF8 [set to empty]
+ - Check encoding on valid with SJIS [convert from UTF8 to SJIS]
+ - Check returning pk '' with NULL [normal all auto]
+ - Check returning pk '' with NULL [table without primary key]
+ - Check returning pk '' with table_with_primary_key_id [normal, with pk_name]
+ - Check returning pk RETURNING table_with_primary_key_id with table_with_primary_key_id [normal, with returning]
+ - Check returning cursor using NULL with NULL and NULL [single insert (PK)]
+ - Check returning cursor using NULL with NULL and NULL [single insert (PK), heredoc string]
+ - Check returning cursor using NULL with NULL and NULL [dobule insert (PK)]
+ - Check returning cursor using NULL with NULL and NULL [single insert (No PK)]
+ - Check returning cursor using NULL with NULL and NULL [single insert (No PK), heredoc string]
+ - Check convert type works
+ - Check check rows: 3 and cols: 4 [select data]
+ - Check check rows: 3 and cols: 0 [insert data]
+ - Check check rows: 1 and cols: 0 [update data]
+ - Check check rows: 1 and cols: 4 [select data, params]
+ - Query replacement count test [one place holder]
+ - Query replacement count test [one place holder, json call]
+ - Query replacement count test [one place holder, <> compare]
+ - Query replacement count test [one place holder, named]
+ - Query replacement count test [no replacement]
+ - Query replacement count test [insert]
+ - Query replacement count test [update]
+ - Query replacement count test [multiple, multline]
+ - Query replacement count test [two digit numbers]
+ - Query replacement count test [things in brackets]
+ - Query replacement count test [number compare]
+ - Query replacement count test [comments in insert]
+ - Query replacement count test [comment in update]
+ - Query replacement count test [a complete set of possible]
+ - Query replacement count test [all the same numbered]
+ - Query replacement count test [update with case]
+ - Query replacement count test [select with case]
+ - Query replacement count test [text string, with $ placehoders that could be seen as $$ string]
+ - Query replacement count test [text string, with $ placehoders are in $$ strings]
+ - Query replacement count test [text string, with escaped quote]
+ - Query replacement test [select, no change]
+ - Query replacement test [select, params ?]
+ - Query replacement test [select, params :]
+ - Query Replace error tests
+ - async query SELECT pg_sleep(1) with true (warning ''/error '') and true/result (warning ''/error '') [run simple async query]
+ - async query SELECT pg_sleep() with true (warning ''/error '') and true/result (warning ''/error '') [run simple async query, params]
+ - async query SELECT pg_sleep() with false (warning ''/error 23) and false/false (warning ''/error 42) [wrong params count]
+ - async query '' with false (warning ''/error 11) and false/false (warning ''/error 42) [no async query running]
+
+ \CoreLibs\Debug\FileWriter method tests
+
+ - fsetFolder test correct return code
+ - fsetFilename some_valid_name.log will match true [valid log file name]
+ - fsetFilename log/debug.log will match false [file name contains path]
+ - fsetFilename invalid name will match false [invalid log file name]
+ - fdebug write test string with enter NULL and will be true and written test string
+ [debug with default enter]
+ - fdebug write test string with enter false and will be true and written test string [debug with no enter]
+
+ \CoreLibs\Debug\LoggingLegacy method tests
+
+ - init test [log folder set]
+ - init test [nothing set]
+ - init test [no options set, constant set [DEPRECATED]]
+ - init test [standard test set]
+ - log id set/get tests [no log id set]
+ - log id set/get tests [set log id manually]
+ - log id set/get tests [set log id via options]
+ - log id set/get tests [set log id via globals [DEPRECATED]]
+ - log id set/get tests [set log id via constant [DEPRECATED]]
+ - log id set/get tests [invalid log id]
+ - set/get all log level debug with flag true [debug all true]
+ - set/get all log level echo with flag true [echo all true]
+ - set/get all log level print with flag true [print all true]
+ - set/get all log level invalud with flag true [set invalid level]
+ - set/get log level debug to on check with NULL [set debug on for level A,B,C and check full set]
+ - set/get log level debug to off check with A [set debug off for level A,B,C and check A]
+ - set/get log level debug to off check with NULL [set debug off for level A, B to false and check all]
+ - set/get log level invalid to '' check with NULL [set invalid level]
+ - set/get log level print to invalid check with NULL [set invalid on flag]
+ - set/get log level print to off check with NULL [missing debug level array]
+ - set/get log level print to on check with C [set level but check no exisitng]
+ - set/get log per level with true [level set true]
+ - set/get log per class with true [class set true]
+ - set/get log per page with true [page set true]
+ - set/get log per run with true [run set true]
+ - set/get log per invalid with true [set invalid type]
+ - set/get log file date to true [0]
+ - set/get log file date to false [1]
+ - check prAr array to string conversion [simple array]
+ - check prAr array to string conversion [empty array]
+ - check prAr array to string conversion [nested array]
+ - check prBl true (NULL/NULL) is expected NULL [true bool default]
+ - check prBl false (NULL/NULL) is expected NULL [false bool default]
+ - check prBl true (ok/not ok) is expected not ok [true bool override]
+ - check prBl false (ok/not ok) is expected not ok [false bool override]
+ - check debug flow: true [A debug: on, print: on, echo: on]
+ - check debug flow: true [B debug: on, print: off, echo: on]
+ - check debug flow: true [C debug: on, print: on, echo: off]
+ - check debug flow: false [D debug: on, print: off, echo: off]
+ - check debug flow: false [E debug: off, print: off, echo: off]
+ - per run log id set test: option: true, override: false [option set]
+ - per run log id set test: option: false, override: false [direct set]
+ - per run log id set test: option: false, override: true [override set]
+ - per run log id set test: option: false, override: true [option and override set]
+
+ \CoreLibs\Debug\MemoryUsage method tests
+
+ - memoryUsage with test, raw memory NULL [test normal]
+
+ \CoreLibs\Debug\RunningTime method tests
+
+ - hrRunningTime with NULL matching /^\d{4}\.\d{1,}$/ [default time]
+ - hrRunningTime with ns matching /^\d{10}$/ [nanoseconds]
+ - hrRunningTime with ys matching /^\d{7}\.\d{1,}$/ [microseconds]
+ - hrRunningTime with ms matching /^\d{4}\.\d{1,}$/ [milliseconds]
+ - hrRunningTime with s matching /^\d{1}\.\d{4,}$/ [seconds]
+ - hrRunningTime with invalid matching /^\d{4}\.\d{1,}$/ [invalid fallback to ms]
+ - runningTime matching return /^\d{1,}\.\d{1,}$/ and start /^Start: \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 0\.\d{8}, $/ end /^Start: \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 0\.\d{8}, End: \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 0\.\d{8}, Run: \d{1,}\.\d{1,} s$/ [run time test]
+
+ \CoreLibs\Debug\Support method tests
+
+ - printTime test with NULL and match to regex [default microtime]
+ - printTime test with -1 and match to regex [microtime -1]
+ - printTime test with 0 and match to regex [microtime 0]
+ - printTime test with 4 and match to regex [microtime 4]
+ - printAr/printArray array will be
Array
+(
+)
+
[empty array]
+ - printAr/printArray array will be
Array
+(
+ [0] => a
+ [1] => b
+)
+
[simple array]
+ - printBool true will be true [true input default]
+ - printBool false will be false [false input default]
+ - printBool false will be param test: false [false input param name]
+ - printBool true will be param test: ok [true input param name, true override]
+ - printBool false will be param test: not [false input param name, true override, false override]
+ - printToString NULL with NULL will be NULL [null]
+ - printToString a string with NULL will be a string [string]
+ - printToString a string with <> & with true will be a string with <> & [string with html chars, encode]
+ - printToString a string with <> & with NULL will be a string with <> & [string with html chars]
+ - printToString 1234 with NULL will be 1234 [a number]
+ - printToString 1234.5678 with NULL will be 1234.5678 [a float number]
+ - printToString true with NULL will be TRUE [bool true]
+ - printToString false with NULL will be FALSE [bool false]
+ - printToString array with NULL will be
Array
+(
+ [0] => a
+ [1] => b
+)
+
[an array default]
+ - printToString array with true will be Array
+(
+ [0] => a
+ [1] => b
+)
+ [an array, no html]
+ - printToString resource with NULL will be /^Resource id #\d+$/ [a resource]
+ - printToString CoreLibs\Debug\Support with NULL will be CoreLibs\Debug\Support [an object]
+ - dump/exportVar string with NULL will be string(6) "string"
+ /
'string'
[string]
+ - dump/exportVar string with true will be string(6) "string"
+ / 'string' [string, no html]
+ - dump/exportVar 6 with NULL will be int(6)
+ /
6
[int]
+ - dump/exportVar 1.6 with NULL will be float(1.6)
+ /
1.6
[float]
+ - dump/exportVar true with NULL will be bool(true)
+ /
true
[bool]
+ - dump/exportVar array with NULL will be array(2) {
+ [0]=>
+ string(6) "string"
+ [1]=>
+ bool(true)
+}
+ /
array (
+ 0 => 'string',
+ 1 => true,
+)
[array]
+ - getCallerFileLine check based on regex .../Framework/TestCase.php:\d+ []
+ - getCallerMethod check if it returns testGetCallerMethod [0]
+ - getCallerMethodList check if it returns array [0]
+ - getCallStack check if it returns data []
+ - getCallerClass check if it returns tests\CoreLibsDebugSupportTest [0]
+ - getCallerTopLevelClass check if it returns PHPUnit\TextUI\Command [0]
+ - getCallerClassMethod check if it returns tests\CoreLibsDebugSupportTest->testGetCallerClassMethod [0]
+ - debugString NULL with replace NULL and html NULL will be - [null string, default]
+ - debugString '' with replace ... and html NULL will be ... [empty string, ... replace]
+ - debugString some string with replace NULL and html NULL will be some string [filled string]
+ - debugString a string with <> & with replace - and html true will be a string with <> & [string with html chars, encode]
+ - debugString a string with <> & with replace - and html NULL will be a string with <> & [string with html chars]
+
+ \CoreLibs\Get\DotEnv method tests
+
+ - Read _ENV file from NULL / NULL with expected status: 3 and chmod NULL [default]
+ - Read _ENV file from /var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All/test/phpunit/Get/dotenv / cannot_read.env with expected status: 2 and chmod 100000 [cannot open file]
+ - Read _ENV file from /var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All/test/phpunit/Get/dotenv / empty.env with expected status: 1 and chmod 100664 [empty file]
+ - Read _ENV file from /var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All/test/phpunit/Get/dotenv / test.env with expected status: 0 and chmod 100664 [override all]
+ - Read _ENV file from /var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All/test/phpunit/Get/dotenv / NULL with expected status: 0 and chmod NULL [override directory]
+
+ \CoreLibs\Get\System method tests
+
+ - fileUploadErrorMessage 1 error matches The uploaded file exceeds the upload_max_filesize directive in php.ini [upload err init size]
+ - fileUploadErrorMessage 2 error matches The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form [upload err from size]
+ - fileUploadErrorMessage 3 error matches The uploaded file was only partially uploaded [upload err partial]
+ - fileUploadErrorMessage 4 error matches No file was uploaded [upload err no file]
+ - fileUploadErrorMessage 6 error matches Missing a temporary folder [upload err no tmp dir]
+ - fileUploadErrorMessage 7 error matches Failed to write file to disk [upload err cant write]
+ - fileUploadErrorMessage 8 error matches File upload stopped by extension [upload err extension]
+ - fileUploadErrorMessage 99999 error matches Unknown upload error [unkown error]
+ - getHostName NULL must match NOHOST:0 [original set]
+ - getHostName foo.org must match foo.org:80 [override set no port]
+ - getHostName foo.org:443 must match foo.org:443 [override set with port]
+ - getPageName NULL will match 0: phpunit, 1: phpunit, 2: /^(\/?.*\/?)?(vendor\/bin|tools)\/phpunit$/ [original set]
+ - getPageName /some/path/to/file.txt will match 0: file.txt, 1: file, 2: /some/path/to/file.txt [some path with extension]
+ - getIpAddresses check
+
+ \CoreLibs\Language\GetLocale method tests
+
+ - lang settings lang en_US.UTF-8, domain admin, encoding UTF-8, path /var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All/test/phpunit/Language/includes/locale/; session lang: ja_JP.UTF-8, session char: UTF-8 [all session vars set]
+ - lang settings lang en_US.UTF-8, domain admin, encoding UTF-8, path /var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All/test/phpunit/Language/includes/locale/; session lang: NULL, session char: NULL [no session set, only parameters]
+ - lang settings lang en_US.UTF-8, domain admin, encoding UTF-8, path /var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All/test/phpunit/Language/includes/locale/; session lang: ja, session char: UTF-8 [all session vars set, short lang]
+ - lang settings lang en_US.UTF-8, domain admin, encoding UTF-8, path /var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All/test/phpunit/Language/includes/locale/; session lang: de_CH.UTF-8@euro, session char: admin [long locale, domain, encoding params, no sessions]
+ - lang settings lang en_US.UTF-8, domain admin, encoding UTF-8, path /var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All/test/phpunit/Language/includes/locale/; session lang: ja, session char: NULL [session missing encoding, set from parameters]
+ - lang settings lang ###, domain &&&&, encoding $$$$, path foo_bar_path; session lang: NULL, session char: NULL [no session set, only parameters, all invalid]
+ - lang settings lang en_US.UTF-8, domain admin, encoding UTF-8, path /var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All/test/phpunit/Language/includes/locale/; session lang: ###, session char: &&&& [all session vars are invalid, fallback]
+
+ \CoreLibs\Language\L10n method tests
+
+ - check that getInstance() returns valid instance
+ - check that getTranslatorClass() returns valid instance
+ - check l10n init with Locale en_US.UTF-8, Path /var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All/test/phpunit/Language/includes/locale/, Domain frontend, Legacy: $legacy with context [gettext load en]
+ - check l10n init with Locale ja_JP.UTF-8, Path /var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All/test/phpunit/Language/includes/locale/, Domain admin, Legacy: $legacy with NULL [gettext load ja]
+ - check l10n init with Locale ja, Path /var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All/test/phpunit/Language/includes/locale/, Domain admin, Legacy: $legacy with NULL [gettext load short ja no encoding]
+ - check l10n init with Locale en_US.UTF-8, Path frontend, Domain /var/www/html/developers/clemens/core_data/composer-packages/CoreLibs-Composer-All/test/phpunit/Language/includes/locale/, Legacy: $legacy with context [mixed path and domain [DEPRECATED]]
+ - check l10n init with Locale ja_JP.UTF-8, Path NULL, Domain admin, Legacy: $legacy with NULL [unset path with locale and domain [DEPRECATED]]
+ - check l10n init with Locale '', Path '', Domain '', Legacy: $legacy with NULL [empty load new ]
+ - change locale from en_US.UTF-8 and domain frontend to locale ja_JP.UTF-8 and domain frontend [load and change (en->ja)]
+ - change locale from '' and domain '' to locale en_US.UTF-8 and domain frontend [empty load and change to en]
+ - plural string test for locale en_US and domain admin with NULL [plural text en]
+ - plural string test for locale en_US and domain admin with context [plural text context en]
+ - check en [en]
+ - check en.UTF-8 [en.UTF-8]
+ - check en_US [en_US]
+ - check en_US.UTF-8 [en_US.UTF-8]
+ - check en_US@subtext [en_US@subtext]
+ - check en_US.UTF-8@subtext [en_US.UTF-8@subtext]
+ - check detectLocale for global with LOCALE and ja_JP.UTF-8 is ja_JP.UTF-8 [global locale]
+ - check detectLocale for env with LC_ALL and ja_JP.UTF-8 is ja_JP.UTF-8 [env LC_ALL]
+ - check detectLocale for env with LANG and ja_JP.UTF-8 is ja_JP.UTF-8 [env LANG]
+ - check detectLocale for env with LC_ALL and '' is en [default return]
+ - set foo with foo/bar and get foo and expect foo/bar [valid set and get]
+ - set foo with foo/bar and get iamnotset and expect false [invalid set and get]
+ - set foo and expect foo [valid domain]
+ - set '' and expect '' [empty domain]
+ - set foo with foo and expect foo [valid locale]
+ - set '' with '' and expect '' [empty locale]
+ - set '' with foo and expect foo [empty locale, pre set]
+ - check functions with locale en_US.UTF-8 and domain frontend [standard en]
+ - check functions with locale ja_JP.UTF-8 and domain admin [standard ja]
+
+ \CoreLibs\Logging\ErrorMessages method tests
+
+ - error message level: ok will be ok [ok]
+ - error message level: success will be success [success]
+ - error message level: info will be info [info]
+ - error message level: notice will be notice [notice]
+ - error message level: warn will be warn [warn]
+ - error message level: warning will be warn [warning]
+ - error message level: error will be error [error]
+ - error message level: abort will be abort [abort]
+ - error message level: crash will be crash [crash]
+ - error message level: wrong will be unknown [wrong level]
+ - Test of all methods for n messages []
+ - Test Log writing with log level Error [error, not logged]
+ - Test Log writing with log level Error [error, logged]
+ - Test Log writing with log level Error [error, logged, message]
+ - Test Log writing with log level Error [warn, not logged]
+ - Test Log writing with log level Error [warn, logged]
+ - Test Log writing with log level Error [warn, logged, message]
+ - Test Log writing with log level Error [notice]
+ - Test Log writing with log level Error [notice, message]
+ - Test Log writing with log level Error [crash]
+ - Test Log writing with log level Error [crash, message]
+ - Test Log writing with log level Error [abort]
+ - Test Log writing with log level Error [abort, message]
+ - Test Log writing with log level Error [unknown]
+ - Test Log writing with log level Error [unknown, message]
+ - Test Log writing with log Level Debug [error, not logged]
+ - Test Log writing with log Level Debug [error, logged]
+ - Test Log writing with log Level Debug [error, logged, message]
+ - Test Log writing with log Level Debug [warn, not logged]
+ - Test Log writing with log Level Debug [warn, logged]
+ - Test Log writing with log Level Debug [warn, logged, message]
+ - Test Log writing with log Level Debug [notice]
+ - Test Log writing with log Level Debug [notice, message]
+ - Test Log writing with log Level Debug [crash]
+ - Test Log writing with log Level Debug [crash, message]
+ - Test Log writing with log Level Debug [abort]
+ - Test Log writing with log Level Debug [abort, message]
+ - Test Log writing with log Level Debug [unknown]
+ - Test Log writing with log Level Debug [unknown, message]
+ - Test jump target set and reporting
+
+ \CoreLibs\Logging\Logging method tests
+
+ - init test [log folder set]
+ - init test [no log folder set]
+ - init test [file_id set but not log_file_id]
+ - init test [file_id and log_file_id set]
+ - init test [nothing set]
+ - setLoggingLevel set/get checks
+ - setErrorLogWriteLevel set/get checks
+ - setLogFileId set/get checks
+ - per run log id set test: option: true, override: false [option set]
+ - per run log id set test: option: false, override: false [direct set]
+ - per run log id set test: option: false, override: true [override set]
+ - per run log id set test: option: false, override: true [option and override set]
+ - setLogDate set/get checks
+ - Logger\Flag enum test
+ - setLogDate set/get checks
+ - setLogFolder set/get checks, init check
+ - setLogMaxFileSize set/get checks, init check
+ - getOption checks
+ - debug checks
+ - logging level write checks for CoreLibs\Logging\Logger\Level [info]
+ - logging level write checks for CoreLibs\Logging\Logger\Level [notice]
+ - logging level write checks for CoreLibs\Logging\Logger\Level [warning]
+ - logging level write checks for CoreLibs\Logging\Logger\Level [error]
+ - logging level write checks for CoreLibs\Logging\Logger\Level [crticial]
+ - logging level write checks for CoreLibs\Logging\Logger\Level [alert]
+ - logging level write checks for CoreLibs\Logging\Logger\Level [emergency]
+ - log() general call test
+
+ \CoreLibs\Output\Form\Elements method tests
+
+ - Output\Form\Elements Class tests
+
+ \CoreLibs\Output\Form\Generate method tests
+
+ - Output\Form\Generate Class tests
+
+ \CoreLibs\Output\Form\Token method tests
+
+ - Output\Form\Token Class tests
+
+ \CoreLibs\Output\Image method tests
+
+ - createThumbnail checks
+ - createThumbnailSimple checks
+ - correctImageOrientation checks
+
+ \CoreLibs\Output\Progressbar method tests
+
+ - Output\Progressbar Class tests
+
+ \CoreLibs\Security\AsymmetricAnonymousEncryption method tests
+
+ - Check if init class set key pair matches to created key pair and public key
+ - Check if init class set key pair and public key matches to created key pair and public key
+ - Check if init class set public key matches to created public key
+ - Check if set key pair after class init matches to created key pair and public key
+ - Check if set key pair after class init matches to created key pair and public key
+ - Check if set key pair after class init matches to created key pair and public key
+ - Check different key pair and public key set
+ - Check if new set privat key does not overwrite set public key
+ - Test empty encrypted string to decrypt
+ - encrypt/decrypt I am a secret must be I am a secret [valid string]
+ - encrypt/decrypt indirect I am a secret must be I am a secret [valid string]
+ - encrypt/decrypt indirect with public key I am a secret must be I am a secret [valid string]
+ - encrypt/decrypt static I am a secret must be I am a secret [valid string]
+ - decrypt with wrong key I am a secret throws Invalid key pair [wrong decryption key]
+ - decrypt indirect with wrong key I am a secret throws Invalid key pair [wrong decryption key]
+ - decrypt static with wrong key I am a secret throws Invalid key pair [wrong decryption key]
+ - wrong key pair not_a_hex_key_pair throws Invalid hex key pair [not hex key pair]
+ - wrong key pair 1cabd5cba9e042f12522f4ff2de5c31d233b throws Key pair is not the correct size (must be [too short hex key pair]
+ - wrong key pair '' throws Key pair cannot be empty [empty key pair]
+ - wrong key pair indirect not_a_hex_key_pair throws Invalid hex key pair [not hex key pair]
+ - wrong key pair indirect 1cabd5cba9e042f12522f4ff2de5c31d233b throws Key pair is not the correct size (must be [too short hex key pair]
+ - wrong key pair indirect '' throws Key pair cannot be empty [empty key pair]
+ - wrong key pair static not_a_hex_key_pair throws Invalid hex key pair [not hex key pair]
+ - wrong key pair static 1cabd5cba9e042f12522f4ff2de5c31d233b throws Key pair is not the correct size (must be [too short hex key pair]
+ - wrong key pair static '' throws Key pair cannot be empty [empty key pair]
+ - wrong public key not_a_hex_public_key throws Invalid hex public key [not hex public key]
+ - wrong public key 1cabd5cba9e042f12522f4ff2de5c31d233b throws Public key is not the correct size (must be [too short hex public key]
+ - wrong public key '' throws Public key cannot be empty [empty public key]
+ - wrong public key indirect not_a_hex_public_key throws Invalid hex public key [not hex public key]
+ - wrong public key indirect 1cabd5cba9e042f12522f4ff2de5c31d233b throws Public key is not the correct size (must be [too short hex public key]
+ - wrong public key indirect '' throws Public key cannot be empty [empty public key]
+ - wrong public key static not_a_hex_public_key throws Invalid hex public key [not hex public key]
+ - wrong public key static 1cabd5cba9e042f12522f4ff2de5c31d233b throws Public key is not the correct size (must be [too short hex public key]
+ - wrong public key static '' throws Public key cannot be empty [empty public key]
+ - too short ciphertext short throws base642bin failed: [invalid cipher text]
+ - too short ciphertext Um8tBGiVfFAOg2YoUgA5fTqK1wXPB1S7uxhPNE1lqDxgntkEhYJDOmjXa0DMpBlYHjab6sC4mgzwZSzGCUnXDAgsHckwYwfAzs/r throws Invalid key pair [cannot decrypt]
+ - too short ciphertext U29tZSB0ZXh0IGhlcmU= throws Invalid key pair [invalid text]
+ - too short ciphertext indirect short throws base642bin failed: [invalid cipher text]
+ - too short ciphertext indirect Um8tBGiVfFAOg2YoUgA5fTqK1wXPB1S7uxhPNE1lqDxgntkEhYJDOmjXa0DMpBlYHjab6sC4mgzwZSzGCUnXDAgsHckwYwfAzs/r throws Invalid key pair [cannot decrypt]
+ - too short ciphertext indirect U29tZSB0ZXh0IGhlcmU= throws Invalid key pair [invalid text]
+ - too short ciphertext static short throws base642bin failed: [invalid cipher text]
+ - too short ciphertext static Um8tBGiVfFAOg2YoUgA5fTqK1wXPB1S7uxhPNE1lqDxgntkEhYJDOmjXa0DMpBlYHjab6sC4mgzwZSzGCUnXDAgsHckwYwfAzs/r throws Invalid key pair [cannot decrypt]
+ - too short ciphertext static U29tZSB0ZXh0IGhlcmU= throws Invalid key pair [invalid text]
+
+ \CoreLibs\Security\Password method tests
+
+ - passwordSet test compare to test: passwordVerify true [matching password]
+ - passwordSet test compare to not_test: passwordVerify false [not matching password]
+ - passwordRehashCheck y$EgWJ2WE73DWi.hIyFRCdpejLXTvHbmTK3LEOclO1tAvXAXUNuUS4W will be false [no rehash needed]
+ - passwordRehashCheck 9c42a1346e333a770904b2a2b37fa7d3 will be true [rehash needed]
+
+ \CoreLibs\Security\SymmetricEncryption method tests
+
+ - Check if init class set key matches to created key
+ - Check if set key after class init matches to created key
+ - Test empty encrypted string to decrypt
+ - encrypt/decrypt I am a secret must be I am a secret [valid string]
+ - encrypt/decrypt indirect I am a secret must be I am a secret [valid string]
+ - encrypt/decrypt static I am a secret must be I am a secret [valid string]
+ - decrypt with wrong key I am a secret throws Invalid Key [wrong decryption key]
+ - decrypt indirect with wrong key I am a secret throws Invalid Key [wrong decryption key]
+ - decrypt static with wrong key I am a secret throws Invalid Key [wrong decryption key]
+ - wrong key not_a_hex_key throws Invalid hex key [not hex key]
+ - wrong key 1cabd5cba9e042f12522f4ff2de5c31d233b throws Key is not the correct size (must be [too short hex key]
+ - wrong key '' throws Key cannot be empty [empty key]
+ - wrong key indirect not_a_hex_key throws Invalid hex key [not hex key]
+ - wrong key indirect 1cabd5cba9e042f12522f4ff2de5c31d233b throws Key is not the correct size (must be [too short hex key]
+ - wrong key indirect '' throws Key cannot be empty [empty key]
+ - wrong key static not_a_hex_key throws Invalid hex key [not hex key]
+ - wrong key static 1cabd5cba9e042f12522f4ff2de5c31d233b throws Key is not the correct size (must be [too short hex key]
+ - wrong key static '' throws Key cannot be empty [empty key]
+ - too short ciphertext short throws Decipher message failed: [too short ciphertext]
+ - too short ciphertext indirect short throws Decipher message failed: [too short ciphertext]
+ - too short ciphertext static short throws Decipher message failed: [too short ciphertext]
+
+ \CoreLibs\Template\HtmlBuilder\Block method tests
+
+ \CoreLibs\Template\HtmlBuilder\Element method tests
+
+ - create single new Element test [simple div]
+ - create single new Element test [simple input]
+ - test handling of adding and removing css classes
+ - nested test and loop assign detection
+ - updated nested connection
+ - test change tag/id/content
+ - test change options
+ - build element tree from object
+ - build elements from array list
+ - check for invalid tag detection, possible invalid id, possible invalid css
+
+ \CoreLibs\Template\HtmlBuilder\StringReplace method tests
+
+ - test basic replaceData
+
+ \CoreLibs\UrlRequests\Curl method tests
+
+ - UrlRequests\Curl Class setup tasks [no config]
+ - UrlRequests\Curl Class setup tasks [setup all possible configs]
+ - UrlRequests\Curl Class setup tasks [setup base_uri only]
+ - UrlRequests\Curl Class setup tasks [replace base_uri]
+ - UrlRequests\Curl Class setup tasks [set header new]
+ - UrlRequests\Curl Class setup tasks [set header overwrite]
+ - UrlRequests\Curl Class setup tasks [set header add]
+ - UrlRequests\Curl Class setup tasks [remove header string, full match]
+ - UrlRequests\Curl Class setup tasks [remove header string, key match only]
+ - UrlRequests\Curl Class setup tasks [remove header array, key match]
+ - UrlRequests\Curl Class setup tasks [remove header array, string match]
+ - UrlRequests\Curl Class setup tasks [remove header array, array match]
+ - UrlRequests\Curl call with data merge [base url + add url]
+ - UrlRequests\Curl call with data merge [base url + replace url]
+ - UrlRequests\Curl call with data merge [base header + add header]
+ - UrlRequests\Curl call with data merge [base header + reset header]
+ - UrlRequests\Curl call with data merge [base header + add header (same)]
+ - UrlRequests\Curl call with data merge [base header + add header (replace)]
+ - UrlRequests\Curl request calls [basic get, no options]
+ - UrlRequests\Curl request calls [basic get, query options]
+ - UrlRequests\Curl request calls [basic delete, no options]
+ - UrlRequests\Curl request calls [basic delete, query options]
+ - UrlRequests\Curl request calls [basic delete, query/body options]
+ - UrlRequests\Curl request calls [basic delete, body options]
+ - UrlRequests\Curl request calls [basic delete, body options as string]
+ - UrlRequests\Curl request calls [basic post, no options]
+ - UrlRequests\Curl request calls [basic post, query options]
+ - UrlRequests\Curl request calls [basic post, query/body options]
+ - UrlRequests\Curl request calls [basic post, body options]
+ - UrlRequests\Curl request calls [basic post, body option as string]
+ - UrlRequests\Curl request calls [basic put, no options]
+ - UrlRequests\Curl request calls [basic put, query options]
+ - UrlRequests\Curl request calls [basic put, query/body options]
+ - UrlRequests\Curl request calls [basic put, body options]
+ - UrlRequests\Curl request calls [basic put, body option as string]
+ - UrlRequests\Curl request calls [basic patch, no options]
+ - UrlRequests\Curl request calls [basic patch, query options]
+ - UrlRequests\Curl request calls [basic patch, query/body options]
+ - UrlRequests\Curl request calls [basic patch, body options]
+ - UrlRequests\Curl request calls [basic patch, body option as string]
+ - UrlRequests\Curl multiple calls
+ - UrlRequests\Curl auth test call
+ - UrlRequests\Curl Exception:InvalidRequestType
+ - UrlRequests\Curl Exception:InvalidHeaderKey
+ - UrlRequests\Curl Exception:InvalidHeaderValue
+ - UrlRequests\Curl Exception:CurlExecError
+ - UrlRequests\Curl Exception:ClientError
+ - UrlRequests\Curl Exception:ClientError on call enable
+ - UrlRequests\Curl Exception:ClientError unset on call
+
+
+
\ No newline at end of file
diff --git a/src/Create/Crc64.php b/src/Create/Crc64.php
new file mode 100644
index 0000000..eab5ac4
--- /dev/null
+++ b/src/Create/Crc64.php
@@ -0,0 +1,106 @@
+> is arithmetic, so mask off the sign bit
+ $c = ($c & 1)
+ ? ((($c >> 1) & PHP_INT_MAX) ^ $poly)
+ : (($c >> 1) & PHP_INT_MAX);
+ }
+ $table[$i] = $c;
+ }
+ }
+ $crc = ~$crc; // xor 0xFFFFFFFFFFFFFFFF
+ foreach (unpack('C*', $data) ?: [] as $b) {
+ $crc = $table[($crc ^ $b) & 0xFF] ^ (($crc >> 8) & 0x00FFFFFFFFFFFFFF);
+ }
+ return ~$crc;
+ }
+
+ /**
+ * Returns int value of the CRC64 checksum for the given file.
+ *
+ * @param string $path
+ * @param int<1,16777216> $chunkSize
+ * @return int
+ */
+ private function crc64CalcFile(string $path, int $chunkSize = 8 * 1024 * 1024): int
+ {
+ $fh = fopen($path, 'rb');
+ if ($fh === false) {
+ throw new \RuntimeException("Cannot open $path");
+ }
+ $crc = 0;
+ try {
+ while (!feof($fh)) {
+ $chunk = fread($fh, $chunkSize);
+ if ($chunk === false) {
+ throw new \RuntimeException("Read error on $path");
+ }
+ $crc = $this->crc64Calc($chunk, $crc);
+ }
+ } finally {
+ fclose($fh);
+ }
+ return $crc;
+ }
+
+ /**
+ * Returns the Base64-encoded CRC64 checksum for the given file.
+ *
+ * @param string $path
+ * @return string
+ */
+ public static function crc64(string $path): string
+ {
+ return base64_encode(pack('J', (new self())->crc64CalcFile($path))); // J = uint64 big-endian
+ }
+
+ /**
+ * Returns the 16-character lowercase hexadecimal CRC64 checksum for the given file.
+ * Same as base64.b64decode(...).hex()
+ *
+ * @param string $path
+ * @return string
+ */
+ public static function crc64hex(string $path): string
+ {
+ return sprintf('%016x', (new self())->crc64CalcFile($path));
+ }
+}
+
+// __END__
diff --git a/test/phpunit/ACL/CoreLibsACLLoginTest.php b/test/phpunit/ACL/CoreLibsACLLoginTest.php
index 2be4285..eedaa3a 100644
--- a/test/phpunit/ACL/CoreLibsACLLoginTest.php
+++ b/test/phpunit/ACL/CoreLibsACLLoginTest.php
@@ -46,7 +46,8 @@ final class CoreLibsACLLoginTest extends TestCase
// database/CoreLibsACLLogin_database_create_data.sql
$load_sql_file = __DIR__
. DIRECTORY_SEPARATOR
- . 'database/CoreLibsACLLogin_database_create_data.sql';
+ . 'database' . DIRECTORY_SEPARATOR
+ . 'CoreLibsACLLogin_database_create_data.sql';
if (!is_file($load_sql_file)) {
self::markTestIncomplete(
'Missing ACL\Login database load SQL file'
@@ -63,6 +64,7 @@ final class CoreLibsACLLoginTest extends TestCase
. "CoreLibsACLLogin_database_prepare.sh "
. "$load_sql_file "
. "$db_user "
+ . "$db_password "
. "$db_name "
. "$db_host ";
exec($command, $ouput, $result);
diff --git a/test/phpunit/ACL/CoreLibsACLLogin_database_prepare.sh b/test/phpunit/ACL/CoreLibsACLLogin_database_prepare.sh
index 012b17a..d7671f8 100755
--- a/test/phpunit/ACL/CoreLibsACLLogin_database_prepare.sh
+++ b/test/phpunit/ACL/CoreLibsACLLogin_database_prepare.sh
@@ -22,31 +22,32 @@ if ! command -v dropdb &> /dev/null || ! command -v createdb &> /dev/null || ! c
fi;
db_user="${2}";
-db_name="${3}";
-db_host="${4}";
+db_password="${3}";
+db_name="${4}";
+db_host="${5}";
# empty db name or db user -> exit with 2
-if [ -z "${db_user}" ] || [ -z "${db_name}" ] || [ -z "${db_host}" ]; then
+if [ -z "${db_user}" ] || [ -z "${db_name}" ] || [ -z "${db_password}" ] || [ -z "${db_host}" ]; then
echo 2;
exit 2;
fi;
# drop database, on error exit with 3
-dropdb -U "${db_user}" -h "${db_host}" "${db_name}" 2>&1;
+PGPASSWORD="${db_password}" dropdb -U "${db_user}" -h "${db_host}" "${db_name}" 2>&1;
if [ ! $? ]; then
echo 3;
exit 3;
fi;
# create database, on error exit with 4
-createdb -U "${db_user}" -O "${db_user}" -h "${db_host}" -E utf8 "${db_name}" 2>&1;
+PGPASSWORD="${db_password}" createdb -U "${db_user}" -O "${db_user}" -h "${db_host}" -E utf8 "${db_name}" 2>&1;
if [ ! $? ]; then
echo 4;
exit 4;
fi;
# if error 5 thrown, test with enabled below
if [ -n "${5}" ]; then
- psql -U "${db_user}" -h "${db_host}" -f "${load_sql}" "${db_name}";
+ PGPASSWORD="${db_password}" psql -U "${db_user}" -h "${db_host}" -f "${load_sql}" "${db_name}";
else
# load data (redirect ALL error to null), on error exit with 5
- psql -U "${db_user}" -h "${db_host}" -f "${load_sql}" "${db_name}" 2>&1 1>/dev/null 2>/dev/null;
+ PGPASSWORD="${db_password}" psql -U "${db_user}" -h "${db_host}" -f "${load_sql}" "${db_name}" 2>&1 1>/dev/null 2>/dev/null;
fi;
if [ ! $? ]; then
echo 5;
diff --git a/test/phpunit/Create/CoreLibsCreateCrc64Test.php b/test/phpunit/Create/CoreLibsCreateCrc64Test.php
new file mode 100644
index 0000000..dffa02a
--- /dev/null
+++ b/test/phpunit/Create/CoreLibsCreateCrc64Test.php
@@ -0,0 +1,73 @@
+ [
+ 'file' => __DIR__ . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR . 'random_10KB.bin',
+ 'crc64_base64' => 'oMgkUkGrDME=',
+ 'crc64_hex' => 'a0c8245241ab0cc1',
+ ],
+ '100kb' => [
+ 'file' => __DIR__ . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR . 'random_100KB.bin',
+ 'crc64_base64' => 'i9Lpf3Y3D3M=',
+ 'crc64_hex' => '8bd2e97f76370f73',
+ ],
+ '1mb' => [
+ 'file' => __DIR__ . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR . 'random_1MB.bin',
+ 'crc64_base64' => 'WqYAirRJ0q8=',
+ 'crc64_hex' => '5aa6008ab449d2af',
+ ],
+ '5mb' => [
+ 'file' => __DIR__ . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR . 'random_5MB.bin',
+ 'crc64_base64' => '9hS5kUxbgR0=',
+ 'crc64_hex' => 'f614b9914c5b811d',
+ ],
+ '10mb' => [
+ 'file' => __DIR__ . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR . 'random_10MB.bin',
+ 'crc64_base64' => 'xDmtkk1JhjM=',
+ 'crc64_hex' => 'c439ad924d498633',
+ ],
+ // everything above 10MB is too slow, sow do not check this
+ ];
+ }
+
+ /**
+ * Undocumented function
+ *
+ * @covers ::crc64
+ * @covers ::crc64hex
+ * @dataProvider providerFiles
+ * @testdox generate crc64 for $file and expecting $crc64_base64 and $crc64_hex [$_dataName]
+ *
+ * @return void
+ */
+ public function testCrc64(string $file, string $crc64_base64, string $crc64_hex): void
+ {
+ $this->assertSame(
+ $crc64_base64,
+ \CoreLibs\Create\Crc64::crc64($file),
+ "Failed asserting base64 CRC64 for $file"
+ );
+ $this->assertSame(
+ $crc64_hex,
+ \CoreLibs\Create\Crc64::crc64hex($file),
+ "Failed asserting hex CRC64 for $file"
+ );
+ }
+}
+
+// __END__
diff --git a/test/phpunit/Create/files/random_100KB.bin b/test/phpunit/Create/files/random_100KB.bin
new file mode 100644
index 0000000..c9ab5ea
Binary files /dev/null and b/test/phpunit/Create/files/random_100KB.bin differ
diff --git a/test/phpunit/Create/files/random_10KB.bin b/test/phpunit/Create/files/random_10KB.bin
new file mode 100644
index 0000000..c6d3b8c
Binary files /dev/null and b/test/phpunit/Create/files/random_10KB.bin differ
diff --git a/test/phpunit/Create/files/random_10MB.bin b/test/phpunit/Create/files/random_10MB.bin
new file mode 100644
index 0000000..81f205d
Binary files /dev/null and b/test/phpunit/Create/files/random_10MB.bin differ
diff --git a/test/phpunit/Create/files/random_1MB.bin b/test/phpunit/Create/files/random_1MB.bin
new file mode 100644
index 0000000..0002c67
Binary files /dev/null and b/test/phpunit/Create/files/random_1MB.bin differ
diff --git a/test/phpunit/Create/files/random_5MB.bin b/test/phpunit/Create/files/random_5MB.bin
new file mode 100644
index 0000000..796bfda
Binary files /dev/null and b/test/phpunit/Create/files/random_5MB.bin differ