stktest: Add GetInput test sequence 1.6
[platform/upstream/ofono.git] / tools / stktest.c
index c6629b2..a71eaf7 100644 (file)
@@ -67,6 +67,12 @@ typedef DBusMessage *(*display_text_cb_t)(DBusMessage *msg, const char *text,
                                                gboolean urgent);
 typedef DBusMessage *(*get_inkey_cb_t)(DBusMessage *msg, const char *alpha,
                                                unsigned char icon_id);
+typedef DBusMessage *(*get_input_cb_t)(DBusMessage *msg, const char *alpha,
+                                               unsigned char icon_id,
+                                               const char *def_input,
+                                               unsigned char min_chars,
+                                               unsigned char max_chars,
+                                               gboolean hide_typing);
 typedef void (*terminal_response_func)(const unsigned char *pdu,
                                        unsigned int len);
 
@@ -275,7 +281,9 @@ static DBusMessage *func(DBusConnection *conn, DBusMessage *msg,    \
        func = test->agent_func;                                        \
                                                                        \
        if (strcmp(test->method, method_name)) {                        \
-               g_printerr("Wrong method called!\n");                   \
+               g_printerr("Wrong method called!"                       \
+                               "  Expected: %s, Got: %s\n",            \
+                               test->method, method_name);             \
                __stktest_test_finish(FALSE);                           \
                return stktest_error_failed(msg);                       \
        }                                                               \
@@ -297,6 +305,61 @@ GET_INKEY_TEMPLATE(agent_request_key, "RequestKey")
 GET_INKEY_TEMPLATE(agent_request_digit, "RequestDigit")
 GET_INKEY_TEMPLATE(agent_request_confirmation, "RequestConfirmation")
 
+#define GET_INPUT_TEMPLATE(func, method_name)                          \
+static DBusMessage *func(DBusConnection *conn, DBusMessage *msg,       \
+                               void *data)                             \
+{                                                                      \
+       const char *alpha;                                              \
+       const char *def_input;                                          \
+       unsigned char icon_id;                                          \
+       unsigned char min_chars;                                        \
+       unsigned char max_chars;                                        \
+       gboolean hide_typing;                                           \
+       struct test *test;                                              \
+       get_input_cb_t func;                                            \
+       DBusMessage *reply;                                             \
+                                                                       \
+       if (dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &alpha,  \
+                                       DBUS_TYPE_BYTE, &icon_id,       \
+                                       DBUS_TYPE_STRING, &def_input,   \
+                                       DBUS_TYPE_BYTE, &min_chars,     \
+                                       DBUS_TYPE_BYTE, &max_chars,     \
+                                       DBUS_TYPE_BOOLEAN,              \
+                                       &hide_typing,                   \
+                                       DBUS_TYPE_INVALID) == FALSE)    \
+               return stktest_error_invalid_args(msg);                 \
+                                                                       \
+       if (cur_test == NULL)                                           \
+               return stktest_error_failed(msg);                       \
+                                                                       \
+       test = cur_test->data;                                          \
+       func = test->agent_func;                                        \
+                                                                       \
+       if (strcmp(test->method, method_name)) {                        \
+               g_printerr("Wrong method called!"                       \
+                               "  Expected: %s, Got: %s\n",            \
+                               test->method, method_name);             \
+               __stktest_test_finish(FALSE);                           \
+               return stktest_error_failed(msg);                       \
+       }                                                               \
+                                                                       \
+       if (func == NULL) {                                             \
+               g_printerr(method_name " not expected to be called");   \
+               __stktest_test_finish(FALSE);                           \
+               return stktest_error_failed(msg);                       \
+       }                                                               \
+                                                                       \
+       reply = func(msg, alpha, icon_id, def_input,                    \
+                       min_chars, max_chars, hide_typing);             \
+       if (reply == NULL)                                              \
+               pending = dbus_message_ref(msg);                        \
+                                                                       \
+       return reply;                                                   \
+}                                                                      \
+
+GET_INPUT_TEMPLATE(agent_request_input, "RequestInput")
+GET_INPUT_TEMPLATE(agent_request_digits, "RequestDigits")
+
 static void server_debug(const char *str, void *data)
 {
        g_print("%s: %s\n", (char *) data, str);
@@ -927,6 +990,16 @@ static const GDBusMethodTable agent_methods[] = {
                GDBUS_ARGS({ "alpha", "s" }, { "icon_id", "y" }),
                GDBUS_ARGS({ "confirmation", "b" }),
                                agent_request_confirmation) },
