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; }
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)); }
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; }
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; }
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; }
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; }
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; }
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; }
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 ); } }
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; }