<?php function test_me($desc) { $pipes = null; $process = proc_open(__DIR__ . "/test_proc_open.sh", $desc, $pipes); $status = proc_get_status($process); pcntl_waitpid($status["pid"], $child_status); } $desc = array(array("file", "php://stdin", "r")); test_me($desc); $desc = array(array("file", __DIR__ . "/test_proc_open.txt", "r")); test_me($desc); $desc = array(array("file", __DIR__, "r")); test_me($desc); $desc = array(array("file", "php://fd/0", "r")); test_me($desc); $desc = array(array("file", "php://temp", "r")); test_me($desc); $desc = array(array("file", "php://memory", "r")); test_me($desc);
echo "for '{$text1}'/'{$text2}' "; if ($cost1) { echo "({$cost1}:{$cost2}:{$cost3})"; } echo "\n"; return 1; } $n = 0; $n += test_me("equal", 0, "12345", "12345"); $n += test_me("1st empty", 3, "", "xzy"); $n += test_me("2nd empty", 3, "xzy", ""); $n += test_me("both empty", 0, "", ""); $n += test_me("1 char", 1, "1", "2"); $n += test_me("2 char swap", 2, "12", "21"); $n += test_me("inexpensive delete", 2, "2121", "11", 2, 1, 1); $n += test_me("expensive delete", 10, "2121", "11", 2, 1, 5); $n += test_me("inexpensive insert", 2, "11", "2121", 1, 1, 1); $n += test_me("expensive insert", 10, "11", "2121", 5, 1, 1); $n += test_me("expensive replace", 3, "111", "121", 2, 3, 2); $n += test_me("very expensive replace", 4, "111", "121", 2, 9, 2); $n += test_me("bug #7368", 2, "13458", "12345"); $n += test_me("bug #7368", 2, "1345", "1234"); $n += test_me("bug #6562", 1, "debugg", "debug"); $n += test_me("bug #6562", 1, "ddebug", "debug"); $n += test_me("bug #6562", 2, "debbbug", "debug"); $n += test_me("bug #6562", 1, "debugging", "debuging"); $n += test_me("bug #16473", 2, "a", "bc"); $n += test_me("bug #16473", 2, "xa", "xbc"); $n += test_me("bug #16473", 2, "xax", "xbcx"); $n += test_me("bug #16473", 2, "ax", "bcx"); echo $n == 0 ? "all passed\n" : "{$n} failed\n";
$n += test_me("1st empty", 3, "", "xzy"); $n += test_me("2nd empty", 3, "xzy", ""); $n += test_me("both empty", 0, "", ""); $n += test_me("1 char", 1, "1", "2"); $n += test_me("2 char swap", 2, "12", "21"); $n += test_me("inexpensive delete", 2, "2121", "11", 2, 1, 1); $n += test_me("expensive delete", 10, "2121", "11", 2, 1, 5); $n += test_me("inexpensive insert", 2, "11", "2121", 1, 1, 1); $n += test_me("expensive insert", 10, "11", "2121", 5, 1, 1); $n += test_me("expensive replace", 3, "111", "121", 2, 3, 2); $n += test_me("very expensive replace", 4, "111", "121", 2, 9, 2); $n += test_me("bug #7368", 2, "13458", "12345"); $n += test_me("bug #7368", 2, "1345", "1234"); $n += test_me("bug #6562", 1, "debugg", "debug"); $n += test_me("bug #6562", 1, "ddebug", "debug"); $n += test_me("bug #6562", 2, "debbbug", "debug"); $n += test_me("bug #6562", 1, "debugging", "debuging"); $n += test_me("bug #16473", 2, "a", "bc"); $n += test_me("bug #16473", 2, "xa", "xbc"); $n += test_me("bug #16473", 2, "xax", "xbcx"); $n += test_me("bug #16473", 2, "ax", "bcx"); $n += test_me("custom", -1, "111", "121", "my_levcode"); $n += test_me("lt maxlength1", 254, "AbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsu", "A"); $n += test_me("gt maxlength1", -1, "AbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuv", "A"); $n += test_me("lt maxlength2", 254, "A", "AbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsu"); $n += test_me("gt maxlength2", -1, "A", "AbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrstuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuvwxyzAbcdefghijklmnopqrtsuv"); echo $n == 0 ? "all passed\n" : "{$n} failed\n"; var_dump(levenshtein(array(), array())); var_dump(levenshtein("", "", -1, -1, -1)); var_dump(levenshtein("", "", 10, 10, 10)); var_dump(levenshtein(""));