28  TEST_COMPARE(te->getName(), ==, 
"TimeEventRange (0; 0; 0)");
 
   29  te->setName(
"TestName");
 
   30  TEST_COMPARE(te->getName(), ==, 
"TestName");
 
   32  TEST_FLOATING_EQUALITY(te->getTimeStart(), 0.0, 1.0e-14);
 
   33  TEST_FLOATING_EQUALITY(te->getTimeStop(), 0.0, 1.0e-14);
 
   34  TEST_FLOATING_EQUALITY(te->getTimeStride(), 0.0, 1.0e-14);
 
   35  TEST_COMPARE(te->getNumEvents(), ==, 1);
 
   37  TEST_FLOATING_EQUALITY(
 
   38      te->getRelTol(), std::numeric_limits<double>::epsilon() * 100.0, 1.0e-14);
 
   39  TEST_FLOATING_EQUALITY(
 
   40      te->getAbsTol(), std::numeric_limits<double>::epsilon() * 100.0, 1.0e-14);
 
   42  TEST_COMPARE(te->getLandOnExactly(), ==, 
true);
 
 
   92  TEST_FLOATING_EQUALITY(te->getRelTol(), 0.1, 1.0e-14);
 
   93  te->setRelTol(1.0e-14);
 
   94  te->setLandOnExactly(
false);
 
   95  TEST_COMPARE(te->getLandOnExactly(), ==, 
false);
 
   96  te->setLandOnExactly(
true);
 
   99  te->setTimeStart(1.0);
 
  100  TEST_FLOATING_EQUALITY(te->getTimeStart(), 1.0, 1.0e-14);
 
  101  TEST_FLOATING_EQUALITY(te->getTimeStop(), 1.0, 1.0e-14);
 
  102  TEST_FLOATING_EQUALITY(te->getTimeStride(), 0.0, 1.0e-14);
 
  103  TEST_COMPARE(te->getNumEvents(), ==, 1);
 
  106  te->setTimeStop(4.0);
 
  107  TEST_FLOATING_EQUALITY(te->getTimeStart(), 1.0, 1.0e-14);
 
  108  TEST_FLOATING_EQUALITY(te->getTimeStop(), 4.0, 1.0e-14);
 
  109  TEST_FLOATING_EQUALITY(te->getTimeStride(), 3.0, 1.0e-14);
 
  110  TEST_COMPARE(te->getNumEvents(), ==, 2);
 
  113  te->setTimeStride(0.5);
 
  114  TEST_FLOATING_EQUALITY(te->getTimeStart(), 1.0, 1.0e-14);
 
  115  TEST_FLOATING_EQUALITY(te->getTimeStop(), 4.0, 1.0e-14);
 
  116  TEST_FLOATING_EQUALITY(te->getTimeStride(), 0.5, 1.0e-14);
 
  117  TEST_COMPARE(te->getNumEvents(), ==, 7);
 
 
  125  te->setTimeStart(1.0);
 
  126  te->setTimeStop(4.0);
 
  127  te->setTimeStride(0.5);
 
  130  te->setTimeStride(-0.5);
 
  131  TEST_FLOATING_EQUALITY(te->getTimeStart(), 1.0, 1.0e-14);
 
  132  TEST_FLOATING_EQUALITY(te->getTimeStop(), 4.0, 1.0e-14);
 
  133  TEST_FLOATING_EQUALITY(te->getTimeStride(), 0.5, 1.0e-14);
 
  134  TEST_COMPARE(te->getNumEvents(), ==, 7);
 
  137  te->setTimeStride(5.0);
 
  138  TEST_FLOATING_EQUALITY(te->getTimeStart(), 1.0, 1.0e-14);
 
  139  TEST_FLOATING_EQUALITY(te->getTimeStop(), 4.0, 1.0e-14);
 
  140  TEST_FLOATING_EQUALITY(te->getTimeStride(), 3.0, 1.0e-14);
 
  141  TEST_COMPARE(te->getNumEvents(), ==, 2);
 
  144  te->setTimeStride(1.0e-14);
 
  145  TEST_FLOATING_EQUALITY(te->getTimeStart(), 1.0, 1.0e-14);
 
  146  TEST_FLOATING_EQUALITY(te->getTimeStop(), 4.0, 1.0e-14);
 
  147  TEST_FLOATING_EQUALITY(te->getTimeStride(), 3.0, 1.0e-14);
 
  148  TEST_COMPARE(te->getNumEvents(), ==, 2);
 
 
  158  te->setTimeRange(0.0, 
PI, 1.0);
 
  159  TEST_FLOATING_EQUALITY(te->getTimeStart(), 0.0, 1.0e-14);
 
  160  TEST_FLOATING_EQUALITY(te->getTimeStop(), 
PI, 1.0e-14);
 
  161  TEST_FLOATING_EQUALITY(te->getTimeStride(), 1.0, 1.0e-14);
 
  162  TEST_COMPARE(te->getNumEvents(), ==, 4);
 
  165  te->setTimeRange(0.0, 
PI, 5);
 
  166  TEST_FLOATING_EQUALITY(te->getTimeStart(), 0.0, 1.0e-14);
 
  167  TEST_FLOATING_EQUALITY(te->getTimeStop(), 
PI, 1.0e-14);
 
  168  TEST_FLOATING_EQUALITY(te->getTimeStride(), 
PI / 4.0, 1.0e-14);
 
  169  TEST_COMPARE(te->getNumEvents(), ==, 5);
 
 
  192  te->setTimeRange(0.0, 
PI, 1.0);
 
  193  te->setRelTol(1.0e-14);
 
  196  TEST_COMPARE(te->isTime(-1.0 + -10.0e-14), ==,
 
  198  TEST_COMPARE(te->isTime(-1.0 + -0.1e-14), ==,
 
  200  TEST_COMPARE(te->isTime(-1.0 + 0.0), ==, 
false);  
 
  201  TEST_COMPARE(te->isTime(-1.0 + 0.1e-14), ==,
 
  203  TEST_COMPARE(te->isTime(-1.0 + 10.0e-14), ==,
 
  207  TEST_COMPARE(te->isTime(-10.0e-14), ==, 
false);  
 
  208  TEST_COMPARE(te->isTime(-0.1e-14), ==, 
true);    
 
  209  TEST_COMPARE(te->isTime(0.0), ==, 
true);         
 
  210  TEST_COMPARE(te->isTime(0.1e-14), ==, 
true);     
 
  211  TEST_COMPARE(te->isTime(10.0e-14), ==, 
false);   
 
  214  TEST_COMPARE(te->isTime(1.0 + -10.0e-14), ==,
 
  216  TEST_COMPARE(te->isTime(1.0 + -0.1e-14), ==, 
true);  
 
  217  TEST_COMPARE(te->isTime(1.0 + 0.0), ==, 
true);       
 
  218  TEST_COMPARE(te->isTime(1.0 + 0.1e-14), ==, 
true);   
 
  219  TEST_COMPARE(te->isTime(1.0 + 10.0e-14), ==,
 
  223  TEST_COMPARE(te->isTime(3.0 + -10.0e-14), ==,
 
  225  TEST_COMPARE(te->isTime(3.0 + -0.1e-14), ==, 
true);  
 
  226  TEST_COMPARE(te->isTime(3.0 + 0.0), ==, 
true);       
 
  227  TEST_COMPARE(te->isTime(3.0 + 0.1e-14), ==, 
true);   
 
  228  TEST_COMPARE(te->isTime(3.0 + 10.0e-14), ==,
 
  232  TEST_COMPARE(te->isTime(4.0 + -10.0e-14), ==,
 
  234  TEST_COMPARE(te->isTime(4.0 + -0.1e-14), ==,
 
  236  TEST_COMPARE(te->isTime(4.0 + 0.0), ==, 
false);      
 
  237  TEST_COMPARE(te->isTime(4.0 + 0.1e-14), ==, 
false);  
 
  238  TEST_COMPARE(te->isTime(4.0 + 10.0e-14), ==,
 
 
  247  te->setTimeRange(0.0, 
PI, 1.0);
 
  248  te->setRelTol(1.0e-14);
 
  252  TEST_FLOATING_EQUALITY(te->timeToNextEvent(-10.0e-14), 10.0e-14,
 
  254  TEST_FLOATING_EQUALITY(te->timeToNextEvent(-0.1e-14), 1.0 + 0.1e-14,
 
  256  TEST_FLOATING_EQUALITY(te->timeToNextEvent(0.0), 1.0 + 0.0,
 
  258  TEST_FLOATING_EQUALITY(te->timeToNextEvent(0.1e-14), 1.0 - 0.1e-14,
 
  260  TEST_FLOATING_EQUALITY(te->timeToNextEvent(10.0e-14), 1.0 - 10.0e-14,
 
  264  TEST_FLOATING_EQUALITY(te->timeToNextEvent(1.0 + -10.0e-14), 10.0e-14,
 
  266  TEST_FLOATING_EQUALITY(te->timeToNextEvent(1.0 + -0.1e-14), 1.0 + 0.1e-14,
 
  268  TEST_FLOATING_EQUALITY(te->timeToNextEvent(1.0 + 0.0), 1.0 + 0.0,
 
  270  TEST_FLOATING_EQUALITY(te->timeToNextEvent(1.0 + 0.1e-14), 1.0 - 0.1e-14,
 
  272  TEST_FLOATING_EQUALITY(te->timeToNextEvent(1.0 + 10.0e-14), 1.0 - 10.0e-14,
 
  276  TEST_FLOATING_EQUALITY(te->timeToNextEvent(3.0 + -10.0e-14), 10.0e-14,
 
  278  TEST_FLOATING_EQUALITY(te->timeToNextEvent(3.0 + -0.1e-14),
 
  279                         te->getDefaultTime(),
 
  281  TEST_FLOATING_EQUALITY(te->timeToNextEvent(3.0 + 0.0), te->getDefaultTime(),
 
  283  TEST_FLOATING_EQUALITY(te->timeToNextEvent(3.0 + 0.1e-14),
 
  284                         te->getDefaultTime(),
 
  286  TEST_FLOATING_EQUALITY(te->timeToNextEvent(3.0 + 10.0e-14),
 
  287                         te->getDefaultTime(),
 
 
  296  te->setTimeRange(0.0, 
PI, 1.0);
 
  297  te->setRelTol(1.0e-14);
 
  301  TEST_FLOATING_EQUALITY(te->timeOfNextEvent(-10.0e-14), 0.0,
 
  303  TEST_FLOATING_EQUALITY(te->timeOfNextEvent(-0.1e-14), 1.0,
 
  305  TEST_FLOATING_EQUALITY(te->timeOfNextEvent(0.0), 1.0,
 
  307  TEST_FLOATING_EQUALITY(te->timeOfNextEvent(0.1e-14), 1.0,
 
  309  TEST_FLOATING_EQUALITY(te->timeOfNextEvent(10.0e-14), 1.0,
 
  313  TEST_FLOATING_EQUALITY(te->timeOfNextEvent(1.0 + -10.0e-14), 1.0,
 
  315  TEST_FLOATING_EQUALITY(te->timeOfNextEvent(1.0 + -0.1e-14), 2.0,
 
  317  TEST_FLOATING_EQUALITY(te->timeOfNextEvent(1.0 + 0.0), 2.0,
 
  319  TEST_FLOATING_EQUALITY(te->timeOfNextEvent(1.0 + 0.1e-14), 2.0,
 
  321  TEST_FLOATING_EQUALITY(te->timeOfNextEvent(1.0 + 10.0e-14), 2.0,
 
  325  TEST_FLOATING_EQUALITY(te->timeOfNextEvent(3.0 + -10.0e-14), 3.0,
 
  327  TEST_FLOATING_EQUALITY(te->timeOfNextEvent(3.0 + -0.1e-14),
 
  328                         te->getDefaultTime(),
 
  330  TEST_FLOATING_EQUALITY(te->timeOfNextEvent(3.0 + 0.0), te->getDefaultTime(),
 
  332  TEST_FLOATING_EQUALITY(te->timeOfNextEvent(3.0 + 0.1e-14),
 
  333                         te->getDefaultTime(),
 
  335  TEST_FLOATING_EQUALITY(te->timeOfNextEvent(3.0 + 10.0e-14),
 
  336                         te->getDefaultTime(),
 
 
  345  te->setTimeRange(0.0, 
PI, 1.0);
 
  346  te->setRelTol(1.0e-14);
 
  351  TEST_COMPARE(te->eventInRange(-1.0, -10.0e-14), ==,
 
  353  TEST_COMPARE(te->eventInRange(-1.0, -0.1e-14), ==,
 
  355  TEST_COMPARE(te->eventInRange(-1.0, 0.0), ==, 
true);  
 
  356  TEST_COMPARE(te->eventInRange(-1.0, 0.1e-14), ==,
 
  358  TEST_COMPARE(te->eventInRange(-1.0, 10.0e-14), ==,
 
  362  TEST_COMPARE(te->eventInRange(0.5, 1.0 + -10.0e-14), ==,
 
  364  TEST_COMPARE(te->eventInRange(0.5, 1.0 + -0.1e-14), ==,
 
  366  TEST_COMPARE(te->eventInRange(0.5, 1.0 + 0.0), ==,
 
  368  TEST_COMPARE(te->eventInRange(0.5, 1.0 + 0.1e-14), ==,
 
  370  TEST_COMPARE(te->eventInRange(0.5, 1.0 + 10.0e-14), ==,
 
  374  TEST_COMPARE(te->eventInRange(2.5, 3.0 + -10.0e-14), ==,
 
  376  TEST_COMPARE(te->eventInRange(2.5, 3.0 + -0.1e-14), ==,
 
  378  TEST_COMPARE(te->eventInRange(2.5, 3.0 + 0.0), ==,
 
  380  TEST_COMPARE(te->eventInRange(2.5, 3.0 + 0.1e-14), ==,
 
  382  TEST_COMPARE(te->eventInRange(2.5, 3.0 + 10.0e-14), ==,
 
  387  TEST_COMPARE(te->eventInRange(-10.0e-14, 0.5), ==,
 
  389  TEST_COMPARE(te->eventInRange(-0.1e-14, 0.5), ==,
 
  391  TEST_COMPARE(te->eventInRange(0.0, 0.5), ==, 
false);  
 
  392  TEST_COMPARE(te->eventInRange(0.1e-14, 0.5), ==,
 
  394  TEST_COMPARE(te->eventInRange(10.0e-14, 0.5), ==,
 
  398  TEST_COMPARE(te->eventInRange(1.0 + -10.0e-14, 1.5), ==,
 
  400  TEST_COMPARE(te->eventInRange(1.0 + -0.1e-14, 1.5), ==,
 
  402  TEST_COMPARE(te->eventInRange(1.0 + 0.0, 1.5), ==,
 
  404  TEST_COMPARE(te->eventInRange(1.0 + 0.1e-14, 1.5), ==,
 
  406  TEST_COMPARE(te->eventInRange(1.0 + 10.0e-14, 1.5), ==,
 
  410  TEST_COMPARE(te->eventInRange(3.0 + -10.0e-14, 4.0), ==,
 
  412  TEST_COMPARE(te->eventInRange(3.0 + -0.1e-14, 4.0), ==,
 
  414  TEST_COMPARE(te->eventInRange(3.0 + 0.0, 4.0), ==,
 
  416  TEST_COMPARE(te->eventInRange(3.0 + 0.1e-14, 4.0), ==,
 
  418  TEST_COMPARE(te->eventInRange(3.0 + 10.0e-14, 4.0), ==,
 
 
  428  auto pl = ter->getValidParameters();
 
  430  TEST_COMPARE(pl->get<std::string>(
"Type"), ==, 
"Range");
 
  431  TEST_COMPARE(pl->get<std::string>(
"Name"), ==, 
"TimeEventRange (0; 0; 0)");
 
  432  TEST_FLOATING_EQUALITY(pl->get<
double>(
"Start Time"), 0.0, 1.0e-14);
 
  433  TEST_FLOATING_EQUALITY(pl->get<
double>(
"Stop Time"), 0.0, 1.0e-14);
 
  434  TEST_FLOATING_EQUALITY(pl->get<
double>(
"Stride Time"), 0.0, 1.0e-14);
 
  435  TEST_COMPARE(pl->get<
int>(
"Number of Events"), ==, 1);
 
  436  TEST_FLOATING_EQUALITY(pl->get<
double>(
"Relative Tolerance"),
 
  437                         std::numeric_limits<double>::epsilon() * 100.0,
 
  439  TEST_COMPARE(pl->get<
bool>(
"Land On Exactly"), ==, 
true);
 
  442    std::ostringstream unusedParameters;
 
  443    pl->unused(unusedParameters);
 
  444    TEST_COMPARE(unusedParameters.str(), ==, 
"");
 
 
  453  Teuchos::RCP<Teuchos::ParameterList> pl =
 
  454      Teuchos::parameterList(
"Time Event Range");
 
  456  pl->set(
"Name", 
"Unit Test Time Event Range");
 
  457  pl->set(
"Type", 
"Range");
 
  458  pl->set(
"Start Time", -0.1);
 
  459  pl->set(
"Stop Time", 1.1);
 
  460  pl->set(
"Stride Time", 0.1);
 
  461  pl->set(
"Relative Tolerance", 1.0e-10);
 
  462  pl->set(
"Land On Exactly", 
false);
 
  465  auto ter = Tempus::createTimeEventRange<double>(pl);
 
  469  TEST_COMPARE(ter->getName(), ==, 
"Unit Test Time Event Range");
 
  470  TEST_COMPARE(ter->getType(), ==, 
"Range");
 
  471  TEST_FLOATING_EQUALITY(ter->getTimeStart(), -0.1, 1.0e-14);
 
  472  TEST_FLOATING_EQUALITY(ter->getTimeStop(), 1.1, 1.0e-14);
 
  473  TEST_FLOATING_EQUALITY(ter->getTimeStride(), 0.1, 1.0e-14);
 
  474  TEST_COMPARE(ter->getNumEvents(), ==, 13);
 
  475  TEST_FLOATING_EQUALITY(ter->getRelTol(), 1.0e-10, 1.0e-14);
 
  476  TEST_COMPARE(ter->getLandOnExactly(), ==, 
false);
 
 
  484                                                    "SingleEventAtZero", 
true));
 
  485  ter->describe(out, Teuchos::VERB_EXTREME);
 
  487  TEST_COMPARE(ter->getNumEvents(), ==, 1);
 
  489  TEST_COMPARE(ter->isTime(0.0), ==, 
true);
 
  490  TEST_FLOATING_EQUALITY(ter->timeToNextEvent(-1.0), 1.0, 1.0e-14);
 
  491  TEST_FLOATING_EQUALITY(ter->timeOfNextEvent(-1.0), 0.0, 1.0e-14);
 
  492  TEST_FLOATING_EQUALITY(ter->timeToNextEvent(0.0), ter->getDefaultTime(),
 
  494  TEST_FLOATING_EQUALITY(ter->timeOfNextEvent(0.0), ter->getDefaultTime(),
 
  496  TEST_COMPARE(ter->eventInRange(-1.0, 1.0), ==, 
true);
 
  497  TEST_COMPARE(ter->eventInRange(0.0, 1.0), ==, 
false);
 
  498  TEST_COMPARE(ter->eventInRange(0.0, 0.0), ==, 
false);