Esempio n. 1
0
void
SuitePSList::check_ps_list(void)
{
	/* get the list */
	AnListCtrl *pslist;
	pslist = dynamic_cast<AnListCtrl*>
	    //(mainFrame->FindWindow(ID_PSLIST));
	    (wxWindow::FindWindowById(ID_PSLIST));
	CPPUNIT_ASSERT_MESSAGE("Can't find process list", pslist != NULL);

	/* check the content */
	long item_id = -1;
	fprintf(stderr, "process list:\n");
	while ((item_id = pslist->GetNextItem(item_id)) != -1) {
		fprintf(stderr, "process: ");
		for (int i=0; i<7; i++) {
			fprintf(stderr, "%ls ",
			    getListValue(pslist, item_id, i).c_str());
		}
		fprintf(stderr, "\n");
	}

	/* test process 1 */
	long proc1 = getProcessRow(pslist, wxT("2000_1.sh"));

	CPPUNIT_ASSERT_MESSAGE("process 1 does not exist", proc1 != -1);
	CPPUNIT_ASSERT_MESSAGE("process 1 invalid user",
	    getListValue(pslist, proc1, 1).Cmp(wxT("u2000")) == 0);
	CPPUNIT_ASSERT_MESSAGE("process 1 has pg id",
	    getListValue(pslist, proc1, 5).Cmp(wxT("")) == 0);

	pslist->SetItemState(proc1,
	    wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);

	assertTextValue(ID_LABEL_PS_COMMAND, "/bin/sh /tmp/2000_1.sh");
	assertTextValue(ID_LABEL_PS_UID, "u2000");
	assertTextValue(ID_LABEL_PS_GID, "users");
	assertTextValue(ID_LABEL_PS_PGID, "no");
	assertTextValue(ID_LABEL_PS_PROCESSPATH, "/tmp/2000_1.sh");
	assertTextValue(ID_LABEL_PS_USERPATH, "/tmp/2000_1.sh");
	assertTextValue(ID_LABEL_PS_ADMINPATH, "/tmp/2000_1.sh");

	assertRuleValue(ID_TEXT_PS_ALF_USER,  "2: ");
	assertRuleValue(ID_TEXT_PS_ALF_ADMIN, "2: ");
	assertRuleValue(ID_TEXT_PS_SB_USER,   "6: ");
	assertRuleValue(ID_TEXT_PS_SB_ADMIN,  "8: ");
	assertRuleValue(ID_TEXT_PS_CTX_USER,  "13: ");
	assertRuleValue(ID_TEXT_PS_CTX_ADMIN, "11: ");
	pslist->SetItemState(proc1, 0, wxLIST_STATE_SELECTED);

	/* test process 2 */
	long proc2 = getProcessRow(pslist, wxT("2000_2.sh"));
	CPPUNIT_ASSERT_MESSAGE("process 2 does not exist", proc2 != -1);
	CPPUNIT_ASSERT_MESSAGE("process 2 invalid user",
	    getListValue(pslist, proc2, 1).Cmp(wxT("u2000")) == 0);
	CPPUNIT_ASSERT_MESSAGE("process 2 no playground id",
	    getListValue(pslist, proc2, 5).Cmp(wxT("")) != 0);

	pslist->SetItemState(proc2,
	    wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);

	assertTextValue(ID_LABEL_PS_COMMAND, "/bin/sh /tmp/2000_2.sh");
	assertTextValue(ID_LABEL_PS_UID, "u2000");
	assertTextValue(ID_LABEL_PS_GID, "users");
	assertTextValue(ID_LABEL_PS_PGID, "yes (ID: 1)");
	assertTextValue(ID_LABEL_PS_PROCESSPATH, "/tmp/2000_2.sh");
	assertTextValue(ID_LABEL_PS_USERPATH, "/tmp/2000_2.sh");
	assertTextValue(ID_LABEL_PS_ADMINPATH, "/tmp/2000_2.sh");

	assertRuleValue(ID_TEXT_PS_ALF_USER,  "4: ");
	assertRuleValue(ID_TEXT_PS_ALF_ADMIN, "3: ");
	assertRuleValue(ID_TEXT_PS_SB_USER,   "10: ");
	assertRuleValue(ID_TEXT_PS_SB_ADMIN,  "16: ");
	assertRuleValue(ID_TEXT_PS_CTX_USER,  "12: ");
	assertRuleValue(ID_TEXT_PS_CTX_ADMIN, "14: ");

	pslist->SetItemState(proc2, 0, wxLIST_STATE_SELECTED);
}
// TODO: UniqueKeywordValue() is not currently supported.
//       If it never will be, this test code should be removed.
void PluralRulesTest::testGetUniqueKeywordValue() {
  assertRuleValue("n is 1", 1);
  assertRuleValue("n in 2..2", 2);
  assertRuleValue("n within 2..2", 2);
  assertRuleValue("n in 3..4", UPLRULES_NO_UNIQUE_VALUE);
  assertRuleValue("n within 3..4", UPLRULES_NO_UNIQUE_VALUE);
  assertRuleValue("n is 2 or n is 2", 2);
  assertRuleValue("n is 2 and n is 2", 2);
  assertRuleValue("n is 2 or n is 3", UPLRULES_NO_UNIQUE_VALUE);
  assertRuleValue("n is 2 and n is 3", UPLRULES_NO_UNIQUE_VALUE);
  assertRuleValue("n is 2 or n in 2..3", UPLRULES_NO_UNIQUE_VALUE);
  assertRuleValue("n is 2 and n in 2..3", 2);
  assertRuleKeyValue("a: n is 1", "not_defined", UPLRULES_NO_UNIQUE_VALUE); // key not defined
  assertRuleKeyValue("a: n is 1", "other", UPLRULES_NO_UNIQUE_VALUE); // key matches default rule
}