void TestToken::TestPrecNextGraph() { SpeechSet* speechSet = new SpeechSet(); Speech* speech = new Speech(speechSet); Segment* segment = Segment::CreateWithDuration(0, 10000, speech); /* initialize tokens with a graph like * B * / \ * --A D-- * \ / * C */ Token* tokenA = Token::CreateWithDuration(0, 0, segment); tokenA->SetSourceText("A"); Token* tokenB = Token::CreateWithDuration(0, 0, segment); tokenB->SetSourceText("B"); Token* tokenC = Token::CreateWithDuration(0, 0, segment); tokenC->SetSourceText("C"); Token* tokenD = Token::CreateWithDuration(0, 0, segment); tokenD->SetSourceText("D"); tokenA->AddNextToken(tokenB); tokenA->AddNextToken(tokenC); tokenB->AddPrecToken(tokenA); tokenB->AddNextToken(tokenD); tokenC->AddPrecToken(tokenA); tokenC->AddNextToken(tokenD); tokenD->AddPrecToken(tokenB); tokenD->AddPrecToken(tokenC); // a few basics assert assert(tokenA->GetNextToken(0)->GetNextToken(0) == tokenA->GetNextToken(1)->GetNextToken(0)); assert(tokenD->GetPrecToken(0)->GetPrecToken(0) == tokenA->GetPrecToken(1)->GetPrecToken(0)); //TODO need to be more complex delete tokenA; delete tokenB; delete tokenC; delete tokenD; delete segment; delete speech; }
Token* Token::CreateWithEndTime(const int& _startTime, const int& _endTime, Segment* parent, const string& _text, Token* first_prec_tokens, ...) { Token* token = Token::CreateWithEndTime(_startTime, _endTime, parent, _text); Token* tok = first_prec_tokens; va_list marker; va_start( marker, first_prec_tokens); /* Initialize variable arguments. */ while (tok != NULL) { tok->AddNextToken(token); token->AddPrecToken(tok); tok = va_arg(marker, Token*); } va_end(marker); return token; }