diff --git a/android/tester-bluetooth.c b/android/tester-bluetooth.c
index 9acf999..c912d7d 100644
--- a/android/tester-bluetooth.c
+++ b/android/tester-bluetooth.c
static struct queue *list; /* List of bluetooth test cases */
+static struct step dummy_steps[] = {
+ {
+ .action = dummy_action,
+ },
+};
+static struct test_case bluetooth_init = {
+ .step = dummy_steps,
+ .title = "Bluetooth Init",
+ .step_num = get_test_case_step_num(dummy_steps),
+};
+
struct queue *get_bluetooth_tests(void)
{
list = queue_new();
+ if (!queue_push_tail(list, &bluetooth_init))
+ return NULL;
+
return list;
}
diff --git a/android/tester-main.c b/android/tester-main.c
index 8f52286..51326f5 100644
--- a/android/tester-main.c
+++ b/android/tester-main.c
NULL, read_index_list_callback, NULL, NULL);
}
+/*
+ * Check each test case step if test case expected
+ * data is set and match it with expected result.
+ */
+static bool match_data(struct step *step)
+{
+ struct test_data *data = tester_get_data();
+ const struct step *exp;
+
+ exp = queue_peek_head(data->steps);
+
+ if (!exp) {
+ /* Can occure while test passed already */
+ tester_debug("Cannot get step to match");
+ return false;
+ }
+
+ if (exp->action_result.status && (exp->action_result.status !=
+ step->action_result.status)) {
+ tester_debug("Action status don't match");
+ return false;
+ }
+ return true;
+}
+
+static void init_test_steps(struct test_data *data)
+{
+ const struct test_case *test_steps = data->test_data;
+ int i = 0;
+
+ for (i = 0; i < test_steps->step_num; i++)
+ queue_push_tail(data->steps, &(test_steps->step[i]));
+
+ tester_print("tester: Number of test steps=%d",
+ queue_length(data->steps));
+}
+
+/*
+ * Each test case step should be verified, if match with
+ * expected result tester should go to next test step.
+ */
+static void verify_step(struct step *step, queue_destroy_func_t cleanup_cb)
+{
+ struct test_data *data = tester_get_data();
+ const struct test_case *test_steps = data->test_data;
+ struct step *next_step;
+
+ tester_debug("tester: STEP[%d] check",
+ test_steps->step_num-queue_length(data->steps) + 1);
+
+ if (step && !match_data(step)) {
+ if (cleanup_cb)
+ cleanup_cb(step);
+
+ return;
+ }
+
+ queue_pop_head(data->steps);
+
+ if (cleanup_cb)
+ cleanup_cb(step);
+
+ tester_debug("tester: STEP[%d] pass",
+ test_steps->step_num-queue_length(data->steps));
+
+ if (queue_isempty(data->steps)) {
+ tester_print("tester: All steps done, passing");
+ tester_test_passed();
+
+ return;
+ }
+
+ /* goto next step action if declared in step */
+ next_step = queue_peek_head(data->steps);
+
+ if (next_step->action)
+ next_step->action();
+}
+
static bt_callbacks_t bt_callbacks = {
.size = sizeof(bt_callbacks),
.adapter_state_changed_cb = NULL,
tester_teardown_complete();
}
+void dummy_action(void)
+{
+ struct step step;
+
+ memset(&step, 0, sizeof(step));
+ step.action = dummy_action;
+
+ verify_step(&step, NULL);
+}
+
+static void generic_test_function(const void *test_data)
+{
+ struct test_data *data = tester_get_data();
+ struct step *first_step;
+
+ init_test_steps(data);
+
+ /* first step action */
+ first_step = queue_peek_head(data->steps);
+ if (!first_step->action) {
+ tester_print("tester: No initial action declared");
+ tester_test_failed();
+ return;
+ }
+ first_step->action();
+}
+
#define test_bredr(data, test_setup, test, test_teardown) \
do { \
struct test_data *user; \
static void tester_testcases_cleanup(void)
{
+ remove_bluetooth_tests();
+}
+
+static void add_bluetooth_tests(void *data, void *user_data)
+{
+ struct test_case *tc = data;
+
+ test_bredrle(tc, setup, generic_test_function, teardown);
}
int main(int argc, char *argv[])
tester_init(&argc, &argv);
- tester_add_full("Init", NULL, test_pre_setup, setup, NULL, teardown,
- test_post_teardown, 0, NULL, NULL);
+ queue_foreach(get_bluetooth_tests(), add_bluetooth_tests, NULL);
if (tester_run())
return 1;
diff --git a/android/tester-main.h b/android/tester-main.h
index 8f10e9f..a4f2ed8 100644
--- a/android/tester-main.h
+++ b/android/tester-main.h
/* Get, remove test cases API */
struct queue *get_bluetooth_tests(void);
void remove_bluetooth_tests(void);
+
+/* Actions */
+void dummy_action(void);