Example #1
0
void model_parameters::userfunction(void)
{
  nll=0.0;
  dvariable a2=a1+cutoff*(b1-b2);
  dvar_vector predicted(1,T);
  for(int i=1; i<=T; ++i){
    if(years(i)<cutoff){
      predicted(i)=a1+b1*years(i); 
    }
    if(years(i)>=cutoff){
      predicted(i)=a2+b2*years(i); 
    }
  }
  nll-=-log(sqrt(2.0*M_PI))-log(sdobs)-0.5*sum(square((lnssb-predicted)/sdobs));
}
Example #2
0
File: a.c Project: TheSShine/456789
void main()
{
     int n;
     while(1)
     {
         menu();
         scanf("%d",&n);
         if(n==0)
             break;
         switch(n)
         {
            case 1:
                benjin();break;
            case 2:
                fuli();break;
            case 3:
                 danli();break;
            case 4:
                 years();break;
            case 5:
                 nianlilv();break;
            case 6:
                 nianjinzhongzhi();break;
            case 0:n=0;break;    

         }
          getch();
     }
}
Example #3
0
WDate WDate::addYears(int nyears) const
{
  if (valid_) {
    date d(year_, month_, day_);
    d += years(nyears);

    return WDate(d.year(), d.month(), d.day());
  } else
    return *this;
}
Example #4
0
double DateTime::duration(const double& time, double duration,
                          DateTimeUnitOptions unit)
{
    switch (unit) {
    case DATE_TIME_UNIT_NONE:
    case DATE_TIME_UNIT_DAY:
        return days(duration);
    case DATE_TIME_UNIT_WEEK:
        return weeks(duration);
    case DATE_TIME_UNIT_MONTH:
        return months(time, duration);
    case DATE_TIME_UNIT_YEAR:
        return years(time, duration);
    }
    return 0;
}
Example #5
0
CommandBase* ParserList::makeCmdListSpecificMonth(string monthStr) {
    int parsedMonth;
    // Parse month, if month is valid
    try {
        parsedMonth = parseMonth(monthStr);
    } catch (invalid_argument) {
        return NULL;
    }

    // Ensure that the month is the coming month, and not a month which
    // has already passed
    date currentDate = second_clock::local_time().date();
    date startDate = date(currentDate.year(), parsedMonth, 1);
    if (currentDate.month() > parsedMonth) {
        startDate += years(1);
    }

    ptime startTime = ptime(startDate);
    ptime endTime = getLastOfMonth(startTime);
    return makeCmdListPeriod(startTime, endTime);
}
// date in english function
void dateEnglish(char* date) {
    // for numbers from 1 to 19
    char *digit[] = { "", "one", "two", "three", "four", "five", "six",
                      "seven", "eight", "nine", "ten", "eleven", "twelve",
                      "thirteen", "fourteen", "fifteen", "sixteen", "seventeen",
                      "eighteen", "nineteen"
                    };
    // all tens
    char *tens[] = { "", "", "twenty", "thirty", "forty", "fifty",
                     "sixty", "seventy", "eighty", "ninety"
                   };
    int day = (date[0] - '0') * 10 + (date[1] - '0');
    int month = (date[3] - '0') * 10 + (date[4] - '0');
    int year = (date[6] - '0') * 1000 + (date[7] - '0') * 100 + ((date[8] - '0') * 10 + date[9] - '0');
    if (validation(day,month,year)) {
        days(day, digit, tens);
        months(month);
        printf(" of ");
        years(year, digit, tens);
    }
    else
        printf("Its not a valid date");
}
Example #7
0
void CategoryInfo::DoExecute() {


  auto categories = model_->categories();
  vector<string> names = categories->category_names();
  /*
  cache_ << "*category_info: " << label_ << "\n";
  for(string name : names) {
    cache_ << "Category: " << name << "\n";
    cache_ << "min_age: " << categories->min_age(name) << "\n";
    cache_ << "max_age: " << categories->max_age(name) << "\n";

    vector<unsigned> years = categories->years(name);
    cache_ << "years: ";
    for (unsigned year : years)
      cache_ << year << " ";
    cache_ << "\n\n";
  }
  */
  cache_ << "*" << label_ << " " << "("<< type_ << ")"<<"\n";
  for(string name : names) {
    cache_ << name << " " << REPORT_R_LIST<<"\n";
    cache_ << "min_age: " << categories->min_age(name) << "\n";
    cache_ << "max_age: " << categories->max_age(name) << "\n";

    vector<unsigned> years = categories->years(name);
    cache_ << "years: ";
    for (unsigned year : years)
      cache_ << year << " ";
    cache_ << "\n";
    cache_ << REPORT_R_LIST_END << "\n";
  }


  ready_for_writing_ = true;
}
Example #8
0
int CssmDate::year() const
{ return atoi(string(years(), 4).c_str()); }
Example #9
0
//
// The CssmDate PODwrapper
//
CssmDate::CssmDate(const char *y, const char *m, const char *d)
{
    assign(years(), 4, y);
    assign(months(), 2, m);
    assign(days(), 2, d);
}
Example #10
0
int confOption::setValueFromFile(QString line)
{
  // Used to set values in confOptions from a file line
  
  QString rval = line.section("=",1).trimmed();

  qDebug() << "setting " << realName << " to " << rval << " (from file)";
    
  if (type == BOOL)
  {
    if (rval == "true" || rval == "on" || rval == "yes")
    {
      value = true;
      return 0;
    }
    else if (rval == "false" || rval == "off" || rval == "no")
    {
      value = false;
      return 0;
    }
    qDebug() << rval << "is not a valid value for setting" << realName << ". Ignoring...";
    return -1;
  }

  else if (type == INTEGER)
  {
    bool ok;
    qlonglong rvalToNmbr = rval.toLongLong(&ok);
    if (ok && rvalToNmbr >= minVal && rvalToNmbr <= maxVal)
    {
      value = rvalToNmbr;
      return 0;
    }
    qDebug() << rval << "is not a valid value for setting" << realName << ". Ignoring...";
    return -1;
  }

  else if (type == STRING)
  {
    value = rval;
    return 0;
  }  
  
  else if (type == LIST)
  {
    if (realName == "ShowStatus") // ShowStatus needs special treatment
    {
      if (rval.toLower() == "true" || rval.toLower() == "on")
        rval = "yes";
      else if (rval.toLower() == "false" || rval.toLower() == "off")
        rval = "no";
    }
    if (possibleVals.contains(rval))
    {
      value = rval.toLower();
      return 0;
    }
    qDebug() << rval << "is not a valid value for setting" << realName << ". Ignoring...";
    value = defVal;
    return -1;
  }

  else if (type == MULTILIST)
  {
    QVariantMap map;

    QStringList readList = rval.split(" ", QString::SkipEmptyParts);
    for (int i = 0; i < readList.size(); ++i)
    {
      if (!possibleVals.contains(readList.at(i)))
      {
        qDebug() << rval << "is not a valid value for setting" << realName << ". Ignoring...";
        return -1;
      }
    }
    
    for (int i = 0; i < possibleVals.size(); ++i)
    {
      if (readList.contains(possibleVals.at(i)))
        map[possibleVals.at(i)] = true;
      else
        map[possibleVals.at(i)] = false;
    }

    value = map;
    return 0;

  }  
  
  else if (type == TIME)
  {
    int pos = 0;
    QRegExp rxValid;

    // These regex check whether rval is a valid time interval
    if (hasNsec)
      rxValid = QRegExp("^(?:\\d*\\.?\\d *(ns|nsec|us|usec|ms|msec|s|sec|second|seconds|m|min|minute|minutes|h|hr|hour|hours|d|day|days|w|week|weeks|month|months|y|year|years)? *)+$");
    else
      rxValid = QRegExp("^(?:\\d*\\.?\\d *(us|usec|ms|msec|s|sec|second|seconds|m|min|minute|minutes|h|hr|hour|hours|d|day|days|w|week|weeks|month|months|y|year|years)? *)+$");

    pos = rxValid.indexIn(rval);

    if (pos > -1)
    {
      pos = 0;
      seconds secs(0);

      // This regex parses individual elements of the time interval
      QRegExp rxTimeParse = QRegExp("(\\d*\\.?\\d+) *([a-z]*)");

      while ((pos = rxTimeParse.indexIn(rval, pos)) != -1)
      {
        if (rxTimeParse.cap(2) == "ns" ||
            rxTimeParse.cap(2) == "nsec" )
        {
          nanoseconds ns(rxTimeParse.cap(1).trimmed().toDouble());
          secs += ns;
        }
        else if (rxTimeParse.cap(2) == "us" ||
            rxTimeParse.cap(2) == "usec" )
        {
          microseconds us(rxTimeParse.cap(1).trimmed().toDouble());
          secs += us;
        }
        else if (rxTimeParse.cap(2) == "ms" ||
            rxTimeParse.cap(2) == "msec" )
        {
          milliseconds ms(rxTimeParse.cap(1).trimmed().toDouble());
          secs += ms;
        }
        else if (rxTimeParse.cap(2) == "s" ||
                 rxTimeParse.cap(2) == "sec" ||
                 rxTimeParse.cap(2) == "second" ||
                 rxTimeParse.cap(2) == "seconds" )
        {
          seconds s(rxTimeParse.cap(1).trimmed().toDouble());
          secs += s;
        }
        else if (rxTimeParse.cap(2) == "m" ||
                 rxTimeParse.cap(2) == "min" ||
                 rxTimeParse.cap(2) == "minute" ||
                 rxTimeParse.cap(2) == "minutes" )
        {
          minutes min(rxTimeParse.cap(1).trimmed().toDouble());
          secs += min;
        }
        else if (rxTimeParse.cap(2) == "h" ||
                 rxTimeParse.cap(2) == "hr" ||
                 rxTimeParse.cap(2) == "hour" ||
                 rxTimeParse.cap(2) == "hours" )
        {
          hours hr(rxTimeParse.cap(1).trimmed().toDouble());
          secs += hr;
        }
        else if (rxTimeParse.cap(2) == "d" ||
                 rxTimeParse.cap(2) == "day" ||
                 rxTimeParse.cap(2) == "days")
        {
          days dy(rxTimeParse.cap(1).trimmed().toDouble());
          secs += dy;
        }
        else if (rxTimeParse.cap(2) == "w" ||
                 rxTimeParse.cap(2) == "week" ||
                 rxTimeParse.cap(2) == "weeks")
        {
          weeks w(rxTimeParse.cap(1).trimmed().toDouble());
          secs += w;
        }
        else if (rxTimeParse.cap(2) == "month" ||
                 rxTimeParse.cap(2) == "months")
        {
          months m(rxTimeParse.cap(1).trimmed().toDouble());
          secs += m;
        }
        else if (rxTimeParse.cap(2) == "y" ||
                 rxTimeParse.cap(2) == "year" ||
                 rxTimeParse.cap(2) == "years")
        {
          years y(rxTimeParse.cap(1).trimmed().toDouble());
          secs += y;
        }

        else if (rxTimeParse.cap(2).isEmpty())
        {
          // unitless number, convert it from defReadUnit to seconds
          seconds tmpSeconds(convertTimeUnit(rxTimeParse.cap(1).trimmed().toDouble(), defReadUnit, timeUnit::s).toDouble());
          secs += tmpSeconds;
        }

        pos += rxTimeParse.matchedLength();
      }

      // Convert the read value in seconds to defUnit
      if (defUnit == ns)
        value = nanoseconds(secs).count();
      else if (defUnit == us)
        value = microseconds(secs).count();
      else if (defUnit == ms)
        value = milliseconds(secs).count();
      else if (defUnit == s)
        value = secs.count();
      else if (defUnit == min)
        value = minutes(secs).count();
      else if (defUnit == h)
        value = hours(secs).count();
      else if (defUnit == d)
        value = days(secs).count();
      else if (defUnit == w)
        value = weeks(secs).count();
      else if (defUnit == month)
        value = months(secs).count();
      else if (defUnit == year)
        value = years(secs).count();

      value = value.toULongLong(); // Convert to ulonglong (we don't support float in ui)
      return 0;

    }
    else
    {
      qDebug() << rval << "is not a valid value for setting" << realName << ". Ignoring...";
      return -1;
    }
  }
  
  else if (type == RESLIMIT)
  {
    bool ok;
    int nmbr = rval.toUInt(&ok);
    if (ok)
    {
      value = nmbr;
      return 0;
    }
    else if (rval.toLower().trimmed() == "infinity" || rval.trimmed().isEmpty())
    {
      value = -1;
      return 0;
    }
    qDebug() << rval << "is not a valid value for setting" << realName << ". Ignoring...";
    return -1;
    
  }
  
  else if (type == SIZE)
  {
    // RegExp to match a number (possibly with decimals) followed by a size unit (or no unit for byte)
    QRegExp rxSize = QRegExp("(\\b\\d+\\.?\\d*(K|M|G|T|P|E)?\\b)");
    
    int pos = 0;
    pos = rxSize.indexIn(rval);
    if (pos > -1 && rxSize.cap(0) == rval.trimmed())
    {
      // convert the specified size unit to megabytes
      if (rxSize.cap(0).contains("K"))
        value = rxSize.cap(0).remove("K").toDouble() / 1024;
      else if (rxSize.cap(0).contains("M"))
        value = rxSize.cap(0).remove("M").toDouble();
      else if (rxSize.cap(0).contains("G"))
        value = rxSize.cap(0).remove("G").toDouble() * 1024;
      else if (rxSize.cap(0).contains("T"))
        value = rxSize.cap(0).remove("T").toDouble() * 1024 * 1024;
      else if (rxSize.cap(0).contains("P"))
        value = rxSize.cap(0).remove("P").toDouble() * 1024 * 1024 * 1024;
      else if (rxSize.cap(0).contains("E"))
        value = rxSize.cap(0).remove("E").toDouble() * 1024 * 1024 * 1024 * 1024;
      else
        value = rxSize.cap(0).toDouble() / 1024 / 1024;
      
      // Convert from double to ulonglong (we don't support float in ui)
      value = value.toULongLong();
      return 0;
    }
    else
    {
      qDebug() << rval << "is not a valid value for setting" << realName << ". Ignoring...";
      return -1;
    }
   
  }
  return -1;
}
Example #11
0
const DateTimeField *BaseChronology::yearOfCentury() {
    return UnsupportedDateTimeField::getInstance(DateTimeFieldType::yearOfCentury(), years());
}
// -----------------------------------------------------------------------------
// CDRMHelperServer::CheckExpirationL().
// This function check the time for rights to expire
// -----------------------------------------------------------------------------
//
void CDRMHelperServer::CheckExpirationL(
        const TDesC8& aUri ,
        const TUint8& aPermType ,
        const TUint8& aRegType ,
        TTime& aEndTime )
    {
#ifdef _DRM_TESTING
    WriteL(_L8("CheckExpiration"));
#endif


    RPointerArray<CDRMPermission> rights;
    RArray<TTimeBased> timeList;
    TBool stop = EFalse;
    TInt i = 0;
    TInt err = 0;
    TTimeIntervalYears years(KTimeIntervalYears);
    TTime time = Time::MinTTime();
    TTimeBased item;
    TTimeIntervalSeconds interval = 0;
    RPointerArray<HBufC8> imsi;

    aEndTime = Time::MinTTime();


    TRAP( err , iDrm.GetDBEntriesL(aUri, rights) );
    CleanupClosePushL(rights);
    if ( err == KErrCANoRights || err == KErrCANoPermission )
        {
        aEndTime = Time::MinTTime();
        err = KErrNone;
        stop = ETrue;
        }
    User::LeaveIfError(err);

    TRAP( err, iDrm.GetSupportedIndividualsL( imsi ) );

    if ( err )
        {
        imsi.ResetAndDestroy();
        }

    time.HomeTime();
    // Goes through all the rights associated to this specific URI
    CleanupClosePushL(timeList);

    for (i = 0; i < rights.Count() && !stop; i++)
        {
        CheckPermission( rights[i], aPermType, item, interval ,imsi );
        if (interval.Int()>0 ||
            (item.StartTime()==Time::MinTTime()&&item.EndTime()==Time::MaxTTime()))
            {
            stop = ETrue;
            aEndTime = Time::MaxTTime();
            }
        else
            {
            if (aRegType == CDRMHelperServer::EActive && item.StartTime()>time)
                {
                // dont count future time for active usage
                }
            else
                {
                err = timeList.Append( item );
                if ( err )
                    {
                    rights.ResetAndDestroy();
                    imsi.ResetAndDestroy();
                    }
                User::LeaveIfError(err);
                }
            }
        }
    rights.ResetAndDestroy();
    imsi.ResetAndDestroy();

    // if there were no inactivated interval- or full-rights then calculate the expiration date
    // based on what we stored to timeList
    if( !stop )
        {
        time.HomeTime(); // preset time to current time. This is what we compare against.
        TTime temp;
        TTime pastTime;
        temp = time;
        pastTime = Time::MinTTime();

        TBool action = ETrue;

        // Loop while there are still items in the list and we have done something
        while( action && timeList.Count() > 0 )
            {
            action = EFalse;
            for ( i = 0 ; i < timeList.Count() ; i++ ) // go through the whole timeList
                {
#ifdef _DRM_TESTING
                _LIT8(KCount , "time list count: %d");
                TBuf8<40> buf;
                buf.Format( KCount , timeList.Count());
                WriteL( buf );
#endif
                if ( timeList[i].StartTime() <= time && timeList[i].EndTime() > time )
                    {
                    // Case1: valid rights
                    time = timeList[i].EndTime();
                    timeList.Remove(i);
                    action = ETrue;
#ifdef _DRM_TESTING
                    WriteL(_L8("case 1:"));
                    WriteTimeL( time );
#endif
                    }
                else if ( timeList[i].StartTime() <= time && timeList[i].EndTime() <= time )
                    {
                    // Case2: expired rights
                    if (timeList[i].EndTime()>pastTime) // just in case there is no valid rights
                        {
                        pastTime = timeList[i].EndTime(); // save the latest end time from the expired rights
                        }
                    timeList.Remove(i);
                    action = ETrue;
#ifdef _DRM_TESTING
                    WriteL(_L8("case 2:"));
#endif
                    }
                else if ( timeList[i].StartTime() > time && timeList[i].EndTime() <= time )
                    {
                    // Case3: Illegal case. Start time after end-time.
                    timeList.Remove(i);
                    action = ETrue;
#ifdef _DRM_TESTING
                    WriteL(_L8("case 3:"));
#endif
                    }
                else
                    {
                    // Case4: Only thing left is the not yet valid -rights
#ifdef _DRM_TESTING
                    WriteL(_L8("case 4:"));
#endif
                    }
                }
            }

        if (temp<time)
            {
            aEndTime = time;   // time has been changed, so we use it, otherwise it means there is no valid rights
            }
        else
            {
            aEndTime = pastTime;
            }


#ifdef _DRM_TESTING
        WriteL(_L8("expiration date:"));
        WriteTimeL( aEndTime );
#endif
        }

#ifdef _DRM_TESTING
    WriteL(_L8("Endtime calculation is done:"));
    WriteTimeL( aEndTime );
#endif

    timeList.Reset();
    CleanupStack::PopAndDestroy(&timeList); // timeList
    CleanupStack::PopAndDestroy(&rights); // rights
    }
