72 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
require_once "vendor/autoload.php";
 | 
						|
 | 
						|
require_once "class/TestMgr.php";
 | 
						|
require_once "class/GameMgr.php";
 | 
						|
 | 
						|
require_once "class/LogicFunction.php";
 | 
						|
 | 
						|
ini_set('display_errors', 1);
 | 
						|
 | 
						|
const longopts = [
 | 
						|
    "action:", // execute some CLI action
 | 
						|
    "tick", // tick timed objects (e.g. timed tests)
 | 
						|
];
 | 
						|
 | 
						|
$options = getopt("", longopts);
 | 
						|
 | 
						|
// CLI actions
 | 
						|
if (isset($options["action"])) {
 | 
						|
    $action = $options["action"];
 | 
						|
 | 
						|
    switch ($action) {
 | 
						|
        case "upgrade_tests":
 | 
						|
            {
 | 
						|
                printf("Upgrading tests...");
 | 
						|
                $testMgr = new TestMgr();
 | 
						|
                $testMgr->upgradeTests();
 | 
						|
                printf("OK!\n");
 | 
						|
            }
 | 
						|
            break;
 | 
						|
        case "upgrade_games":
 | 
						|
            {
 | 
						|
                printf("Upgrading games...");
 | 
						|
                $gameMgr = new GameMgr();
 | 
						|
                $gameMgr->upgradeGames();
 | 
						|
                printf("OK!\n");
 | 
						|
            }
 | 
						|
            break;
 | 
						|
        case "get_timed_tests":
 | 
						|
            {
 | 
						|
                $testMgr = new TestMgr();
 | 
						|
                printf("Expired timed tests: %s\n", join(", ", $testMgr->extractExpiredTimedTestIds()));
 | 
						|
            }
 | 
						|
            break;
 | 
						|
        case "gen_random":
 | 
						|
            {
 | 
						|
                $lf = LogicFunction::genRandom(["a", "b", "c"], 2, 4);
 | 
						|
                //$lf = LogicFunction::genRandomDF(["a", "b", "c"]);
 | 
						|
                printf("Verilog-form: %s\nTeX-form: %s\n", $lf->getExpression(), $lf->getExpression("tex"));
 | 
						|
                print_r($lf->getTruthTable());
 | 
						|
                print_r($lf->toDNF());
 | 
						|
                //$lf->drawNetwork("TESTING/network.svg");
 | 
						|
            }
 | 
						|
            break;
 | 
						|
        case "verify":
 | 
						|
            {
 | 
						|
                printf("Verifying expression\n");
 | 
						|
                $ok = LogicFunction::isCorrectDNF(["a", "b", "c"], "(a & ~b & c) | (b & ~c & a)");
 | 
						|
                printf("%d\n", $ok);
 | 
						|
            }
 | 
						|
            break;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
// Tick tests
 | 
						|
if (isset($options["tick"])) {
 | 
						|
    $testMgr = new TestMgr();
 | 
						|
    $timedTestIDs = $testMgr->extractExpiredTimedTestIds();
 | 
						|
    $testMgr->upgradeTests($timedTestIDs);
 | 
						|
}
 |