예제 #1
0
/**
 * Test the is First Token methods behavior.
 * Test the is Last Token methods behavior.
 */
void TestSegment::testIsFirstOrLastTokenMethod()
{
  Segment* seg = Segment::CreateWithEndTime(0, 20000, NULL);
  Token* tok1 = Token::CreateWithEndTime(0, 4000, seg);
  Token* tok2 = Token::CreateWithEndTime(1000, 4500, seg);
  Token* tok3 = Token::CreateWithEndTime(3000, 5000, seg);
  
  Token* tok4 = Token::CreateWithEndTime(5000, 10000, seg);
  
  Token* tok5 = Token::CreateWithEndTime(10000, 19000, seg);
  Token* tok6 = Token::CreateWithEndTime(11000, 20000, seg);
  Token* tok7 = Token::CreateWithEndTime(10000, 18000, seg);
  
  seg->AddFirstToken(tok1);
  seg->AddFirstToken(tok2);
  seg->AddFirstToken(tok3);
  seg->AddLastToken(tok5);
  seg->AddLastToken(tok6);
  seg->AddLastToken(tok7);
  
  tok1->AddNextToken(tok4);
  tok2->AddNextToken(tok4);
  tok3->AddNextToken(tok4);
  tok4->AddPrecToken(tok1);
  tok4->AddPrecToken(tok2);
  tok4->AddPrecToken(tok3);
  
  tok5->AddPrecToken(tok4);
  tok6->AddPrecToken(tok4);
  tok7->AddPrecToken(tok4);
  tok4->AddNextToken(tok5);
  tok4->AddNextToken(tok6);
  tok4->AddNextToken(tok7);
  
  assert(seg->isFirstToken(tok1));
  assert(seg->isFirstToken(tok2));
  assert(seg->isFirstToken(tok3));
  
  assert(seg->isLastToken(tok5));
  assert(seg->isLastToken(tok6));
  assert(seg->isLastToken(tok7));
}
예제 #2
0
/**
 * Test the output a plan version of the segment method.
 * TODO: Need to be more tough.
 */
void TestSegment::testToTopologicalOrderedStruct()
{
  Segment* seg = Segment::CreateWithEndTime(0, 20000, NULL);
  
  /* The following graph struct is tested.
   * ->1-3-4-5->
   *      / \
   *   ->2  6->
   */
  Token* tok1 = Token::CreateWithEndTime(0, 0, seg);
  Token* tok2 = Token::CreateWithEndTime(0, 0, seg);
  Token* tok3 = Token::CreateWithEndTime(0, 0, seg);
  Token* tok4 = Token::CreateWithEndTime(0, 0, seg);
  Token* tok5 = Token::CreateWithEndTime(0, 0, seg);
  Token* tok6 = Token::CreateWithEndTime(0, 0, seg);
  seg->AddFirstToken(tok1);
  seg->AddFirstToken(tok2);
  tok1->AddNextToken(tok3);
  tok2->AddNextToken(tok4);
  tok3->AddPrecToken(tok1);
  tok3->AddNextToken(tok4);
  tok4->AddPrecToken(tok2);
  tok4->AddPrecToken(tok3);
  tok4->AddNextToken(tok5);
  tok4->AddNextToken(tok6);
  tok5->AddPrecToken(tok4);
  tok6->AddPrecToken(tok4);
  seg->AddLastToken(tok5);
  seg->AddLastToken(tok6);
  
  vector<Token*> topo_seg = seg->ToTopologicalOrderedStruct();
  
  // the size is suppose to be +1 (empty token at first)
  assert(topo_seg.size() == 6);
  //TODO put some more here  
}