Example #13
0
void test_collection (void)
{
  std::cerr <<
    "************* COLLECTION: Testing container collections*************\n";

  knowledge::KnowledgeBase knowledge;
  knowledge::ThreadSafeContext & context (knowledge.get_context ());

  unsigned char buffer1[1024];
  unsigned char buffer2[2048];

  std::cerr << "  Creating containers...\n";

  containers::Integer age ("age", knowledge);
  containers::String name ("name", knowledge);
  containers::Double salary ("salary", knowledge);
  containers::NativeDoubleVector gps_location ("location.gps", knowledge, 3);
  containers::NativeIntegerVector years_employed ("employment.years", knowledge);
  containers::Map jobs ("jobs", knowledge);
  containers::BufferVector images ("images", knowledge);
  containers::StringVector movies ("movies.favorite", knowledge);
  containers::IntegerVector years ("years.favorite", knowledge);
  containers::IntegerVector sensors_ready ("sensors_ready", knowledge, 3);
  containers::DoubleVector coolfactor ("coolfactor.by.year", knowledge, 35);

  std::cerr << "  Testing modifieds.size == 2 after container creation... ";

  if (context.get_modifieds ().size () != 2)
  {
    std::cerr << "FAIL\n";
    std::cerr << "    Printing modified elements in context\n\n";
    std::cerr << context.debug_modifieds () << "\n";
  }
  else
  {
    std::cerr << "SUCCESS\n";
  }

  std::cerr << "  Assigning values to containers...\n";

  age = 40;
  name = "Jack Franklin";
  salary = 45000.0;
  gps_location.set (2, 1000.0);
  gps_location.set (0, 72.0);
  gps_location.set (1, 40.0);
  years_employed.set (0, 1998);
  years_employed.push_back (1999);
  years_employed.push_back (2005);
  years_employed.push_back (2007);
  years_employed.push_back (2010);
  years_employed.push_back (2011);
  years_employed.push_back (2012);
  years_employed.push_back (2013);
  years_employed.push_back (2014);
  years_employed.push_back (2015);
  jobs.set ("Albert's", "Courtesy Clerk");
  jobs.set ("Nursery House", "Plant Care Technician");
  jobs.set ("Johnson's", "Landscaping Expert");
  images.push_back (buffer1, sizeof (buffer1));
  images.push_back (buffer2, sizeof (buffer2));
  movies.push_back ("Edge of Tomorrow");
  movies.push_back ("Fight Club");
  movies.push_back ("Seven");
  movies.push_back ("Serenity");
  years.push_back (2000);
  years.push_back (2012);
  coolfactor.set (0, 10.0);
  coolfactor.set (1, 12.0);
  coolfactor.set (2, 10.5);
  coolfactor.set (3, 9);
  coolfactor.set (4, 8);
  coolfactor.set (5, 8.5);
  coolfactor.set (6, 8.5);
  coolfactor.set (7, 8.5);
  coolfactor.set (8, 8);
  coolfactor.set (9, 9);
  coolfactor.set (10, 10);
  coolfactor.set (11, 10);
  coolfactor.set (12, 11);
  coolfactor.set (13, 11);
  coolfactor.set (14, 6);
  coolfactor.set (15, 7);
  coolfactor.set (16, 20);
  coolfactor.set (17, 30);
  coolfactor.set (18, 35);
  coolfactor.set (19, 25);
  coolfactor.set (20, 20);
  coolfactor.set (21, 35);
  coolfactor.set (22, 30);
  coolfactor.set (23, 22);
  coolfactor.set (24, 18);
  coolfactor.set (25, 14);
  coolfactor.set (26, 11);
  coolfactor.set (27, 10);
  coolfactor.set (28, 9);
  coolfactor.set (29, 9);
  coolfactor.set (30, 5);
  coolfactor.set (31, 5);
  coolfactor.set (32, 4);
  coolfactor.set (33, 3);
  coolfactor.set (34, 3);
  sensors_ready.set (0, 1);
  sensors_ready.set (2, 1);

  containers::Collection collection;

  std::cerr << "\n  Adding 10 containers to collection container\n";

  collection.add (age);
  collection.add (name);
  collection.add (salary);
  collection.add (gps_location);
  collection.add (years_employed);
  collection.add (jobs);
  collection.add (images);
  collection.add (movies);
  collection.add (years);
  collection.add (coolfactor);

  std::cerr << "  Testing collection.size == 10 after adding containers... ";

  if (collection.size () != 10)
  {
    std::cerr << "FAIL. Size returned " << collection.size () << "\n";
  }
  else
  {
    std::cerr << "SUCCESS\n";
  }

  std::cerr << "\n  Printing Collection contents\n\n";
  std::cerr << collection.get_debug_info () << "\n";

  std::cerr << "  Printing modified elements in context\n\n";
  std::cerr << context.debug_modifieds () << "\n";

  std::cerr << "  Clearing modified elements in context\n\n";
  knowledge.clear_modifieds ();

  std::cerr << "  Testing modifieds.size == 0 after clearing modified... ";

  if (context.get_modifieds ().size () != 0)
  {
    std::cerr << "FAIL\n";
    std::cerr << "    Printing modified elements in context\n\n";
    std::cerr << context.debug_modifieds () << "\n";
  }
  else
  {
    std::cerr << "SUCCESS\n";
  }

  std::cerr << "  Calling modify on collection\n";
  collection.modify ();

  std::cerr << "  Testing modifieds.size == 55 after modifying containers... ";

  if (context.get_modifieds ().size () != 55)
  {
    std::cerr << "FAIL\n";
  }
  else
  {
    std::cerr << "SUCCESS\n";
  }

  std::cerr << "  Printing modified elements in context\n\n";
  std::cerr << context.debug_modifieds () << "\n";

  std::cerr << "  Clearing modified elements in context\n\n";
  knowledge.clear_modifieds ();

  std::cerr << "  Clearing collection\n\n";
  collection.clear ();

  std::cerr << "  Testing collection.size == 0 after clearing containers... ";

  if (collection.size () != 0)
  {
    std::cerr << "FAIL. Size returned " << collection.size () << "\n";
  }
  else
  {
    std::cerr << "SUCCESS\n";
  }

  std::cerr << "\nAdding 3 containers to collection container\n";

  collection.add (age);
  collection.add (name);
  collection.add (salary);

  std::cerr << "  Testing collection.size == 3 after adding containers... ";

  if (collection.size () != 3)
  {
    std::cerr << "FAIL. Size returned " << collection.size () << "\n";
  }
  else
  {
    std::cerr << "SUCCESS\n";
  }

  std::cerr << "\nPrinting Collection contents\n\n";
  std::cerr << collection.get_debug_info () << "\n";

  std::cerr << "  Calling modify on collection\n";
  collection.modify ();

  std::cerr << "  Testing modifieds.size == 3... ";

  if (context.get_modifieds ().size () != 3)
  {
    std::cerr << "FAIL\n";
  }
  else
  {
    std::cerr << "SUCCESS\n";
  }

  std::cerr << "  Printing modified elements in context\n\n";
  std::cerr << context.debug_modifieds () << "\n";

  std::cerr << "  Clearing modified elements in context\n\n";
  knowledge.clear_modifieds ();


  std::cerr << "  Calling modify_if_true on collection\n";
  collection.modify_if_true (sensors_ready);

  std::cerr << "  Testing modifieds.size == 0... ";

  if (context.get_modifieds ().size () != 0)
  {
    std::cerr << "FAIL\n";
  }
  else
  {
    std::cerr << "SUCCESS\n";
  }

  std::cerr << "  Updating final sensors ready to true\n";
  sensors_ready.set (1, 1);

  std::cerr << "  Calling modify_if_true on collection\n";
  collection.modify_if_true (sensors_ready);

  std::cerr << "  Testing modifieds.size == 4... ";

  if (context.get_modifieds ().size () != 4)
  {
    std::cerr << "FAIL\n";
    std::cerr << "    Printing modified elements in context\n\n";
    std::cerr << context.debug_modifieds () << "\n";
  }
  else
  {
    std::cerr << "SUCCESS\n";
  }

}
Example #14
0
 /**
  * @Returns: *this += -y.
  *
  */
 date& operator-=(years y)
 {
   return *this += years(-y.count());
 }