summaryrefslogtreecommitdiff
path: root/cesar/cp2/cco
diff options
context:
space:
mode:
authorboure2008-05-26 07:27:23 +0000
committerboure2008-05-26 07:27:23 +0000
commit8681d712f20cd8f1c9f6798b1ad62b3f3269cc74 (patch)
tree381b6873d4fcef647396caa5cd817d5d76643ff5 /cesar/cp2/cco
parent05be90b8689c5b61232ec77b9cba82482468e273 (diff)
add prio_heap_test
git-svn-id: svn+ssh://pessac/svn/cesar/trunk@2093 017c9cb6-072f-447c-8318-d5b54f68fe89
Diffstat (limited to 'cesar/cp2/cco')
-rw-r--r--cesar/cp2/cco/bw/test/src/bw_prio_heap_test.c290
1 files changed, 290 insertions, 0 deletions
diff --git a/cesar/cp2/cco/bw/test/src/bw_prio_heap_test.c b/cesar/cp2/cco/bw/test/src/bw_prio_heap_test.c
new file mode 100644
index 0000000000..98a3aed955
--- /dev/null
+++ b/cesar/cp2/cco/bw/test/src/bw_prio_heap_test.c
@@ -0,0 +1,290 @@
+ /* Cesar project {{{
+ *
+ * Copyright (C) 2008 Spidcom
+ *
+ * <<<Licence>>>
+ *
+ * }}} */
+/**
+ * \file bw.c
+ * \brief bandwidth manager module
+ * \ingroup cp2_cco_bw
+ *
+ * Control the schedule of the becon period
+ */
+#include "common/std.h"
+
+#include "lib/blk.h"
+#include "lib/test.h"
+#include "string.h"
+
+#include "lib/bitstream.h"
+
+#include "cp2/cco/bw/bw.h"
+#include "cp2/cco/bw/bw_prio_heap.h"
+
+#include "cp2/conn/conn.h"
+#include "cp2/cp.h"
+#include "cp2/inc/context.h"
+
+#include "lib/list.h"
+
+/**
+ * Test the initialisation of the prio heaps
+ * \param test test paramters
+ *
+ *
+ */
+
+void
+test_case_bw_prio_heap_init (test_t test)
+{
+
+ cp_cco_bw_prio_heap_t *heap[4];
+ cp_t cp;
+
+ test_case_begin (test, "Init prio heaps");
+
+ cp_cco_bw_init(&cp);
+
+ heap[3] = PARENT_OF(cp_cco_bw_prio_heap_t,
+ node,
+ list_begin(&cp.bw.prio_heap));
+ heap[2] = PARENT_OF(cp_cco_bw_prio_heap_t,
+ node,
+ list_next(&heap[3]->node));
+ heap[1] = PARENT_OF(cp_cco_bw_prio_heap_t,
+ node,
+ list_next(&heap[2]->node));
+ heap[0] = PARENT_OF(cp_cco_bw_prio_heap_t,
+ node,
+ list_next(&heap[1]->node));
+
+ test_begin(test,"Init prio heaps"){
+ test_fail_if(heap[3]->nb_conn_allocated != 0,
+ "There shouldn't be any connection allocated") ;
+ test_fail_if(heap[3]->nb_conn != 0,
+ "There shouldn't be any connection");
+ test_fail_if(heap[3]->table_priority_level != 3,
+ "The priority is false");
+ test_fail_if(heap[1]->table_priority_level != 1,
+ "The heaps aren't well linked");
+ }
+ test_end;
+}
+/**
+ * Test the initialisation of the prio heaps
+ * \param test test paramters
+ *
+ *
+ */
+
+void
+test_case_bw_prio_heap_uninit (test_t test)
+{
+
+ //cp_cco_bw_prio_heap_t *heap[4];
+ cp_t cp;
+
+ test_case_begin (test, "Init prio heaps");
+
+ cp_cco_bw_init(&cp);
+ cp_cco_bw_uninit(&cp);
+
+ test_begin(test,"Init prio heaps"){
+ test_fail_if(!list_empty(&cp.bw.prio_heap),
+ "The list should be empty ") ;
+ }
+ test_end;
+}
+
+void
+test_case_bw_prio_heap_add_conns (test_t test)
+{
+
+ cp_cco_bw_prio_heap_t *heap[4];
+ cp_t cp;
+ u8 cid[3][4];
+ u8 prio[4];
+ int i;
+ int j;
+
+ cp_cco_bw_init(&cp);
+
+// cp_cco_bw_prio_heap_add_conn(&cp,1,1);
+
+ heap[3] = PARENT_OF(cp_cco_bw_prio_heap_t,
+ node,
+ list_begin(&cp.bw.prio_heap));
+ heap[2] = PARENT_OF(cp_cco_bw_prio_heap_t,
+ node,
+ list_next(&heap[3]->node));
+ heap[1] = PARENT_OF(cp_cco_bw_prio_heap_t,
+ node,
+ list_next(&heap[2]->node));
+ heap[0] = PARENT_OF(cp_cco_bw_prio_heap_t,
+ node,
+ list_next(&heap[1]->node));
+
+ test_case_begin (test, "Add connections into prio heaps");
+
+ for(i=0;i<4;i++){
+ for(j=0;j<3;j++)
+ cid[j][i] = (i*10)+j;
+ prio[i] = i;
+ }
+ for(i=0;i<4;i++)
+ for(j=0;j<3;j++)
+ cp_cco_bw_prio_heap_add_conn(&cp,cid[j][i],prio[i]);
+
+ test_begin(test,"add connection into prio heaps"){
+ test_fail_if(PARENT_OF(cp_cco_bw_prio_conn_t,node,list_begin(&heap[3]->conns))->cid != 30,
+ "failure add : cid prio 3 conn 0");
+ test_fail_if(PARENT_OF(cp_cco_bw_prio_conn_t,node,list_next(list_begin(&heap[2]->conns)))->cid != 21,
+ "failure add :cid prio 2 conn 1");
+ test_fail_if(PARENT_OF(cp_cco_bw_prio_conn_t,node,list_next(list_next(list_begin(&heap[1]->conns))))->cid != 12,
+ "failure add :cid prio 1 conn 2");
+ test_fail_if(PARENT_OF(cp_cco_bw_prio_conn_t,node,list_next(list_next(list_begin(&heap[0]->conns))))->cid != 2,
+ "failure add :cid prio 0 conn 2");
+ }
+ test_end;
+}
+
+void
+test_case_bw_prio_heap_del_conns (test_t test){
+
+ /* cp_cco_bw_prio_heap_t *prio_heap;
+ cp_cco_bw_prio_heap_t *heaps[4];
+
+ u8 cid[3][4];
+ u8 prio[4];
+ int i;
+ int j;
+
+ ctx = (cp_t*)blk_alloc();
+ ctx = (cp_t*)blk_alloc();
+ prio_heap = cp_cco_bw_prio_heap_init();
+
+ heaps[3] = prio_heap;
+ heaps[2] = prio_heap->next_heap;
+ heaps[1] = prio_heap->next_heap->next_heap;
+ heaps[0] = prio_heap->next_heap->next_heap->next_heap;
+
+ for(i=0;i<4;i++){
+ for(j=0;j<3;j++)
+ cid[j][i] = (i*10)+j;
+ prio[i] = i;
+ }
+ for(i=0;i<4;i++)
+ for(j=0;j<3;j++)
+ cp_cco_bw_prio_heap_add_conn(prio_heap,cid[j][i],prio[i]);
+
+ test_case_begin (test, "\nDel connections into prio heaps\n\n");
+
+ //Del all add 1st
+ cp_cco_bw_prio_heap_del_conn(prio_heap,30);
+ cp_cco_bw_prio_heap_del_conn(prio_heap,31);
+ cp_cco_bw_prio_heap_del_conn(prio_heap,32);
+ cp_cco_bw_prio_heap_add_conn(prio_heap,35,3);
+
+ //Add last remove all firsts
+ cp_cco_bw_prio_heap_add_conn(prio_heap,25,2);
+ cp_cco_bw_prio_heap_del_conn(prio_heap,20);
+ cp_cco_bw_prio_heap_del_conn(prio_heap,21);
+ cp_cco_bw_prio_heap_del_conn(prio_heap,22);
+
+ //Del Last add Last
+ cp_cco_bw_prio_heap_del_conn(prio_heap,12);
+ cp_cco_bw_prio_heap_add_conn(prio_heap,12,1);
+
+ //Del first add last
+ cp_cco_bw_prio_heap_del_conn(prio_heap,0);
+ cp_cco_bw_prio_heap_add_conn(prio_heap,0,0);
+
+
+ test_begin(test,"Del connection into prio heaps"){
+ test_fail_if(heaps[3]->first_conn->cid != 35,
+ "failure remove all conn + add 1st");
+ test_fail_if(heaps[2]->first_conn->cid != 25,
+ "failure add 1 remove all");
+*/ /* test_fail_if(heaps[1]->first_conn->next_conn->next_conn->cid != 12,
+ "failure remove last add last");
+ test_fail_if(heaps[0]->first_conn->next_conn->next_conn->cid != 0,
+ "failure remove first add last");*/
+ //}
+ //test_end;
+}
+
+void
+test_case_bw_prio_get_most_prior_conn (test_t test){
+
+ /* cp_cco_bw_prio_heap_t *prio_heap;
+ cp_cco_bw_prio_heap_t *heaps[4];
+
+ u8 most_prior_conn[5];
+
+ prio_heap = cp_cco_bw_prio_heap_init();
+
+ heaps[3] = prio_heap;
+ heaps[2] = prio_heap->next_heap;
+ heaps[1] = prio_heap->next_heap->next_heap;
+ heaps[0] = prio_heap->next_heap->next_heap->next_heap;
+
+ test_case_begin(test, "\nGet most prior conn");
+
+ most_prior_conn[0] = cp_cco_bw_prio_heap_get_most_prior_conn(prio_heap);
+
+ cp_cco_bw_prio_heap_add_conn(prio_heap,1,0);
+
+ most_prior_conn[1] = cp_cco_bw_prio_heap_get_most_prior_conn(prio_heap);
+
+ cp_cco_bw_prio_heap_add_conn(prio_heap,2,0);
+ cp_cco_bw_prio_heap_add_conn(prio_heap,3,0);
+
+ most_prior_conn[2] = cp_cco_bw_prio_heap_get_most_prior_conn(prio_heap);
+
+ cp_cco_bw_prio_heap_add_conn(prio_heap,10,1);
+ cp_cco_bw_prio_heap_add_conn(prio_heap,20,2);
+ cp_cco_bw_prio_heap_add_conn(prio_heap,21,2);
+
+ most_prior_conn[3] = cp_cco_bw_prio_heap_get_most_prior_conn(prio_heap);
+
+ cp_cco_bw_prio_heap_add_conn(prio_heap,30,3);
+ cp_cco_bw_prio_heap_add_conn(prio_heap,31,3);
+ cp_cco_bw_prio_heap_add_conn(prio_heap,32,3);
+
+ most_prior_conn[4] = cp_cco_bw_prio_heap_get_most_prior_conn(prio_heap);
+
+ test_begin(test,"Get most prior conn")
+ {
+ */ /* test_fail_if(most_prior_conn[0] != NULL,
+ "There shouldn't be any connection"); */
+ /* test_fail_if(most_prior_conn[1] != 1,
+ "Only one connection");
+ test_fail_if(most_prior_conn[2] != 1,
+ "First conn not prior");
+ test_fail_if(most_prior_conn[3] != 20,
+ "Priority 2 first element shoud be prior");
+ test_fail_if(most_prior_conn[4] != 30,
+ "Priority 3 first element shoul be prior");
+ }
+ test_end;*/
+}
+
+int
+main (void){
+ test_t test;
+
+ test_init(test, 0, NULL);
+
+ test_case_bw_prio_heap_init (test);
+ test_case_bw_prio_heap_uninit (test);
+ test_case_bw_prio_heap_add_conns (test);
+ // test_case_bw_prio_heap_del_conns (test);
+ // test_case_bw_prio_get_most_prior_conn (test);
+
+ test_result (test);
+ HAL_PLATFORM_EXIT (test_nb_failed (test) == 0 ? 0 : 1);
+ return test_nb_failed (test) == 0 ? 0 : 1;
+
+}