numenta / nupic.core-legacy

Implementation of core NuPIC algorithms in C++ (under construction)
http://numenta.org
GNU Affero General Public License v3.0
272 stars 276 forks source link

NTA_CHECK assertion incorrect in VectorFileSensor #1416

Open sjgallagher2 opened 6 years ago

sjgallagher2 commented 6 years ago

Noticed that in the VectorFileSensor.cpp function setParameterFromBuffer:328 it seems the NTA_CHECK assertion is backwards in some places. For example:

void VectorFileSensor::setParameterFromBuffer(const std::string& name, Int64 index, IReadBuffer& value)
...
  if (name == "repeatCount")
  {
    NTA_CHECK(value.read(int_param) == 0)
      << where << "Unable to read repeatCount: "
      << int_param << " - Should be a positive integer";

It appears that this checks if the supplied value is 0, and otherwise it throws a 'positive integer' error. Shouldn't this be:

    NTA_CHECK(value.read(int_param) > 0)
      << where << "Unable to read repeatCount: "
      << int_param << " - Should be a positive integer"; 

Or maybe I'm confused about how to use NTA_CHECK or value.read().

rhyolight commented 6 years ago

@scottpurdy or @lscheinkman do you guys know how NTA_CHECK works?

scottpurdy commented 6 years ago

The expression inside NTA_CHECK() should evaluate to true when the code and inputs are correct. I'm not sure if the listed check is incorrect though. The comment says that int_param should be a positive integer, not the return value of read.