% Checks the getInfo call for all class methods
%

classes = utils.helper.ltpda_classes;
fails   = {};
for jj=1:numel(classes)
  cl = classes{jj};
  disp(sprintf('=========== %s ===============', cl))
  % Class info
  try
    % get meta info for this class
    ci = eval(sprintf('?%s', cl));
    % Get methods
    ms = ci.Methods;

    % Check if this is an abstract class
    try 
      o = feval(cl);
      abstract = false;
    catch
      abstract = true;
    end      
    
    if ~abstract
      % Go through methods
      for kk=1:numel(ms)
        m = ms{kk};
        % If this is not an inherited
        if strcmp(m.DefiningClass.Name, cl)
          disp(sprintf('   -- checking %s/%s', cl, m.Name));
          if strcmp(m.Access, 'public') && ~m.Static && ~strcmp(m.Name, 'Contents')
            cmd = sprintf('%s.getInfo(''%s'')', cl, m.Name);
            ii = [];
            try
              ii  = eval(cmd);
            end
            if ~isa(ii, 'minfo')
              fails = [fails sprintf('%s/%s', cl, m.Name)];
            end
          end
        else
          warning('!!! Skipping inherited method %s/%s', cl, m.Name);
        end
      end
    end
  catch
    warning('!!! Couldn''t get meta info for class %s', cl);
  end
end

fd = fopen('getinfo_fails.txt', 'w+');
for j=1:numel(fails)
  fprintf(fd, '%s\n', fails{j});
end
fclose(fd)
edit getinfo_fails.txt

