Exemplo n.º 1
0
Arquivo: main.cpp Projeto: henrical/PO
int main()
{
	AndGate2 ag(true, false);
	AndGate2 ag2(false);
	AndGate2 ag3(); //not working for some misterious reason
	AndGate2 ag4(true,false);
	AndGate2 ag5(false,true);
	AndGate2 ag6(true);

	std::cout << ag.toString() << std::endl;
	std::cout <<"Output: " << std::boolalpha << ag.getOutput() << std::endl;
	std::cout <<"Comparing with 'ag4'(" << ag4.toString() << "). " << "Result: " << std::boolalpha << (ag==ag4) << std::endl; //(ag==ag4) needs the parentesis in order to compile

	std::cout << "==============================================================" << std::endl;

	std::cout << ag5.toString() << std::endl;
	std::cout <<"Output: " << std::boolalpha << ag5.getOutput() << std::endl;
	std::cout <<"Comparing with 'ag2'(" << ag2.toString() << "). " << "Result: " << std::boolalpha << (ag5==ag2) << std::endl;

	std::cout << "==============================================================" << std::endl;

	std::cout << ag6.toString() << std::endl;
	std::cout <<"Output: " << std::boolalpha << ag6.getOutput() << std::endl;
	std::cout <<"Comparing with 'ag5'(" << ag5.toString() << "). " << "Result: " << std::boolalpha << (ag6==ag5) << std::endl;
}
int main()
{
    lcs::Bus<1> a, b, a_, b_, p1, p2, s;
    
    lcs::Not<> ng1(a_, a), ng2(b_, b);
    lcs::And<2> ag1(p1, (a,b_)), ag2(p2, (a_,b));
    lcs::Or<2> og(s, (p1,p2));

    lcs::ChangeMonitor<2> inputMonitor((a,b), "Input", lcs::DUMP_ON);
    lcs::ChangeMonitor<1> outputMonitor(s, "Output", lcs::DUMP_ON);

    lcs::Tester<2> tester((a,b));

    lcs::Simulation::setStopTime(1000);
    lcs::Simulation::start();

    return 0;
}
Exemplo n.º 3
0
void run(int argc, char *argv[]) {
    int i, j;
    int array[16];

    switch (testID) {
    case 0:
	if (processID == 0) {
	    restart();
	    childWait();
	    for (i=0; i<1024; i++);
	    ag2(-1,1);
	    agDone();
	}
	else {
	    ag2(-1,2);
	    parentSignal();
	    exit(0);
	}
	break;

    case 1:
	if (processID == 0) {
	    for (i=0; i<16; i++) {
		array[i] = restart();
		childWait();
	    }

	    for (i=0; i<16; i++)
		for (j=0; j<16; j++)
		    assert(i==j || array[i]!=array[j]);

	    agDone();
	}
	else {
	    parentSignal();
	    exit(0);
	}
	break;

    case 2:
	if (processID == 0) {
	    restart();
	    restart();
	    childWait();
	    exit(0);
	}
	else if (processID == 1) {
	    parentSignal();
	    for (i=0; i<1024; i++);
	    parentSignal();
	    exit(0);
	}
	else {
	    childWait();
	    for (i=0; i<1024; i++);
	    agDone();
	}
	break;

    case 3:
	if (processID == 0) {
	    i = restart();
	    assert(join(i, &j) == 1);
	    assert(j == agLoad(valRandom));
	    agDone();
	}
	else {
	    exit(agLoad(valRandom));
	}
	break;

    case 4:
	assert(exec("abcdefghijklmnopqrstuvwxyz", 0, null) == -1);
	agDone();
	break;

    case 5:
	switch (processID) {
	case 0:
	    restart();
	    childWait();
	    assert(join(agLoad(valChildProcessID), &j) == 1);
	    assert(j == 0);
	    agDone();
	    break;
	case 1:
	    restart();
	    agStore(valChildProcessID, restart());
	    parentSignal();
	    break;
	case 2:
	    exit(0);
	    break;
	case 3:
	    exit(agLoad(valRandom));
	    break;
	}
	break;

    case 6:
	if (processID == 0) {
	    array[0] = (int) "this";
	    array[1] = (int) "is-dumb";
	    assert(exec(shellProgramName, 2, (char**) array) != -1);
	    exit(0);
	}
	else {
	    assert(argc == 2 &&
		   strcmp(argv[0], "this")==0 &&
		   strcmp(argv[1], "is-dumb")==0);
	    agDone();
	}
	break;

    case 7:
	for (i=0; i<8; i++)
	    array[i] = (int) big;
	assert(exec(shellProgramName, 8, (char**) array) == -1);
	break;

    case 11:
	/* make lots of child processes */
	if (processID == 0) {
	    for (i=0; i<20; i++) {
		restart();
		waitChild();
	    }

	    agDone();
	}
	else {
	    signalParent();
	    exit(0);
	}
	break;
    }

    agFail();
}