Пример #1
0
int main (int argc, char** argv)
{
  UnitTest t (86);

  // Without Context::initialize, there is no set of defaults loaded into
  // Context::Config.
  context.initialize ();
  context.config.set ("report.foo.columns", "id");

  Cmd cmd;
  cmd.command = "active";
  t.ok    (cmd.isReadOnlyCommand (), "isReadOnlyCommand active");
  t.notok (cmd.isWriteCommand    (), "not isWriteCommand active");

  cmd.command = "calendar";
  t.ok    (cmd.isReadOnlyCommand (), "isReadOnlyCommand calendar");
  t.notok (cmd.isWriteCommand    (), "not isWriteCommand calendar");

  cmd.command = "colors";
  t.ok    (cmd.isReadOnlyCommand (), "isReadOnlyCommand colors");
  t.notok (cmd.isWriteCommand    (), "not isWriteCommand colors");

  cmd.command = "completed";
  t.ok    (cmd.isReadOnlyCommand (), "isReadOnlyCommand completed");
  t.notok (cmd.isWriteCommand    (), "not isWriteCommand completed");

  cmd.command = "export.csv";
  t.ok    (cmd.isReadOnlyCommand (), "isReadOnlyCommand export.csv");
  t.notok (cmd.isWriteCommand    (), "not isWriteCommand export.csv");

  cmd.command = "export.ical";
  t.ok    (cmd.isReadOnlyCommand (), "isReadOnlyCommand export.ical");
  t.notok (cmd.isWriteCommand    (), "not isWriteCommand export.ical");

  cmd.command = "help";
  t.ok    (cmd.isReadOnlyCommand (), "isReadOnlyCommand help");
  t.notok (cmd.isWriteCommand    (), "not isWriteCommand help");

  cmd.command = "history.monthly";
  t.ok    (cmd.isReadOnlyCommand (), "isReadOnlyCommand history.monthly");
  t.notok (cmd.isWriteCommand    (), "not isWriteCommand history.monthly");

  cmd.command = "history.annual";
  t.ok    (cmd.isReadOnlyCommand (), "isReadOnlyCommand history.annual");
  t.notok (cmd.isWriteCommand    (), "not isWriteCommand history.annual");

  cmd.command = "ghistory.monthly";
  t.ok    (cmd.isReadOnlyCommand (), "isReadOnlyCommand ghistory.monthly");
  t.notok (cmd.isWriteCommand    (), "not isWriteCommand ghistory.monthly");

  cmd.command = "ghistory.annual";
  t.ok    (cmd.isReadOnlyCommand (), "isReadOnlyCommand ghistory.annual");
  t.notok (cmd.isWriteCommand    (), "not isWriteCommand ghistory.annual");

  cmd.command = "info";
  t.ok    (cmd.isReadOnlyCommand (), "isReadOnlyCommand info");
  t.notok (cmd.isWriteCommand    (), "not isWriteCommand info");

  cmd.command = "next";
  t.ok    (cmd.isReadOnlyCommand (), "isReadOnlyCommand next");
  t.notok (cmd.isWriteCommand    (), "not isWriteCommand next");

  cmd.command = "overdue";
  t.ok    (cmd.isReadOnlyCommand (), "isReadOnlyCommand overdue");
  t.notok (cmd.isWriteCommand    (), "not isWriteCommand overdue");

  cmd.command = "projects";
  t.ok    (cmd.isReadOnlyCommand (), "isReadOnlyCommand projects");
  t.notok (cmd.isWriteCommand    (), "not isWriteCommand projects");

  cmd.command = "stats";
  t.ok    (cmd.isReadOnlyCommand (), "isReadOnlyCommand stats");
  t.notok (cmd.isWriteCommand    (), "not isWriteCommand stats");

  cmd.command = "summary";
  t.ok    (cmd.isReadOnlyCommand (), "isReadOnlyCommand summary");
  t.notok (cmd.isWriteCommand    (), "not isWriteCommand summary");

  cmd.command = "tags";
  t.ok    (cmd.isReadOnlyCommand (), "isReadOnlyCommand tags");
  t.notok (cmd.isWriteCommand    (), "not isWriteCommand tags");

  cmd.command = "timesheet";
  t.ok    (cmd.isReadOnlyCommand (), "isReadOnlyCommand timesheet");
  t.notok (cmd.isWriteCommand    (), "not isWriteCommand timesheet");

  cmd.command = "version";
  t.ok    (cmd.isReadOnlyCommand (), "isReadOnlyCommand version");
  t.notok (cmd.isWriteCommand    (), "not isWriteCommand version");

  cmd.command = "_projects";
  t.ok    (cmd.isReadOnlyCommand (), "not isReadOnlyCommand _projects");
  t.notok (cmd.isWriteCommand    (), "isWriteCommand _projects");

  cmd.command = "_tags";
  t.ok    (cmd.isReadOnlyCommand (), "not isReadOnlyCommand _tags");
  t.notok (cmd.isWriteCommand    (), "isWriteCommand _tags");

  cmd.command = "add";
  t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand add");
  t.ok    (cmd.isWriteCommand    (), "isWriteCommand add");

  cmd.command = "log";
  t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand log");
  t.ok    (cmd.isWriteCommand    (), "isWriteCommand log");

  cmd.command = "append";
  t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand append");
  t.ok    (cmd.isWriteCommand    (), "isWriteCommand append");

  cmd.command = "annotate";
  t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand annotate");
  t.ok    (cmd.isWriteCommand    (), "isWriteCommand annotate");

  cmd.command = "delete";
  t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand delete");
  t.ok    (cmd.isWriteCommand    (), "isWriteCommand delete");

  cmd.command = "done";
  t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand done");
  t.ok    (cmd.isWriteCommand    (), "isWriteCommand done");

  cmd.command = "duplicate";
  t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand duplicate");
  t.ok    (cmd.isWriteCommand    (), "isWriteCommand duplicate");

  cmd.command = "edit";
  t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand edit");
  t.ok    (cmd.isWriteCommand    (), "isWriteCommand edit");

  cmd.command = "import";
  t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand import");
  t.ok    (cmd.isWriteCommand    (), "isWriteCommand import");

  cmd.command = "start";
  t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand start");
  t.ok    (cmd.isWriteCommand    (), "isWriteCommand start");

  cmd.command = "stop";
  t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand stop");
  t.ok    (cmd.isWriteCommand    (), "isWriteCommand stop");

  cmd.command = "undo";
  t.notok (cmd.isReadOnlyCommand (), "not isReadOnlyCommand undo");
  t.ok    (cmd.isWriteCommand    (), "isWriteCommand undo");

  t.ok (cmd.valid ("annotate"), "Cmd::valid annotate");
  t.ok (cmd.valid ("annotat"),  "Cmd::valid annotat");
  t.ok (cmd.valid ("annota"),   "Cmd::valid annota");
  t.ok (cmd.valid ("annot"),    "Cmd::valid annot");
  t.ok (cmd.valid ("anno"),     "Cmd::valid anno");
  t.ok (cmd.valid ("ann"),      "Cmd::valid ann");
  t.ok (cmd.valid ("an"),       "Cmd::valid an");

  t.ok (cmd.valid ("ANNOTATE"), "Cmd::valid ANNOTATE");
  t.ok (cmd.valid ("ANNOTAT"),  "Cmd::valid ANNOTAT");
  t.ok (cmd.valid ("ANNOTA"),   "Cmd::valid ANNOTA");
  t.ok (cmd.valid ("ANNOT"),    "Cmd::valid ANNOT");
  t.ok (cmd.valid ("ANNO"),     "Cmd::valid ANNO");
  t.ok (cmd.valid ("ANN"),      "Cmd::valid ANN");
  t.ok (cmd.valid ("AN"),       "Cmd::valid AN");

  t.ok    (cmd.validCustom ("foo"), "Cmd::validCustom foo");
  t.notok (cmd.validCustom ("bar"), "Cmd::validCustom bar -> fail");

  bool good = true;
  try { cmd.parse ("a"); } catch (...) { good = false; }
  t.notok (good, "Cmd::parse a -> fail");

  good = true;
  try { cmd.parse ("add"); } catch (...) { good = false; }
  t.ok (good, "Cmd::parse add");

  return 0;
}