+       { GDBUS_ASYNC_METHOD("RequestInput",
+               GDBUS_ARGS({ "alpha", "s" }, { "icon_id", "y" },
+                               { "default", "s" }, { "min_chars", "y" },
+                               { "max_chars", "y" }, { "hide_typing", "b" }),
+               GDBUS_ARGS({ "input", "s" }), agent_request_input) },
+       { GDBUS_ASYNC_METHOD("RequestDigits",
+               GDBUS_ARGS({ "alpha", "s" }, { "icon_id", "y" },
+                               { "default", "s" }, { "min_chars", "y" },
+                               { "max_chars", "y" }, { "hide_typing", "b" }),
+               GDBUS_ARGS({ "digits", "s" }), agent_request_digits) },
        { GDBUS_NOREPLY_METHOD("Cancel", NULL, NULL, agent_cancel) },
        { },
 };
@@ -2093,6 +2166,128 @@ static DBusMessage *test_get_inkey_131(DBusMessage *msg,
        return reply;
 }
 
+static DBusMessage *test_get_input_11(DBusMessage *msg,
+                                       const char *alpha,
+                                       unsigned char icon_id,
+                                       const char *def_input,
+                                       unsigned char min, unsigned char max,
+                                       gboolean hide_typing)
+{
+       DBusMessage *reply;
+       const char *ret = "12345";
+
+       STKTEST_AGENT_ASSERT(g_str_equal(alpha, "Enter 12345"));
+       STKTEST_AGENT_ASSERT(icon_id == 0);
+       STKTEST_AGENT_ASSERT(g_str_equal(def_input, ""));
+       STKTEST_AGENT_ASSERT(min == 5);
+       STKTEST_AGENT_ASSERT(max == 5);
+       STKTEST_AGENT_ASSERT(hide_typing == FALSE);
+
+       reply = dbus_message_new_method_return(msg);
+       dbus_message_append_args(reply, DBUS_TYPE_STRING, &ret,
+                                       DBUS_TYPE_INVALID);
+
+       return reply;
+}
+
+static DBusMessage *test_get_input_12(DBusMessage *msg,
+                                       const char *alpha,
+                                       unsigned char icon_id,
+                                       const char *def_input,
+                                       unsigned char min, unsigned char max,
+                                       gboolean hide_typing)
+{
+       DBusMessage *reply;
+       const char *ret = "67*#+";
+
+       STKTEST_AGENT_ASSERT(g_str_equal(alpha, "Enter 67*#+"));
+       STKTEST_AGENT_ASSERT(icon_id == 0);
+       STKTEST_AGENT_ASSERT(g_str_equal(def_input, ""));
+       STKTEST_AGENT_ASSERT(min == 5);
+       STKTEST_AGENT_ASSERT(max == 5);
+       STKTEST_AGENT_ASSERT(hide_typing == FALSE);
+
+       reply = dbus_message_new_method_return(msg);
+       dbus_message_append_args(reply, DBUS_TYPE_STRING, &ret,
+                                       DBUS_TYPE_INVALID);
+
+       return reply;
+}
+
+static DBusMessage *test_get_input_13(DBusMessage *msg,
+                                       const char *alpha,
+                                       unsigned char icon_id,
+                                       const char *def_input,
+                                       unsigned char min, unsigned char max,
+                                       gboolean hide_typing)
+{
+       DBusMessage *reply;
+       const char *ret = "AbCdE";
+
+       STKTEST_AGENT_ASSERT(g_str_equal(alpha, "Enter AbCdE"));
+       STKTEST_AGENT_ASSERT(icon_id == 0);
+       STKTEST_AGENT_ASSERT(g_str_equal(def_input, ""));
+       STKTEST_AGENT_ASSERT(min == 5);
+       STKTEST_AGENT_ASSERT(max == 5);
+       STKTEST_AGENT_ASSERT(hide_typing == FALSE);
+
+       reply = dbus_message_new_method_return(msg);
+       dbus_message_append_args(reply, DBUS_TYPE_STRING, &ret,
+                                       DBUS_TYPE_INVALID);
+
+       return reply;
+}
+
+static DBusMessage *test_get_input_14(DBusMessage *msg,
+                                       const char *alpha,
+                                       unsigned char icon_id,
+                                       const char *def_input,
+                                       unsigned char min, unsigned char max,
+                                       gboolean hide_typing)
+{
+       DBusMessage *reply;
+       const char *ret = "2345678";
+
+       STKTEST_AGENT_ASSERT(g_str_equal(alpha,
+                                       "Password 1<SEND>2345678"));
+       STKTEST_AGENT_ASSERT(icon_id == 0);
+       STKTEST_AGENT_ASSERT(g_str_equal(def_input, ""));
+       STKTEST_AGENT_ASSERT(min == 4);
+       STKTEST_AGENT_ASSERT(max == 8);
+       STKTEST_AGENT_ASSERT(hide_typing == TRUE);
+
+       reply = dbus_message_new_method_return(msg);
+       dbus_message_append_args(reply, DBUS_TYPE_STRING, &ret,
+                                       DBUS_TYPE_INVALID);
+
+       return reply;
+}
+
+static DBusMessage *test_get_input_15(DBusMessage *msg,
+                                       const char *alpha,
+                                       unsigned char icon_id,
+                                       const char *def_input,
+                                       unsigned char min, unsigned char max,
+                                       gboolean hide_typing)
+{
+       DBusMessage *reply;
+       const char *ret = "12345678901234567890";
+
+       STKTEST_AGENT_ASSERT(g_str_equal(alpha,
+                                       "Enter 1..9,0..9,0(1)"));
+       STKTEST_AGENT_ASSERT(icon_id == 0);
+       STKTEST_AGENT_ASSERT(g_str_equal(def_input, ""));
+       STKTEST_AGENT_ASSERT(min == 1);
+       STKTEST_AGENT_ASSERT(max == 20);
+       STKTEST_AGENT_ASSERT(hide_typing == FALSE);
+
+       reply = dbus_message_new_method_return(msg);
+       dbus_message_append_args(reply, DBUS_TYPE_STRING, &ret,
+                                       DBUS_TYPE_INVALID);
+
+       return reply;
+}
+
 static void power_down_reply(DBusPendingCall *call, void *user_data)
 {
        __stktest_test_next();
@@ -2537,6 +2732,36 @@ static void __stktest_test_init(void)
                                sizeof(get_inkey_response_1311),
                                test_get_inkey_131,
                                expect_response_and_finish);
