diff options
Diffstat (limited to 'tests/particle.c')
| -rw-r--r-- | tests/particle.c | 97 | 
1 files changed, 97 insertions, 0 deletions
| diff --git a/tests/particle.c b/tests/particle.c new file mode 100644 index 0000000..cc9e8d2 --- /dev/null +++ b/tests/particle.c @@ -0,0 +1,97 @@ + +#include "helper.h" + +void test_particle() +{ +    void *p; +    Eina_Accessor       *acc; +    Eiotas_Particle     *p0, *p1, *p2, *p3, *p4; + +    Eiotas_Spin *dom0 = eiotas_spin_add("dom0",10); + +    p0 = eiotas_require_particle(dom0); + +    eiotas_particle_destinations_add(p0,"dom0/room0/door0?get"); +    eiotas_particle_destinations_add(p0," dom0/room0/door0?get "); +    eiotas_particle_destinations_add(p0,"    dom0/room0/door0?get   "); +    eiotas_particle_destinations_add(p0,"dom0/room0/room1/doorx?get,door?get,dom0/room0/door0?get"); +    eiotas_particle_destinations_add(p0,"  dom0/room0/room1/doorx?get,door?get  ,  dom0/room0/door0?get "); +    eiotas_particle_destinations_add(p0," , , dom0/room0/room1/doorx?get,door?get  ,,  dom0/room0/door0?get "); + +    acc = eina_array_accessor_new(p0->dsts); +    eina_accessor_data_get(acc,0,&p); +    check_str("dom0/room0/door0?get",(char*)p,"eiotas_particle_destinations_add"); +    eina_accessor_data_get(acc,1,&p); +    check_str("dom0/room0/door0?get",(char*)p,"eiotas_particle_destinations_add"); +    eina_accessor_data_get(acc,2,&p); +    check_str("dom0/room0/door0?get",(char*)p,"eiotas_particle_destinations_add"); +    eina_accessor_data_get(acc,3,&p); +    check_str("dom0/room0/room1/doorx?get",(char*)p,"eiotas_particle_destinations_add"); +    eina_accessor_data_get(acc,4,&p); +    check_str("door?get",(char*)p,"eiotas_particle_destinations_add"); +    eina_accessor_data_get(acc,5,&p); +    check_str("dom0/room0/door0?get",(char*)p,"eiotas_particle_destinations_add"); +    eina_accessor_data_get(acc,6,&p); +    check_str("dom0/room0/room1/doorx?get",(char*)p,"eiotas_particle_destinations_add"); +    eina_accessor_data_get(acc,7,&p); +    check_str("door?get",(char*)p,"eiotas_particle_destinations_add"); +    eina_accessor_data_get(acc,8,&p); +    check_str("dom0/room0/door0?get",(char*)p,"eiotas_particle_destinations_add"); +    eina_accessor_data_get(acc,9,&p); +    check_str("dom0/room0/room1/doorx?get",(char*)p,"eiotas_particle_destinations_add"); +    eina_accessor_data_get(acc,10,&p); +    check_str("door?get",(char*)p,"eiotas_particle_destinations_add"); +    eina_accessor_data_get(acc,11,&p); +    check_str("dom0/room0/door0?get",(char*)p,"eiotas_particle_destinations_add"); +    check_cond((eina_accessor_data_get(acc,12,&p)==EINA_FALSE),"!!!!! eina_accessor_data_get should fail");; + +    eiotas_particle_link_fields_set(p0," key2,key9  ,  key1,key10  "); +    acc = eina_array_accessor_new(p0->link_fields); +    eina_accessor_data_get(acc,0,&p); +    check_str("key2",(char*)p,"eiotas_particle_link_fields_set"); +    eina_accessor_data_get(acc,1,&p); +    check_str("key9",(char*)p,"eiotas_particle_link_fields_set"); +    eina_accessor_data_get(acc,2,&p); +    check_str("key1",(char*)p,"eiotas_particle_link_fields_set"); +    eina_accessor_data_get(acc,3,&p); +    check_str("key10",(char*)p,"eiotas_particle_link_fields_set"); +    check_cond((eina_accessor_data_get(acc,4,&p)==EINA_FALSE),"!!!!! eina_accessor_data_get should fail");; + + +    check_cond((p0->link_value==NULL),"!!!!! link_value should be NULL");; + +    eiotas_particle_data_set(p0,"key0","val0"); +    check_cond((p0->link_value==NULL),"!!!!! link_value should be NULL");; +    eiotas_particle_data_set(p0,"key1","val1"); +    check_str((char*)p0->link_value,"val1","!!!!! link_value is wrong");; +    eiotas_particle_data_set(p0,"key2","val2"); +    check_str((char*)p0->link_value,"val2val1","!!!!! link_value is wrong");; +    eiotas_particle_data_set(p0,"key3","val3"); +    check_str((char*)p0->link_value,"val2val1","!!!!! link_value is wrong");; + +    if(strcmp(eiotas_particle_data_get(p0,"key0"),"val0")!=0) fprintf(stderr,"ERROR\n"); +    if(strcmp(eiotas_particle_data_get(p0,"key1"),"val1")!=0) fprintf(stderr,"ERROR\n"); +    if(strcmp(eiotas_particle_data_get(p0,"key2"),"val2")!=0) fprintf(stderr,"ERROR\n"); +    if(strcmp(eiotas_particle_data_get(p0,"key3"),"val3")!=0) fprintf(stderr,"ERROR\n"); + +    eiotas_particle_data_del(p0,"key0"); +    if(eiotas_particle_data_get(p0,"key0")!=NULL) fprintf(stderr,"ERROR\n"); +    check_str((char*)p0->link_value,"val2val1","!!!!! link_value is wrong");; +    eiotas_particle_data_del(p0,"key2"); +    if(eiotas_particle_data_get(p0,"key2")!=NULL) fprintf(stderr,"ERROR\n"); +    check_str((char*)p0->link_value,"val1","!!!!! link_value is wrong");; + +    p1 = eiotas_require_particle(dom0); +    p2 = eiotas_require_particle(dom0); +    p3 = eiotas_require_particle(dom0); +    p4 = eiotas_require_particle(dom0); +    eiotas_particle_merge(p0,p1); +    eiotas_particle_merge(p0,p2); +    eiotas_particle_merge(p2,p3); +    eiotas_particle_merge(p2,p4); + +    eiotas_particle_free(p0); + +    eiotas_spin_free(dom0); +} + | 
