Esempio n. 1
0
// ************************************************************
void
testExpressions (void)
{
    Expr *op, *l, *r;
    Value *res;
    testName = "test complex expressions";
    
    MAKE_CONS(l, stringToValue("i10"));
    evalExpr(NULL, NULL, l, &res);
    OP_TRUE(stringToValue("i10"), res, valueEquals, "Const 10");
    
    MAKE_CONS(r, stringToValue("i20"));
    evalExpr(NULL, NULL, r, &res);
    OP_TRUE(stringToValue("i20"), res, valueEquals, "Const 20");
    
    MAKE_BINOP_EXPR(op, l, r, OP_COMP_SMALLER);
    evalExpr(NULL, NULL, op, &res);
    OP_TRUE(stringToValue("bt"), res, valueEquals, "Const 10 < Const 20");
    
    MAKE_CONS(l, stringToValue("bt"));
    evalExpr(NULL, NULL, l, &res);
    OP_TRUE(stringToValue("bt"), res, valueEquals, "Const true");
    
    r = op;
    MAKE_BINOP_EXPR(op, r, l, OP_BOOL_AND);
    evalExpr(NULL, NULL, op, &res);
    OP_TRUE(stringToValue("bt"), res, valueEquals, "(Const 10 < Const 20) AND true");
    
    TEST_DONE();
}
Esempio n. 2
0
// ************************************************************
void
testOperators (void)
{
    Value *result;
    testName = "test value comparison and boolean operators";
    MAKE_VALUE(result, DT_INT, 0);
    
    // equality
    OP_TRUE(stringToValue("i10"),stringToValue("i10"), valueEquals, "10 = 10");
    OP_FALSE(stringToValue("i9"),stringToValue("i10"), valueEquals, "9 != 10");
    OP_TRUE(stringToValue("sHello World"),stringToValue("sHello World"), valueEquals, "Hello World = Hello World");
    OP_FALSE(stringToValue("sHello Worl"),stringToValue("sHello World"), valueEquals, "Hello Worl != Hello World");
    OP_FALSE(stringToValue("sHello Worl"),stringToValue("sHello Wor"), valueEquals, "Hello Worl != Hello Wor");
    
    // smaller
    OP_TRUE(stringToValue("i3"),stringToValue("i10"), valueSmaller, "3 < 10");
    OP_TRUE(stringToValue("f5.0"),stringToValue("f6.5"), valueSmaller, "5.0 < 6.5");
    
    // boolean
    OP_TRUE(stringToValue("bt"),stringToValue("bt"), boolAnd, "t AND t = t");
    OP_FALSE(stringToValue("bt"),stringToValue("bf"), boolAnd, "t AND f = f");
    
    OP_TRUE(stringToValue("bt"),stringToValue("bf"), boolOr, "t OR f = t");
    OP_FALSE(stringToValue("bf"),stringToValue("bf"), boolOr, "f OR f = f");
    
    TEST_CHECK(boolNot(stringToValue("bf"), result));
    ASSERT_TRUE(result->v.boolV, "!f = t");
    
    TEST_DONE();
}
void
testRecords (void)
{
  TestRecord expected[] = { 
    {1, "aaaa", 3}, 
  };
  Schema *schema;
  Record *r;
  Value *value;
  testName = "test creating records and manipulating attributes";

  // check attributes of created record
  schema = testSchema();
  r = fromTestRecord(schema, expected[0]);

    getAttr(r, schema, 0, &value);
  printf("\n Value is %d",value->v.intV);
   OP_TRUE(stringToValue("i1"), value, valueEquals, "first attr");
  freeVal(value);

  getAttr(r, schema, 1, &value);
  OP_TRUE(stringToValue("saaaa"), value, valueEquals, "second attr");
  freeVal(value);

  getAttr(r, schema, 2, &value);
  OP_TRUE(stringToValue("i3"), value, valueEquals, "third attr");
  freeVal(value);

  //modify attrs
  setAttr(r, schema, 2, stringToValue("i4"));
  getAttr(r, schema, 2, &value);
  OP_TRUE(stringToValue("i4"), value, valueEquals, "third attr after setting");
  freeVal(value);

  freeRecord(r);
  TEST_DONE();
}