END_TEST

/**
 * Purpose: Check that limit password values are get properly.
 * Cases considered:
 *    - Get empty password set by g_object_set_property with NULL value.
 *    - Get password from NULL object.
 *
 */
START_TEST (test_get_password_invalid)
{
  const gchar * default_password=NULL;  
  const gchar * ret_password;
  GValue value={0, };

  /* Check get password dialog object has been created properly */
  fail_if(!HILDON_IS_GET_PASSWORD_DIALOG (get_password_dialog), 
          "hildon-get-password-dialog: Creation failed.");
  fail_if (!GTK_IS_WINDOW (gpd_window),
          "hildon-get-password-dialog: Window creation failed.");
    
  /* Test 1: Get password NULL set by g_object_set_property. */
  default_password = NULL;
  g_value_init (&value, G_TYPE_STRING);
  g_value_set_string(&value,default_password);
  g_object_set_property(G_OBJECT (get_password_dialog),"password",&value);
  g_value_unset (&value);
    
  ret_password = hildon_get_password_dialog_get_password(get_password_dialog);
  fail_if(strcmp(ret_password,"")!=0,
	  "hildon-get-password-dialog: Returned password is not empty (%s)",ret_password);

  /* Test 2: Get password from NULL object. */
  ret_password = hildon_get_password_dialog_get_password(NULL);
}
END_TEST

/**
 * Purpose: Check that invalid password values are set and get properly.
 * Cases considered:
 *    - Create new NULL get password dialog.
 *    - Create new dialog with NULL window by default
 */
START_TEST (test_new_with_default_invalid)
{
  const gchar * default_password="";
  const gchar * ret_password;
  HildonGetPasswordDialog * default_get_password_dialog;

  /* Check get password dialog object has been created properly */
  fail_if(!HILDON_IS_GET_PASSWORD_DIALOG (get_password_dialog), 
          "hildon-get-password-dialog: Creation failed.");
  fail_if (!GTK_IS_WINDOW (gpd_window),
          "hildon-get-password-dialog: Window creation failed.");

  /* Test 1: Create new dialog with NULL password by default */
  default_password=NULL;
  default_get_password_dialog = 
    HILDON_GET_PASSWORD_DIALOG(hildon_get_password_dialog_new_with_default(gpd_window,default_password,FALSE));
  fail_if(!HILDON_IS_GET_PASSWORD_DIALOG(default_get_password_dialog),
	  "hildon-get-password-dialog: Creation failed with hildon_get_password_dialog_new_with_default");

  ret_password = hildon_get_password_dialog_get_password(default_get_password_dialog);  
  fail_if(strcmp ("",ret_password) != 0,
	  "hildon-get-password-dialog: Error setting null password. Returned password is \"%s\"",ret_password);
  
  gtk_widget_destroy(GTK_WIDGET(default_get_password_dialog));

  /* Test 2: Create new dialog with NULL window by default */
  default_get_password_dialog = 
    HILDON_GET_PASSWORD_DIALOG(hildon_get_password_dialog_new_with_default(NULL,default_password,FALSE));
  fail_if(!HILDON_IS_GET_PASSWORD_DIALOG(default_get_password_dialog),
	  "hildon-get-password-dialog: Creation failed with hildon_get_password_dialog_new_with_default");

  ret_password = hildon_get_password_dialog_get_password(default_get_password_dialog);
  fail_if (ret_password == NULL,
	      "hildon-get-password-dialog: Default password and returned password are diferent (%s,%s)",default_password,ret_password);

  gtk_widget_destroy(GTK_WIDGET(default_get_password_dialog));
}
int
main                                            (int argc,
                                                 char **argv)
{
    hildon_gtk_init (&argc, &argv);

    GtkDialog *dialog = GTK_DIALOG (hildon_get_password_dialog_new (NULL, TRUE));
    
    hildon_get_password_dialog_set_message ((HildonGetPasswordDialog *) dialog, "Enter secret password");

    gtk_widget_show_all (GTK_WIDGET (dialog));
    gtk_dialog_run (dialog);

    g_debug ("Password: %s", hildon_get_password_dialog_get_password ((HildonGetPasswordDialog *) dialog));
    
    return 0;
}
END_TEST

/**
 * Purpose: Check that regular password values are get properly.
 * Cases considered:
 *    - Get password "test_password" set by g_object_set_property.
 *    - Get password "01234567890" set by g_object_set_property.
 *    - Get password TEST_STRING set by g_object_set_property.
 *    - Get password "" set by set by g_object_set_property.
 */
START_TEST (test_get_password_regular)
{
  const gchar * default_password="******";  
  const gchar * ret_password;
  GValue value={0, };

  /* Check get password dialog object has been created properly */
  fail_if(!HILDON_IS_GET_PASSWORD_DIALOG (get_password_dialog), 
          "hildon-get-password-dialog: Creation failed.");
  fail_if (!GTK_IS_WINDOW (gpd_window),
          "hildon-get-password-dialog: Window creation failed.");
    
  /* Test 1: Get password "test_password" set by g_object_set_property. */
  g_value_init (&value, G_TYPE_STRING);
  g_value_set_string(&value,default_password);
  g_object_set_property(G_OBJECT (get_password_dialog),"password",&value);
  g_value_unset (&value);
    
  ret_password = hildon_get_password_dialog_get_password(get_password_dialog);
  fail_if(strcmp (default_password,ret_password)!=0,
	  "hildon-get-password-dialog: Default password and returned password are diferent (%s,%s)",default_password,ret_password);

  /* Test 2: Get password "01234567890" set by g_object_set_property. */
  default_password = "******";

  g_value_init (&value, G_TYPE_STRING);
  g_value_set_string(&value,default_password);
  g_object_set_property(G_OBJECT (get_password_dialog),"password",&value);
  g_value_unset (&value);
    
  ret_password = hildon_get_password_dialog_get_password(get_password_dialog);
  fail_if(strcmp (default_password,ret_password)!=0,
	  "hildon-get-password-dialog: Default password and returned password are diferent (%s,%s)",default_password,ret_password);

  /* Test 3: Get password TEST_STRING set by g_object_set_property. */
  default_password = TEST_STRING;

  g_value_init (&value, G_TYPE_STRING);
  g_value_set_string(&value,default_password);
  g_object_set_property(G_OBJECT (get_password_dialog),"password",&value);
  g_value_unset (&value);
    
  ret_password = hildon_get_password_dialog_get_password(get_password_dialog);
  fail_if(strcmp (default_password,ret_password)!=0,
	  "hildon-get-password-dialog: Default password and returned password are diferent (%s,%s)",default_password,ret_password);

  /* Test 4: Get password "" set by g_object_set_property. */
  default_password = "";

  g_value_init (&value, G_TYPE_STRING);
  g_value_set_string(&value,default_password);
  g_object_set_property(G_OBJECT (get_password_dialog),"password",&value);
  g_value_unset (&value);
    
  ret_password = hildon_get_password_dialog_get_password(get_password_dialog);
  fail_if(strcmp (default_password,ret_password)!=0,
	  "hildon-get-password-dialog: Default password and returned password are diferent (%s,%s)",default_password,ret_password);
}