+       stktest_add_test("Get Input 1.1", "RequestDigits",
+                               get_input_111, sizeof(get_input_111),
+                               get_input_response_111,
+                               sizeof(get_input_response_111),
+                               test_get_input_11,
+                               expect_response_and_finish);
+       stktest_add_test("Get Input 1.2", "RequestDigits",
+                               get_input_121, sizeof(get_input_121),
+                               get_input_response_121,
+                               sizeof(get_input_response_121),
+                               test_get_input_12,
+                               expect_response_and_finish);
+       stktest_add_test("Get Input 1.3", "RequestInput",
+                               get_input_131, sizeof(get_input_131),
+                               get_input_response_131,
+                               sizeof(get_input_response_131),
+                               test_get_input_13,
+                               expect_response_and_finish);
+       stktest_add_test("Get Input 1.4", "RequestDigits",
+                               get_input_141, sizeof(get_input_141),
+                               get_input_response_141,
+                               sizeof(get_input_response_141),
+                               test_get_input_14,
+                               expect_response_and_finish);
+       stktest_add_test("Get Input 1.5", "RequestDigits",
+                               get_input_151, sizeof(get_input_151),
+                               get_input_response_151,
+                               sizeof(get_input_response_151),
+                               test_get_input_15,
+                               expect_response_and_finish);
 }
 
 static void test_destroy(gpointer user_data)