Пример #1
0
int main(int argc, char *argv[]){
  char buf[BUF_SIZE];
  coord place, holder;
  init(argc, argv);
  holder.x = holder.y = place.x = place.y = SIZE/2;

  app_1(place); show_all(holder);
  run(place);        show_all(holder);
  do{
    place = queue[qbeg].place;
    run_queue(); show_all(holder);
    run(place);  show_all(holder);
  } while(queue_population() > 0);

  SHOULD(count(INTEGER) == 1);
  SHOULD(count(LOCAL)   == 0);
  SHOULD(count(LAMBDA)  == 0);
  SHOULD(count(SYMBOL)  == 0);

  place.x = place.y = SIZE/2;
  onc_to_string(place, buf, 0);
  debug(1, "(%d,%d):%s\n", place.x, place.y, buf);
  debug(1, "integer:%d local:%d lambda:%d symbol:%d\n",
        count(INTEGER), count(LOCAL), count(LAMBDA), count(SYMBOL));
  
  /* return indicates success or failure */
  return fail_p;
}
Пример #2
0
TEST(not equal) {
  assert_not_equal(2,   17 - 16,   SHOULD(match integers));
  assert_not_equal(2U,  17U - 16U, SHOULD(match unsigned integers));
  assert_not_equal(1.0, 2.0,       SHOULD(match floats));

  std::string x = "One";
  std::string y = "Two";
  assert_not_equal(x, y,           SHOULD(match strings));
}
Пример #3
0
int main(int argc, char *argv[]){
  coord coord;
  ptr ptr;
  init(argc, argv);
  debug(2, "starting coord test\n");

  coord.X = 1;
  coord.Y = 2;
  coord.x = 3;
  coord.y = 4;
  
  PTR_OF_COORD(ptr, coord);

  SHOULD(ptr.car == 513);
  debug(1, "ptr.car %d == 513\n", ptr.car);
  SHOULD(ptr.cdr == 1027);
  debug(1, "ptr.cdr %d == 1027\n", ptr.cdr);
  
  coord.X = coord.Y = coord.x = coord.y = 0;

  COORD_OF_PTR(coord, ptr);
  
  SHOULD(coord.X == 1);
  debug(1, "coord.X %d == 1\n", coord.X);
  SHOULD(coord.Y == 2);
  debug(1, "coord.Y %d == 2\n", coord.Y);
  SHOULD(coord.x == 3);
  debug(1, "coord.x %d == 3\n", coord.x);
  SHOULD(coord.y == 4);
  debug(1, "coord.y %d == 4\n", coord.y);

  /* return indicates success or failure */
  return fail_p;
}
Пример #4
0
int main(int argc, char *argv[]){
  char expr[] =
    "((#L0 (#L1 (#S0 (#L2 ((#S1 #S1) #S2))))"
    "      (#L1 (#S0 (#L2 ((#S1 #S1) #S2)))))"
    " (#L4 (#L3 ((= #S3 0) 1 0))))"
    "3";

  init(argc, argv);
  expr_to_expr(expr);
  SHOULD(strcmp(expr, "0") == 0);

  /* return indicates success or failure */
  return fail_p;
}
Пример #5
0
int main(int argc, char *argv[]){
  char buf[BUF_SIZE];
  coord place;
  init(argc, argv);
  place.x = place.y = SIZE/2;

  simple_app(place);
  debug(1, "\n");
  fflush(stdout);
  show_world();
  onc_to_string(place, buf, 0);

  debug(1, "buf=%s\n", buf);

  SHOULD(strcmp(buf, "(#L1 (#S1 #S1)) (1 2 3)") == 0);

  /* return indicates success or failure */
  return fail_p;
}
Пример #6
0
int main(int argc, char *argv[]){
  coord place, target, temp;
  init(argc, argv);
  place.x = place.y = 0;
  target.x = target.y = SIZE/2;

  AT(place).refs = 1;
  AT(place).car.hdr = LOCAL;
  PTR_OF_COORD(AT(place).car, target);
  AT(place).cdr.hdr = NIL;
  AT(target).refs = 1;
  AT(target).car.hdr = INTEGER;
  AT(target).car.car = 2;
  AT(target).cdr.hdr = INTEGER;
  AT(target).cdr.car = 2;

  COORD_OF_PTR(temp, AT(place).car);
  debug(1, "AT(place).car -> (%d,%d,%d,%d,%d)\n",
        AT(place).car.hdr, temp.x, temp.y, temp.X, temp.Y);
  show_all(place);

  update_ref_msg(place, 1);
  run_down(place);
  
  debug(1, "AT(place).refs %d == 2\n", AT(place).refs);
  SHOULD(AT(place).refs == 2);
  debug(1, "AT(target).refs %d == 2\n", AT(target).refs);
  SHOULD(AT(target).refs == 2);

  update_ref_msg(place, -1);
  run_down(place);

  show_all(place);
  debug(1, "AT(place).refs %d == 1\n", AT(place).refs);
  SHOULD(AT(place).refs == 1);
  debug(1, "AT(target).refs %d == 1\n", AT(target).refs);
  SHOULD(AT(target).refs == 1);

  update_ref_msg(place, -1);
  run_down(place);

  show_all(place);
  debug(1, "AT(place).refs %d == 0\n", AT(place).refs);
  SHOULD(AT(place).refs == 0);
  debug(1, "AT(target).refs %d == 0\n", AT(target).refs);
  SHOULD(AT(target).refs == 0);
  
  /* return indicates success or failure */
  return fail_p;
}
Пример #7
0
int main(int argc, char *argv[]){
  char expr[] =
    "((#L0 #S0)"
    " (((#L3"
    "    ((< 1 #S3)"
    "     89"
    "     ((#l2 (((#l1 ((#l4 (#l3 ((< 1 #S3) 89 (#S4 (- 1 #S3)))))"
    "                   (#l2 ((#S1 #S1) #S2))))"
    "             (#l1 ((#l4 (#l3 ((< 1 #S3) 89 (#S4 (- 1 #S3)))))"
    "                   (#l2 ((#S1 #S1) #S2))))) #S2))"
    "      (- 1 #S3)))))"
    "  0))";

  init(argc, argv);
  expr_to_expr(expr);

  debug(1, "expr:%s\n", expr);
  SHOULD(strcmp(expr, "89") == 0);

  /* return indicates success or failure */
  return fail_p;
}
Пример #8
0
int main(int argc, char *argv[]){
  init(argc, argv);

  char expr[] =
    "(#L1 ((= #S1 0)"
    "       1"
    "       (* #S1"
    "          ((#L2 ((= #S2 0)"
    "                1"
    "                (* #S2 ((#L3 ((= #S3 0)"
    "                          1"
    "                          (* #S3 ((#L4 ((= #S4 0)"
    "                                   1"
    "                                   (* #S4 #S99)))"
    "                             (- 1 #S3)))))"
    "                    (- 1 #S2)))))"
    "           (- 1 #S1)))))"
    "3";
  expr_to_expr(expr);
  SHOULD(strcmp(expr, "6") == 0);

  /* return indicates success or failure */
  return fail_p;
}
Пример #9
0
bool CAdjustStock::ParseAdjustLogic(const char* logicExp, HASH_MAP< string, double >&signalMap)
{  
	pANTLR3_INPUT_STREAM input;
	pExprLexer lexer;
	pANTLR3_COMMON_TOKEN_STREAM tstream ;
	pExprParser parser;
	pANTLR3_BASE_TREE root ;
	if( strlen(logicExp) == 0 )
		return false ;
	try
	{
		input = antlr3StringStreamNew( (pANTLR3_UINT8) logicExp, ANTLR3_ENC_UTF8, strlen(logicExp), (pANTLR3_UINT8)"Expr" );
		SHOULD( input, "fail to create stream from string: " << logicExp );

		lexer = ExprLexerNew( input );
		SHOULD( input, "fail to create lexer" );

		tstream = antlr3CommonTokenStreamSourceNew( ANTLR3_SIZE_HINT, TOKENSOURCE(lexer) );
		SHOULD( tstream, "fail to create token stream" );

		parser = ExprParserNew( tstream );
		SHOULD( parser, "fail to create parser" );

		ExprParser_expr_return statments = (ExprParser_expr_return)( parser->expr(parser) );
		int errs = parser->pParser->rec->state->errorCount;
		if( errs>0 ){
			LOG_FILE(LOG_LEVEL::LOG_INFO,"[AdjustStock] The parser returned %d errors, tree walking aborted.\n", errs);
			return false ;
		}

		root = statments.tree;
		SHOULD( root, "fail to get tree" );

		pANTLR3_TOKEN_STREAM stream = tstream->tstream;

		m_adjustTree.tree_ = root;
		m_adjustTree.stream_ = stream;
		//根据语法树的节点得到叶子节点类型为VAR的变量,返给调仓查询
		//修改叶子节点是变量的值,key用Value替换
		getVARList( m_adjustTree, m_varVec );
		HASH_MAP< string, double >::iterator mit;
		//test: srcSingleMap[000407_alpha_7_indus_sort, 1.23]
		for ( size_t i =0; i<m_varVec.size(); i++ )
		{
			mit = signalMap.find(m_varVec[i]);
			if ( mit != signalMap.end() )  {
				m_parseMap[m_varVec[i]] = mit->second;
			} else {			
				ISM_LOG_ERR("[AdjustStock]","the signal value not founded in singal map!");
				return false;
			}
		}
		//calculate the result from the replaced tree
		int result = calcExpr(m_adjustTree);

		if( parser )  { parser->free( parser );}
		if( tstream ) { tstream->free( tstream );}
		if( lexer )   { lexer->free( lexer );}
		if( input )   { input->close( input );}	

		return result==1 ;
	}
	catch( Exp& e )
	{
		RETHROW( e, "fail to parse. line: " << logicExp  );
	}
}
Пример #10
0
int main(int argc, char *argv[]){
  coord place;  
  char expr0[] = "= 2 2";
  char expr1[] = "= 2 3";
  char expr2[] = "< 2 3";
  char expr3[] = "< 3 3";
  char expr4[] = "= 0 1 1 2";
  char expr5[] = "= 1 1 1 2";
  char expr6[] = "((= 1 1) 1 2)";

  init(argc, argv);
  place.x = place.y = SIZE/2;

  run_expr(expr0, place);
  run_down(place);
  SHOULD(count(LAMBDA) == 2);
  SHOULD(count(SYMBOL) == 1);

  if(fail_p) ERROR("failed expr0");

  run_expr(expr1, place);
  run_down(place);
  SHOULD(count(LAMBDA) == 2);
  SHOULD(count(SYMBOL) == 1);

  if(fail_p) ERROR("failed expr1");

  run_expr(expr2, place);
  run_down(place);
  SHOULD(count(LAMBDA) == 2);
  SHOULD(count(SYMBOL) == 1);

  if(fail_p) ERROR("failed expr2");

  run_expr(expr3, place);
  run_down(place);
  SHOULD(count(LAMBDA) == 2);
  SHOULD(count(SYMBOL) == 1);

  if(fail_p) ERROR("failed expr3");

  expr_to_expr(expr4);
  debug(2, "lambda:%d symbol:%d integer:%d\n",
        count(LAMBDA), count(SYMBOL), count(INTEGER));
  SHOULD(count(LAMBDA) == 0);
  SHOULD(count(SYMBOL) == 0);
  SHOULD(count(INTEGER) == 1);

  if(fail_p) ERROR("failed expr4");

  expr_to_expr(expr5);
  debug(2, "lambda:%d symbol:%d integer:%d\n",
        count(LAMBDA), count(SYMBOL), count(INTEGER));
  SHOULD(count(LAMBDA) == 0);
  SHOULD(count(SYMBOL) == 0);
  SHOULD(count(INTEGER) == 1);

  if(fail_p) ERROR("failed expr5");

  expr_to_expr(expr6);
  debug(2, "lambda:%d symbol:%d integer:%d\n",
        count(LAMBDA), count(SYMBOL), count(INTEGER));
  SHOULD(count(LAMBDA) == 0);
  SHOULD(count(SYMBOL) == 0);
  SHOULD(count(INTEGER) == 1);

  if(fail_p) ERROR("failed expr6");

  /* return indicates success or failure */
  return fail_p;
}