mirror of
git://git.psyc.eu/libpsyc
synced 2024-08-15 03:19:02 +00:00
list rendering
This commit is contained in:
parent
1a0b28003d
commit
a252040c62
5 changed files with 198 additions and 39 deletions
|
@ -7,11 +7,9 @@
|
|||
#define myUNI "psyc://10.100.1000/~ludwig"
|
||||
|
||||
/* example renderer generating a presence packet */
|
||||
int testPresence(const char *avail, int availlen, const char *desc, int desclen, const char *rendered)
|
||||
int testPresence(const char *avail, int availlen, const char *desc, int desclen, const char *rendered, uint8_t verbose)
|
||||
{
|
||||
psycModifier routing[] = {
|
||||
// psyc_newModifier2(C_GLYPH_OPERATOR_SET, PSYC_C2ARG("_source"), PSYC_C2ARG(myUNI),
|
||||
// PSYC_MODIFIER_ROUTING),
|
||||
psyc_newModifier2(C_GLYPH_OPERATOR_SET, PSYC_C2ARG("_context"), PSYC_C2ARG(myUNI),
|
||||
PSYC_MODIFIER_ROUTING),
|
||||
};
|
||||
|
@ -19,9 +17,9 @@ int testPresence(const char *avail, int availlen, const char *desc, int desclen,
|
|||
psycModifier entity[] = {
|
||||
// presence is to be assigned permanently in distributed state
|
||||
psyc_newModifier2(C_GLYPH_OPERATOR_ASSIGN, PSYC_C2ARG("_degree_availability"),
|
||||
avail, availlen, PSYC_PACKET_CHECK_LENGTH),
|
||||
avail, availlen, PSYC_MODIFIER_CHECK_LENGTH),
|
||||
psyc_newModifier2(C_GLYPH_OPERATOR_ASSIGN, PSYC_C2ARG("_description_presence"),
|
||||
desc, desclen, PSYC_PACKET_CHECK_LENGTH),
|
||||
desc, desclen, PSYC_MODIFIER_CHECK_LENGTH),
|
||||
};
|
||||
|
||||
psycPacket packet = psyc_newPacket2(routing, PSYC_NUM_ELEM(routing),
|
||||
|
@ -33,18 +31,86 @@ int testPresence(const char *avail, int availlen, const char *desc, int desclen,
|
|||
|
||||
char buffer[512];
|
||||
psyc_render(&packet, buffer, sizeof(buffer));
|
||||
// write(0, buffer, packet.length);
|
||||
if (verbose)
|
||||
write(0, buffer, packet.length);
|
||||
return strncmp(rendered, buffer, packet.length);
|
||||
}
|
||||
|
||||
int main() {
|
||||
int rc = testPresence(PSYC_C2ARG("_here"), PSYC_C2ARG("I'm omnipresent right now"), "\
|
||||
int testList(const char *rendered, uint8_t verbose)
|
||||
{
|
||||
psycModifier routing[] = {
|
||||
psyc_newModifier2(C_GLYPH_OPERATOR_SET, PSYC_C2ARG("_source"), PSYC_C2ARG(myUNI),
|
||||
PSYC_MODIFIER_ROUTING),
|
||||
psyc_newModifier2(C_GLYPH_OPERATOR_SET, PSYC_C2ARG("_context"), PSYC_C2ARG(myUNI),
|
||||
PSYC_MODIFIER_ROUTING),
|
||||
};
|
||||
|
||||
psycString elems_text[] = {
|
||||
PSYC_C2STR("foo"),
|
||||
PSYC_C2STR("bar"),
|
||||
PSYC_C2STR("baz"),
|
||||
};
|
||||
|
||||
psycString elems_bin[] = {
|
||||
PSYC_C2STR("foo"),
|
||||
PSYC_C2STR("b|r"),
|
||||
PSYC_C2STR("baz\nqux"),
|
||||
};
|
||||
|
||||
psycList list_text, list_bin;
|
||||
list_text = psyc_newList(elems_text, PSYC_NUM_ELEM(elems_text), PSYC_LIST_CHECK_LENGTH);
|
||||
list_bin = psyc_newList(elems_bin, PSYC_NUM_ELEM(elems_bin), PSYC_LIST_CHECK_LENGTH);
|
||||
|
||||
char buf_text[32], buf_bin[32];
|
||||
psyc_renderList(&list_text, buf_text, sizeof(buf_text));
|
||||
psyc_renderList(&list_bin, buf_bin, sizeof(buf_bin));
|
||||
|
||||
psycModifier entity[] = {
|
||||
// presence is to be assigned permanently in distributed state
|
||||
psyc_newModifier2(C_GLYPH_OPERATOR_SET, PSYC_C2ARG("_list_text"),
|
||||
buf_text, list_text.length, list_text.flag),
|
||||
psyc_newModifier2(C_GLYPH_OPERATOR_SET, PSYC_C2ARG("_list_binary"),
|
||||
buf_bin, list_bin.length, list_text.flag),
|
||||
};
|
||||
|
||||
psycPacket packet = psyc_newPacket2(routing, PSYC_NUM_ELEM(routing),
|
||||
entity, PSYC_NUM_ELEM(entity),
|
||||
PSYC_C2ARG("_test_list"),
|
||||
PSYC_C2ARG("list test"),
|
||||
PSYC_PACKET_CHECK_LENGTH);
|
||||
|
||||
char buffer[512];
|
||||
psyc_render(&packet, buffer, sizeof(buffer));
|
||||
if (verbose)
|
||||
write(0, buffer, packet.length);
|
||||
return strncmp(rendered, buffer, packet.length);
|
||||
}
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
uint8_t verbose = argc > 1;
|
||||
|
||||
if (testPresence(PSYC_C2ARG("_here"), PSYC_C2ARG("I'm omnipresent right now"), "\
|
||||
:_context\t" myUNI "\n\
|
||||
\n\
|
||||
=_degree_availability\t_here\n\
|
||||
=_description_presence\tI'm omnipresent right now\n\
|
||||
_notice_presence\n\
|
||||
|\n");
|
||||
unless (rc) puts("psyc_render passed the test.");
|
||||
return rc;
|
||||
|\n", verbose))
|
||||
return -1;
|
||||
|
||||
if (testList("\
|
||||
:_source psyc://10.100.1000/~ludwig\n\
|
||||
:_context psyc://10.100.1000/~ludwig\n\
|
||||
\n\
|
||||
:_list_text |foo|bar|baz\n\
|
||||
:_list_binary 21 3 foo|3 b|r|7 baz\n\
|
||||
qux\n\
|
||||
_test_list\n\
|
||||
list test\n\
|
||||
|\n", verbose))
|
||||
return -2;
|
||||
|
||||
puts("psyc_render passed all tests.");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue