Esempio n. 1
0
static int
Test_verifierIsValidSubstitution(void)
{
  struct verifier vrf;
  struct substitution sub;
  struct frame frm;
  struct frame ctx;
  verifierInit(&vrf);
  struct reader r;
  readerInitString(&r, "");
  verifierBeginReadingFile(&vrf, &r);
  size_tArrayAdd(&vrf.disjointScope, 0);
  size_t v1 = verifierAddSymbol(&vrf, "v1", symType_variable);
  size_t v2 = verifierAddSymbol(&vrf, "v2", symType_variable);
  size_t v3 = verifierAddSymbol(&vrf, "v3", symType_variable);
  frameInit(&frm);
  frameInit(&ctx);
/* build the substitution */
  struct symstring str1, str2, str3;
  symstringInit(&str1);
  symstringInit(&str2);
  symstringInit(&str3);
  symstringAdd(&str1, v1);
  symstringAdd(&str2, v1);
  symstringAdd(&str3, v3);
  substitutionInit(&sub);
  substitutionAdd(&sub, v1, &str1);
  substitutionAdd(&sub, v2, &str2);
  substitutionAdd(&sub, v3, &str3);
  ut_assert(verifierIsValidSubstitution(&vrf, &ctx, &frm, &sub),
   "invalid sub");
  frameAddDisjoint(&frm, v2, v3);
  ut_assert(!verifierIsValidSubstitution(&vrf, &ctx, &frm, &sub),
    "sub should be invalid");
  frameAddDisjoint(&ctx, v2, v3);
  ut_assert(!verifierIsValidSubstitution(&vrf, &ctx, &frm, &sub),
    "sub should be invalid");
  frameAddDisjoint(&frm, v1, v3);
  ut_assert(!verifierIsValidSubstitution(&vrf, &ctx, &frm, &sub),
    "sub should be invalid");
  frameAddDisjoint(&ctx, v1, v3);
  ut_assert(verifierIsValidSubstitution(&vrf, &ctx, &frm, &sub),
   "invalid sub");
  substitutionClean(&sub);
  frameClean(&ctx);
  frameClean(&frm);
  readerClean(&r);
  verifierClean(&vrf);
  return 0;
}
Esempio n. 2
0
/*
void mainInit(char* className, Interpretador* interpretador, int paramsNumber, char** cmdLineParams) {
    char* methodName = "main", methodDescriptor = "([Ljava/lang/String;)V";
    ClassFile* cFile = loadClass(interpretador, className);
    pushFrame(&(interpretador->topStackFrame));
    frameInit(interpretador->initClass, *cFile, interpretador->topStackFrame, methodName, methodDescriptor);

}
*/
void methodInit(char* className, char* methodName, char* methodDescriptor, Interpretador* interpretador, int paramsNumber, int print) {
    int i;
    ClassFile* cFile = loadClass(interpretador, className);
    printf("FEZ LOAD\n");
    if (print)
        printClass(cFile, className);

    pushFrame(&(interpretador->topStackFrame));
    printf("\n\nPUSHOUFRAME\n");
    frameInit(interpretador->initClass, *cFile, interpretador->topStackFrame, methodName, methodDescriptor);

    printf("\n\nINITIOUFRAME\n");
    if (interpretador->topStackFrame->nextFrame != NULL) {

    /*if (interpretador->topStackFrame->nextFrame != NULL) {*/

        for (i = countSlots(interpretador->topStackFrame->nextFrame->frame->topOperand, paramsNumber) - 1; i >= 0; i--) {
            if (interpretador->topStackFrame->nextFrame->frame->topOperand->operand.type32_64 == CAT2)
                i--;
            interpretador->topStackFrame->frame->localVarArray[i] = (int)&(interpretador->topStackFrame->nextFrame->frame->topOperand);
        }

    }
    printf("\n\nSAIU DA METHOD INIT\n");

    /*}*/

}
Esempio n. 3
0
void init()
{
  //static GLfloat pointParam[3] = {0.0, 1.0, 0.0};
  static GLfloat pointParam[3] = {0.0, 0.0, 0.001};
  
  glEnable(GL_FOG);
  {
    GLfloat fogColor[4] = {0.0, 0.2, 0.5,1.0};
    glFogi(GL_FOG_MODE, GL_EXP);
    glFogf(GL_FOG_DENSITY, 0.008);
    glHint(GL_FOG_HINT,GL_DONT_CARE);
    glFogf(GL_FOG_START,1.0);
    glFogf(GL_FOG_END,100.0);
    glFogfv(GL_FOG_COLOR,fogColor);
  }
  
  glEnable(GL_POINT_SMOOTH);
  glPointParameterfv(GL_POINT_DISTANCE_ATTENUATION,pointParam);
  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  glClearColor(0.0, 0.2, 0.5, 1.0);

  initNeutrons(optInitNeutrons,optMaxNeutrons,optInitEnergy,optNumTrails,optNumGroups,optCrossSections,optNumBins);
  frameInit(30.0);
  
}
Esempio n. 4
0
static int
Test_frameInit(void)
{
  struct frame frm;
  frameInit(&frm);
  ut_assert(frm.stmts.size == 0, "size == %lu, expected 0", frm.stmts.size);
  frameClean(&frm);
  return 0;
}
Esempio n. 5
0
static int
Test_verifierParseProof(void)
{
  enum {
    file_size = 2
  };
  const char* file[file_size] = {
    "$. ",
    "p $. "
  };
  const size_t thms_len[file_size] = {
    1, 2
  };
  const size_t thms_0[1] = {0};
  const size_t thms_1[2] = {0, 1};
  const size_t* thms_s[file_size] = {
    thms_0,
    thms_1
  };
  size_t i;
  struct verifier vrf;
  verifierInit(&vrf);
  struct reader r[file_size];
  struct symstring thms[file_size];
  for (i = 0; i < file_size; i++) {
    readerInitString(&r[i], file[i]);
    symstringInit(&thms[i]);
    size_tArrayAppend(&thms[i], thms_s[i], thms_len[i]);
  }
  struct frame ctx;
  frameInit(&ctx);
#define test_file(f, error) \
do { \
  verifierBeginReadingFile(&vrf, &r[f]); \
  verifierParseProof(&vrf, &ctx); \
  verifierCheckProof(&vrf, &thms[f]); \
  check_err(vrf.err, error); \
  readerClean(&r[f]); \
} while (0)
  test_file(0, error_incorrectProof);
  verifierAddConstant(&vrf, "type");
  verifierAddVariable(&vrf, "var");
  struct symstring stmt;
  symstringInit(&stmt);
  symstringAdd(&stmt, 0);
  symstringAdd(&stmt, 1);
  verifierAddFloating(&vrf, "p", &stmt);
  test_file(1, error_none);
  for (i = 0; i < file_size; i++) {
    symstringClean(&thms[i]);
  }
  frameClean(&ctx);
  verifierClean(&vrf);
  return 0;
#undef test_file
}
Esempio n. 6
0
static int
Test_verifierParseProofSymbol(void)
{
  enum {
    file_size = 4
  };
  const char* file[file_size] = {
    "$. ",
    "undefined ",
    "defined_float ",
    "defined_assert ",
  };
  size_t i;
  int isEndOfProof;
  struct verifier vrf;
  verifierInit(&vrf);
  struct reader r[file_size];
  for (i = 0; i < file_size; i++) {
    readerInitString(&r[i], file[i]);
  }
  struct frame ctx;
  frameInit(&ctx);
#define test_file(f, error) \
do { \
  verifierBeginReadingFile(&vrf, &r[f]); \
  verifierParseProofSymbol(&vrf, &ctx, &isEndOfProof); \
  check_err(vrf.err, error); \
  readerClean(&r[f]); \
} while (0)
  test_file(0, error_none);
  test_file(1, error_undefinedSymbol);
  size_t c = verifierAddConstant(&vrf, "c");
  size_t v = verifierAddVariable(&vrf, "v");
  struct symstring stmt1;
  symstringInit(&stmt1);
  symstringAdd(&stmt1, c);
  symstringAdd(&stmt1, v);
  verifierAddFloating(&vrf, "defined_float", &stmt1);
  test_file(2, error_none);
  struct symstring stmt2;
  symstringInit(&stmt2);
  verifierAddAssertion(&vrf, "defined_assert", &stmt2);
  test_file(3, error_none);
  ut_assert(vrf.stack.size == 2, "stack size == %lu, should be 2",
    vrf.stack.size);
  frameClean(&ctx);
  verifierClean(&vrf);
  return 0;
#undef test_file
}
Esempio n. 7
0
static int
Test_verifierParseProvable(void)
{
  enum {
    file_size = 2
  };
  const char* file[file_size] = {
    "type var $= $. ",
    "type var $= flt $. "
  };
  const enum error errs[file_size] = {
    error_incorrectProof,
    error_none
  };
  size_t i;
  struct verifier vrf;
  verifierInit(&vrf);
  struct reader r[file_size];
  for (i = 0; i < file_size; i++) {
    readerInitString(&r[i], file[i]);
    check_err(vrf.err, error_none);
  }
  verifierBeginReadingFile(&vrf, &r[0]);
  size_t type, var, flt;
  type = verifierAddConstant(&vrf, "type");
  var = verifierAddVariable(&vrf, "var");
  struct symstring floating;
  symstringInit(&floating);
  symstringAdd(&floating, type);
  symstringAdd(&floating, var);
  flt = verifierAddFloating(&vrf, "flt", &floating);
  check_err(vrf.err, error_none);
  for (i = 0; i < file_size; i++) {
    LOG_DEBUG("testing file %lu", i);
    struct symstring stmt;
    symstringInit(&stmt);
    verifierBeginReadingFile(&vrf, &r[i]);
    struct frame frm;
    frameInit(&frm);
    verifierParseProvable(&vrf, &stmt, &frm);
    check_err(vrf.err, errs[i]);
    frameClean(&frm);
    symstringClean(&stmt);
    readerClean(&r[i]);
  }
  verifierClean(&vrf);
  return 0;
}
Esempio n. 8
0
void init()
{
  //static GLfloat pointParam[3] = {0.0, 1.0, 0.0};
  static GLfloat pointParam[3] = {0.0, 0.0, 0.001};
  
  glEnable(GL_FOG);
  {
    GLfloat fogColor[4] = {0.0, 0.2, 0.5,1.0};
    glFogi(GL_FOG_MODE, GL_EXP);
    glFogf(GL_FOG_DENSITY, 0.008);
    glHint(GL_FOG_HINT,GL_DONT_CARE);
    glFogf(GL_FOG_START,1.0);
    glFogf(GL_FOG_END,100.0);
    glFogfv(GL_FOG_COLOR,fogColor);
  }
  
  glEnable(GL_POINT_SMOOTH);
  glPointParameterfv(GL_POINT_DISTANCE_ATTENUATION,pointParam);
  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  glClearColor(0.0, 0.2, 0.5, 1.0);

  texCyl=LoadTextureRAW("rc/plate.raw",256,512,1);
  texBot=LoadTextureRAW("rc/plate2.raw",256,256,1);
  texTop=LoadTextureRAW("rc/grate.raw",256,512,1);
  

  initNeutrons(optInitNeutrons,optMaxNeutrons,optInitEnergy,optNumTrails,optNumGroups,optCrossSections,optNumBins);
  frameInit(30.0);
  
  wmInit(100,100);
  wmAddWindow("Status",drawStatus,200,100,WM_WINDOW_LEFT,
              WM_WINDOW_EXPANDED,WM_WINDOW_UNMOVEABLE,WM_WINDOW_UNCOLLAPSABLE);
  wmAddWindow("Spectrum",drawSpectrum,400,200,WM_WINDOW_LEFT,
              WM_WINDOW_COLLAPSED,WM_WINDOW_UNMOVEABLE,WM_WINDOW_COLLAPSABLE);
  wmAddWindow("Cross Sections",drawCrossSections,400,200,WM_WINDOW_LEFT,
              WM_WINDOW_COLLAPSED,WM_WINDOW_MOVEABLE,WM_WINDOW_COLLAPSABLE);
  /*wmAddWindow("Menu",drawMenu,800,50,WM_WINDOW_BOTTOM,
              WM_WINDOW_EXPANDED,WM_WINDOW_UNMOVEABLE,WM_WINDOW_UNCOLLAPSABLE);
	      */

}
Esempio n. 9
0
static int
Test_verifierApplyAssertion(void)
{
  const size_t t = 1;
  const size_t x = 2;
  const size_t y = 3;
  const size_t a = 4;
  const size_t b = 5;
  // const size_t tx = 6;
  // const size_t ty = 7;
  // const size_t txy = 8;
  const size_t tyx = 9;
  const size_t tx_f[2] = {t, x};
  const size_t ty_f[2] = {t, y};
  const size_t txy_e[3] = {t, x, y};
  const size_t tyx_a[3] = {t, y, x};
  // const size_t frame_a[3] = {tx, ty, txy};
  const size_t stack1[2] = {t, a};
  const size_t stack2[2] = {t, b};
  const size_t stack3[3] = {t, a, b};
  const size_t res[3] = {t, b, a};
  struct verifier vrf;
  verifierInit(&vrf);
  struct reader r;
  readerInitString(&r, "");
  verifierBeginReadingFile(&vrf, &r);
  struct symstring stmt;
  LOG_DEBUG("add constant");
  verifierAddConstant(&vrf, "t");
  LOG_DEBUG("add variables");
  verifierAddVariable(&vrf, "x");
  verifierAddVariable(&vrf, "y");
  verifierAddVariable(&vrf, "a");
  verifierAddVariable(&vrf, "b");
  LOG_DEBUG("add floatings");
  symstringInit(&stmt);
  size_tArrayAppend(&stmt, tx_f, 2);
  verifierAddFloating(&vrf, "tx", &stmt);
  symstringInit(&stmt);
  size_tArrayAppend(&stmt, ty_f, 2);
  verifierAddFloating(&vrf, "ty", &stmt);
  LOG_DEBUG("add essential");
  symstringInit(&stmt);
  size_tArrayAppend(&stmt, txy_e, 3);
  verifierAddEssential(&vrf, "txy", &stmt);
  LOG_DEBUG("add assertion");
  symstringInit(&stmt);
  size_tArrayAppend(&stmt, tyx_a, 3);
  verifierAddAssertion(&vrf, "tyx", &stmt);
  LOG_DEBUG("prepare stack");
  symstringInit(&stmt);
  size_tArrayAppend(&stmt, stack1, 2);
  symstringArrayAdd(&vrf.stack, stmt);
  symstringInit(&stmt);
  size_tArrayAppend(&stmt, stack2, 2);
  symstringArrayAdd(&vrf.stack, stmt);
  symstringInit(&stmt);
  size_tArrayAppend(&stmt, stack3, 3);
  symstringArrayAdd(&vrf.stack, stmt);
  LOG_DEBUG("prepare context frame");
  struct frame ctx;
  frameInit(&ctx);
  LOG_DEBUG("apply assertion");
  verifierApplyAssertion(&vrf, &ctx, tyx);
  ut_assert(!vrf.err, "assertion application failed");
  symstringInit(&stmt);
  size_tArrayAppend(&stmt, res, 3);
  ut_assert(symstringIsEqual(&vrf.stack.vals[0], &stmt), "result of assertion "
    "application is wrong");
  LOG_DEBUG("clean up");
  frameClean(&ctx);
  symstringClean(&stmt);
  readerClean(&r);
/* frm is cleaned here */
  verifierClean(&vrf);
  return 0;
}
Esempio n. 10
0
static int
Test_verifierIsValidDisjointPairSubstitution(void)
{
  struct verifier vrf;
  struct frame frm;
  struct substitution sub;
  verifierInit(&vrf);
  struct reader r;
  readerInitString(&r, "");
  verifierBeginReadingFile(&vrf, &r);
  size_tArrayAdd(&vrf.disjointScope, 0);
  LOG_DEBUG("adding symbols");
  size_t v1 = verifierAddSymbol(&vrf, "v1", symType_variable);
  size_t v2 = verifierAddSymbol(&vrf, "v2", symType_variable);
  size_t v3 = verifierAddSymbol(&vrf, "v3", symType_variable);
  LOG_DEBUG("adding disjoints");
  frameInit(&frm);
  frameAddDisjoint(&frm, v1, v2);
  LOG_DEBUG("building the substitution manually");
  struct symstring str1, str2;
  symstringInit(&str1);
  symstringInit(&str2);
  symstringAdd(&str1, v3);
  symstringAdd(&str2, v3);
  substitutionInit(&sub);
  substitutionAdd(&sub, v1, &str1);
  substitutionAdd(&sub, v2, &str2);
  struct frame ctx;
  frameInit(&ctx);
  frameAddDisjoint(&ctx, v1, v2);
  ut_assert(!verifierIsValidDisjointPairSubstitution(&vrf, &ctx, &frm, &sub,
   0, 1), "sub should be invalid");
  frameClean(&ctx);
/* str1 and str2 cleaned here */
  substitutionClean(&sub);
  frameClean(&frm);
  frameInit(&frm);
  frameAddDisjoint(&frm, v1, v2);
  symstringInit(&str1);
  symstringInit(&str2);
  symstringAdd(&str1, v1);
  symstringAdd(&str1, v2);
  symstringAdd(&str2, v3);
  substitutionInit(&sub);
  substitutionAdd(&sub, v1, &str1);
  substitutionAdd(&sub, v2, &str2);
  frameInit(&ctx);
  frameAddDisjoint(&ctx, v1, v2);
  ut_assert(!verifierIsValidDisjointPairSubstitution(&vrf, &ctx, &frm, &sub,
    0, 1), "sub should be invalid");
  frameAddDisjoint(&frm, v1, v3);
  frameAddDisjoint(&ctx, v1, v3);
  ut_assert(!verifierIsValidDisjointPairSubstitution(&vrf, &ctx, &frm, &sub,
   0, 1), "sub should be invalid");
  frameAddDisjoint(&frm, v2, v3);
  ut_assert(!verifierIsValidDisjointPairSubstitution(&vrf, &ctx, &frm, &sub,
   0, 1), "sub should be invalid");
  frameAddDisjoint(&ctx, v2, v3);
  ut_assert(verifierIsValidDisjointPairSubstitution(&vrf, &ctx, &frm, &sub, 
    0, 1), "sub should be valid");
  substitutionClean(&sub);
  frameClean(&ctx);
  frameClean(&frm);
  readerClean(&r);
  verifierClean(&vrf);
  return 0;
}
Esempio n. 11
0
static int 
Test_verifierMakeFrame(void)
{
  size_t i;
  enum {
    cst_size = 5,
    var_size = 4,
    flt_size = 4,
    ess_size = 1
  };
  const char* cstSyms[cst_size] = {"|-", "wff", "0", "1", "+"};
  size_t cstIds[cst_size];
  const char* varSyms[var_size] = {"x", "y", "z", "w"};
  size_t varIds[var_size];
  const char* fltSyms[flt_size] = {"wff_x", "wff_y", "wff_z", "wff_w"};
  size_t fltIds[flt_size];
  size_t fltSS[flt_size][2];
  const char* essSyms[ess_size] = {"plus"};
  // size_t essIds[ess_size];
  struct verifier vrf;
  verifierInit(&vrf);
/* make a mock file because verifierAdd... requires vrf->rId to be valid */
  LOG_DEBUG("making mock file because verifierAdd...() requires valid "
    "vrf->rId");
  struct reader file;
  readerInitString(&file, "");
  verifierBeginReadingFile(&vrf, &file);
  size_tArrayAdd(&vrf.disjointScope, 0);
  LOG_DEBUG("adding constants");
  for (i = 0; i < cst_size; i++) {
    cstIds[i] = verifierAddConstant(&vrf, cstSyms[i]);
  }
  LOG_DEBUG("adding variables");
  for (i = 0; i < var_size; i++) {
    varIds[i] = verifierAddVariable(&vrf, varSyms[i]);
  }
  ut_assert(vrf.symCount[symType_variable] == var_size,
    "added %lu variables, expected %d", vrf.symCount[symType_variable],
    var_size);
  LOG_DEBUG("preparing floats");
  struct symstring wff[flt_size];
  for (i = 0; i < flt_size; i++) {
    fltSS[i][0] = cstIds[1];
    fltSS[i][1] = varIds[i];
    symstringInit(&wff[i]);
    size_tArrayAppend(&wff[i], fltSS[i], 2);
  }
  LOG_DEBUG("preparing essentials");
  struct symstring plus;
  size_t ssplus[4] = {cstIds[0], varIds[0], cstIds[4], varIds[1]};
  symstringInit(&plus);
  size_tArrayAppend(&plus, ssplus, 4);
  LOG_DEBUG("adding floats and essentials");
  fltIds[0] = verifierAddFloating(&vrf, fltSyms[0], &wff[0]);
  check_err(vrf.err, error_none);
  fltIds[1] = verifierAddFloating(&vrf, fltSyms[1], &wff[1]);
  check_err(vrf.err, error_none);
  verifierAddEssential(&vrf, essSyms[0], &plus);
  check_err(vrf.err, error_none);
  fltIds[2] = verifierAddFloating(&vrf, fltSyms[2], &wff[2]);
  check_err(vrf.err, error_none);
  fltIds[3] = verifierAddFloating(&vrf, fltSyms[3], &wff[3]);
  check_err(vrf.err, error_none);
  ut_assert(vrf.symCount[symType_floating] == 4, "added %lu floating, "
    "expected 4", vrf.symCount[symType_floating]);
  ut_assert(vrf.symCount[symType_essential] == 1, "added %lu essential, "
    "expected 1", vrf.symCount[symType_essential]);
  ut_assert(vrf.hypotheses.size == 5, "added %lu "
    "hypotheses, expected 5", vrf.hypotheses.size);
  LOG_DEBUG("preparing disjoint");
  struct symstring disjoint;
  symstringInit(&disjoint);
  symstringAdd(&disjoint, varIds[0]);
  symstringAdd(&disjoint, varIds[1]);
  LOG_DEBUG("adding disjoint");
  verifierAddDisjoint(&vrf, &disjoint);
  ut_assert(vrf.disjoint1.size == 1, "added %lu disjoints, "
    "expected 1", vrf.disjoint1.size);
  LOG_DEBUG("preparing assertion");
  struct symstring asr;
  symstringInit(&asr);
  size_t ssasr[6] =
  {cstIds[0], varIds[0], cstIds[4], varIds[1], cstIds[4], varIds[2]};
  size_tArrayAppend(&asr, ssasr, 6);
  LOG_DEBUG("making the frame");
  struct frame frm;
  frameInit(&frm);
  LOG_DEBUG("calling verifierMakeFrame()");
  verifierMakeFrame(&vrf, &frm, &asr);
  check_err(vrf.err, error_none);
  ut_assert(frm.disjoint1.size == 1, "%lu disjoints in frame, expected 1",
    frm.disjoint1.size);
  LOG_DEBUG("make sure frame is the right size");
  ut_assert(frm.stmts.size == 4, "frame has size %lu, expected 4",
    frm.stmts.size);
  LOG_DEBUG("make sure wff_w has not been added to the frame");
  for (i = 0; i < frm.stmts.size; i++) {
    ut_assert(frm.stmts.vals[i] != fltIds[3],
      "wff_w should not be in the frame");
  }
  LOG_DEBUG("cleaning up");
  frameClean(&frm);
  symstringClean(&asr);
  readerClean(&file);
  verifierClean(&vrf);
  return 0;
}