added qse_raddic_addattr(), qse_raddic_deleteattrbyname(), qes_raddic_deleteattrbyvalue(), qse_raddic_findattrbyname(), qse_raddic_findattrbyvalue()

This commit is contained in:
2017-12-11 10:02:49 +00:00
parent c9bbd3c993
commit 80ade41ea9
3 changed files with 479 additions and 84 deletions

View File

@ -14,9 +14,10 @@
#define _verify(test) do { int r=test(); tests_run++; if(r) return r; } while(0)
static int test1 ()
{
{
qse_raddic_t* dic;
qse_raddic_vendor_t* vendor, * v;
qse_raddic_attr_t* attr, * a;
int i;
dic = qse_raddic_open (QSE_MMGR_GETDFL(), 0);
@ -47,7 +48,7 @@ static int test1 ()
#define COUNT1 600
#define COUNT2 700
for (i = 0; i < COUNT1; i++)
for (i = 1; i < COUNT1; i++)
{
qse_char_t tmp[64];
qse_strxfmt(tmp, QSE_COUNTOF(tmp), QSE_T("test%d"), i);
@ -57,7 +58,7 @@ static int test1 ()
_assert (qse_strcasecmp(vendor->name, tmp) == 0, "wrong vendor name");
}
for (i = 0; i < COUNT1; i++)
for (i = 1; i < COUNT1; i++)
{
qse_char_t tmp[64];
qse_strxfmt(tmp, QSE_COUNTOF(tmp), QSE_T("test%d"), i);
@ -67,7 +68,7 @@ static int test1 ()
_assert (qse_strcasecmp(vendor->name, tmp) == 0, "wrong vendor name");
}
for (i = 0; i < COUNT1; i++)
for (i = 1; i < COUNT1; i++)
{
qse_char_t tmp[64];
qse_strxfmt(tmp, QSE_COUNTOF(tmp), QSE_T("test%d"), i);
@ -120,7 +121,7 @@ static int test1 ()
}
}
for (i = 0; i < COUNT1; i++)
for (i = 1; i < COUNT1; i++)
{
qse_char_t tmp[64];
int n;
@ -130,7 +131,7 @@ static int test1 ()
_assert (n == 0, "unable to delete a vendor");
}
for (i = 0; i < COUNT1; i++)
for (i = 1; i < COUNT1; i++)
{
qse_char_t tmp[64];
qse_strxfmt(tmp, QSE_COUNTOF(tmp), QSE_T("test%d"), i);
@ -146,7 +147,7 @@ static int test1 ()
_assert (v != QSE_NULL && v->vendorpec == i, "unable to add a vendor");
}
for (i = 0; i < COUNT1; i++)
for (i = 1; i < COUNT1; i++)
{
int n;
n = qse_raddic_deletevendorbyvalue (dic, i);
@ -161,7 +162,145 @@ static int test1 ()
n = qse_raddic_deletevendorbyvalue (dic, i);
_assert (n <= -1, "erroreneously successful vendor deletion by value");
}
qse_raddic_close (dic);
return 0;
}
static int test2 ()
{
qse_raddic_t* dic;
qse_raddic_attr_t* attr, * v;
qse_raddic_attr_flags_t f;
int i, j;
dic = qse_raddic_open (QSE_MMGR_GETDFL(), 0);
_assert (dic != QSE_NULL, "unable to create a radius dictionary");
for (j = 0; j < 100; j++)
{
for (i = 0; i <= 255; i++)
{
qse_char_t tmp[64];
qse_strxfmt(tmp, QSE_COUNTOF(tmp), QSE_T("test%d-%d"), j, i);
attr = qse_raddic_addattr (dic, tmp, j, QSE_RADDIC_ATTR_TYPE_STRING, i, &f);
_assert (attr != QSE_NULL, "unable to add an attribute");
_assert (attr->attr == QSE_RADDIC_ATTR_MAKE(j, i), "wrong attr value");
_assert (qse_strcasecmp(attr->name, tmp) == 0, "wrong attr name");
}
}
for (j = 0; j < 100; j++)
{
for (i = 0; i <= 255; i++)
{
qse_char_t tmp[64];
qse_strxfmt(tmp, QSE_COUNTOF(tmp), QSE_T("test%d-%d"), j, i);
attr = qse_raddic_findattrbyname (dic, tmp);
_assert (attr != QSE_NULL, "unable to add an attribute");
_assert (attr->attr == QSE_RADDIC_ATTR_MAKE(j, i), "wrong attr value");
_assert (qse_strcasecmp(attr->name, tmp) == 0, "wrong attr name");
}
}
#if 0
for (i = 0; i < COUNT1; i++)
{
qse_char_t tmp[64];
qse_strxfmt(tmp, QSE_COUNTOF(tmp), QSE_T("test%d"), i);
attr = qse_raddic_findattrbyvalue (dic, i);
_assert (attr != QSE_NULL, "unable to find an attribute");
_assert (attr->attr == i, "wrong attr value");
_assert (qse_strcasecmp(attr->name, tmp) == 0, "wrong attr name");
}
for (i = COUNT1; i < COUNT2; i++)
{
qse_char_t tmp[64];
qse_strxfmt(tmp, QSE_COUNTOF(tmp), QSE_T("test%d"), i);
attr = qse_raddic_addattr (dic, tmp, COUNT1);
// insert different items with the same value
_assert (attr != QSE_NULL, "unable to add an attribute");
_assert (attr->attr == COUNT1, "wrong attr value");
_assert (qse_strcasecmp(attr->name, tmp) == 0, "wrong attr name");
v = qse_raddic_findattrbyvalue (dic, COUNT1);
_assert (attr == v, "unable to find a last added attr by value");
}
for (i = COUNT1; i < COUNT2 - 1; i++)
{
qse_char_t tmp[64];
int n;
qse_strxfmt(tmp, QSE_COUNTOF(tmp), QSE_T("test%d"), i);
n = qse_raddic_deleteattrbyname (dic, tmp);
_assert (n == 0, "unable to delete an attribute");
v = qse_raddic_findattrbyname (dic, tmp);
_assert (v == QSE_NULL, "attr found errorenously");
if (i == COUNT2 - 1)
{
v = qse_raddic_findattrbyvalue (dic, COUNT1);
_assert (v == QSE_NULL, "attr of COUNT1 found errorenously");
}
else
{
qse_strxfmt(tmp, QSE_COUNTOF(tmp), QSE_T("test%d"), i + 1);
v = qse_raddic_findattrbyname (dic, tmp);
_assert (v != QSE_NULL && v->attr == COUNT1 && qse_strcasecmp(tmp, v->name) == 0, "unable to find an expected attr");
v = qse_raddic_findattrbyvalue (dic, COUNT1);
_assert (v != QSE_NULL && v->attr == COUNT1, "unable to find the attr of COUNT1");
}
}
for (i = 0; i < COUNT1; i++)
{
qse_char_t tmp[64];
int n;
qse_strxfmt(tmp, QSE_COUNTOF(tmp), QSE_T("test%d"), i);
n = qse_raddic_deleteattrbyname (dic, tmp);
_assert (n == 0, "unable to delete an attribute");
}
for (i = 0; i < COUNT1; i++)
{
qse_char_t tmp[64];
qse_strxfmt(tmp, QSE_COUNTOF(tmp), QSE_T("test%d"), i);
v = qse_raddic_addattr (dic, tmp, i);
_assert (v != QSE_NULL && v->attr == i, "unable to add an attribute");
qse_strxfmt(tmp, QSE_COUNTOF(tmp), QSE_T("testx%d"), i);
v = qse_raddic_addattr (dic, tmp, i);
_assert (v != QSE_NULL && v->attr == i, "unable to add an attribute");
qse_strxfmt(tmp, QSE_COUNTOF(tmp), QSE_T("testy%d"), i);
v = qse_raddic_addattr (dic, tmp, i);
_assert (v != QSE_NULL && v->attr == i, "unable to add an attribute");
}
for (i = 0; i < COUNT1; i++)
{
int n;
n = qse_raddic_deleteattrbyvalue (dic, i);
_assert (n == 0, "unable to delete an attribute by value");
n = qse_raddic_deleteattrbyvalue (dic, i);
_assert (n == 0, "unable to delete an attribute by value");
n = qse_raddic_deleteattrbyvalue (dic, i);
_assert (n == 0, "unable to delete an attribute by value");
n = qse_raddic_deleteattrbyvalue (dic, i);
_assert (n <= -1, "erroreneously successful attr deletion by value");
}
#endif
qse_raddic_close (dic);
return 0;
}
@ -170,6 +309,7 @@ int main ()
{
qse_open_stdsios ();
R (test1);
R (test2);
qse_close_stdsios ();
return 0;
}