public void testValidLoginActivity() throws Exception {
    // Unlock the lock screen.
    solo.unlockScreen();
    // Assert that LoginActivity is opened.
    solo.assertCurrentActivity("Expected LoginActivity", "LoginActivity");
    // Enter a valid Email and password
    solo.enterText((EditText) solo.getView("email_address"), "*****@*****.**");
    solo.enterText((EditText) solo.getView("password"), "abc123456");
    // Click on login button
    Activity currentAcctivity = solo.getCurrentActivity();
    int id =
        currentAcctivity
            .getResources()
            .getIdentifier("btn_login", "id", currentAcctivity.getPackageName());
    Button login_btn = (Button) solo.getView(id);
    solo.clickOnView(login_btn);
    System.out.print(solo.getCurrentActivity());

    //        Activity activity = solo.getCurrentActivity();
    //        boolean authSuceess = !activity.equals(LoginActivity.class);
    //        assertTrue("Sucessfully log in", authSuceess);
    solo.sleep(1000);
    System.out.print(solo.getCurrentActivity());
    solo.clickOnMenuItem("Logout", true);
    ;
    solo.sleep(300);
  }
  public void testRun() {

    int delay = 2000;

    // Wait for activity: 'com.example.ignaciogiagante.modernartui.MainActivity'
    solo.waitForActivity(com.example.ignaciogiagante.modernartui.MainActivity.class, delay);

    // Wait for view: 'R.id.seekbar'
    assertTrue("progressBar not found", solo.waitForView(R.id.seekbar));

    View view = solo.getCurrentActivity().findViewById(R.id.first_vertical);
    ColorDrawable colorDrawable = (ColorDrawable) view.getBackground();

    SeekBar seekBar = (SeekBar) solo.getCurrentActivity().findViewById(R.id.seekbar);

    // Check color with progress bar position 0
    solo.setProgressBar(seekBar, 0);
    solo.sleep(delay);
    int intColor = colorDrawable.getColor();
    String strColor = String.format("#%06X", 0xFFFFFF & intColor);
    assertEquals("#6A77B7", strColor);

    // Check color with progress bar position 51
    solo.setProgressBar(seekBar, 51);
    solo.sleep(delay);
    intColor = colorDrawable.getColor();
    strColor = String.format("#%06X", 0xFFFFFF & intColor);
    assertEquals("#78B2C6", strColor);

    // Check color with progress bar position 102
    solo.setProgressBar(seekBar, 102);
    solo.sleep(delay);
    intColor = colorDrawable.getColor();
    strColor = String.format("#%06X", 0xFFFFFF & intColor);
    assertEquals("#86D4BC", strColor);

    // Check color with progress bar position 153
    solo.setProgressBar(seekBar, 153);
    solo.sleep(delay);
    intColor = colorDrawable.getColor();
    strColor = String.format("#%06X", 0xFFFFFF & intColor);
    assertEquals("#96E3A1", strColor);

    // Check color with progress bar position 204
    solo.setProgressBar(seekBar, 204);
    solo.sleep(delay);
    intColor = colorDrawable.getColor();
    strColor = String.format("#%06X", 0xFFFFFF & intColor);
    assertEquals("#C7F1A6", strColor);

    // Check color with progress bar position 255
    solo.setProgressBar(seekBar, 255);
    solo.sleep(delay);
    intColor = colorDrawable.getColor();
    strColor = String.format("#%06X", 0xFFFFFF & intColor);
    assertEquals("#FFFFB7", strColor);
  }
  // check if soft keyboard is open
  public static void softKeyboardIsOpen(Solo solo) throws Exception {

    InputMethodManager imm =
        (InputMethodManager)
            solo.getCurrentActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
    junit.framework.Assert.assertTrue("Keyboard is inactive.", imm.isActive());
  }
  public void testInvalidLoginActivity() throws Exception {
    // Unlock the lock screen.
    solo.unlockScreen();
    // Assert that LoginActivity is opened.
    Activity currentAcctivity = solo.getCurrentActivity();
    solo.assertCurrentActivity("Expected LoginActivity", "LoginActivity");
    solo.sleep(3000);
    // if user session
    isLogin = solo.waitForActivity("LoginActivity");
    if (!isLogin) {
      solo.clickOnMenuItem("Logout", true);
    }
    // Enter a valid Email and password
    solo.enterText((EditText) solo.getView("email_address"), "*****@*****.**");
    solo.enterText((EditText) solo.getView("password"), "wrongPassword");
    // Click on login button
    int id =
        currentAcctivity
            .getResources()
            .getIdentifier("btn_login", "id", currentAcctivity.getPackageName());
    Button login_btn = (Button) solo.getView(id);
    solo.clickOnView(login_btn);
    // Check if login
    solo.assertCurrentActivity("Invalid user can not log in, test pass!", LoginActivity.class);
    solo.sleep(2000);
    isLogin = solo.waitForActivity("LoginActivity");
    if (!isLogin) {

      solo.clickOnMenuItem("Logout", true);
    }
  }
  public boolean strikeTextFlag() {

    TextView someTextView = (TextView) solo.getCurrentActivity().findViewById(R.id.ieText1);

    if ((someTextView.getPaintFlags() & Paint.STRIKE_THRU_TEXT_FLAG) > 0) {
      boolean e = true;
      return e;
    } else {
      boolean e = false;
      return e;
    }
  }
  // Check whether the application is first started.
  public static void testFirstLaunch(Solo solo) throws Exception {
    solo.sleep(3000);
    SharedPreferences prefs =
        PreferenceManager.getDefaultSharedPreferences(solo.getCurrentActivity());
    boolean flag = prefs.getBoolean("Time", false);
    if (!flag) {
      solo.sleep(3000);
      solo.clickOnView(solo.getView("welcome_skip"));
      solo.sleep(2000);
      solo.clickOnView(solo.getView("category_editor_ok_btn"));
      solo.sleep(2000);
      SharedPreferences.Editor editor = prefs.edit();
      editor.putBoolean("Time", true);
      editor.commit();
      junit.framework.Assert.assertTrue("Not the first time launch app", true);

    } else {
      junit.framework.Assert.assertTrue("Not the first time launch app", true);
    }
  }
 View findView(int id) {
   return solo.getCurrentActivity().findViewById(id);
 }
  /*

      This test will simulate a user accept a request for her ride and create a group.
      Since we can not accept requests now, this test can only create a group.

  */
  public void testAcceptance_4() throws Exception {

    // Email : [email protected] Password:123

    // Unlock the lock screen.
    solo.unlockScreen();
    solo.enterText((EditText) solo.getView("email_address"), email);
    solo.enterText((EditText) solo.getView("password"), password);
    // Click on login button
    currentActivity = solo.getCurrentActivity();
    int id_login =
        currentActivity
            .getResources()
            .getIdentifier("btn_login", "id", currentActivity.getPackageName());
    Button login_btn = (Button) solo.getView(id_login);
    solo.clickOnView(login_btn);
    solo.sleep(1000);
    currentActivity = solo.getCurrentActivity();

    // click menu item
    int id_groups =
        currentActivity
            .getResources()
            .getIdentifier("my_groups", "id", currentActivity.getPackageName());
    solo.sleep(500);
    solo.clickOnView(solo.getView(id_groups));
    solo.sleep(1000);
    currentActivity = solo.getCurrentActivity();
    int id_createAGroup =
        currentActivity
            .getResources()
            .getIdentifier("button_createagroup", "id", currentActivity.getPackageName());
    solo.clickOnView(solo.getView(id_createAGroup));

    solo.sleep(1000);

    // Wait for CreateAGroupActivity
    solo.waitForActivity("CreateAGroupActivity");
    Activity currentAcctivity = solo.getCurrentActivity();
    solo.enterText((EditText) solo.getView("createGroupName"), "TestGroup");
    // select group type

    int GroupCategroyId =
        currentAcctivity
            .getResources()
            .getIdentifier("pasttimeButton", "id", currentAcctivity.getPackageName());
    RadioButton pasttimeButton = (RadioButton) solo.getView(GroupCategroyId);
    solo.clickOnView(pasttimeButton);

    solo.enterText(
        (EditText) solo.getView("createGroupDescription"),
        "This group is created to test this function.");
    int mapButton =
        currentAcctivity
            .getResources()
            .getIdentifier("createFixedPointAddress", "id", currentAcctivity.getPackageName());
    Button createFixedPointAddress = (Button) solo.getView(mapButton);
    solo.clickOnView(createFixedPointAddress);

    // select pin
    boolean initialID =
        solo.waitForFragmentById(
            R.id
                .map); // where id.satellite is defined in the R file, eventually would time out and
                       // throw error if fragment was not present
    solo.sleep(1000);
    Activity mapActivity = solo.getCurrentActivity();
    int map =
        mapActivity.getResources().getIdentifier("map", "id", currentAcctivity.getPackageName());
    View mapView = solo.getView(map);
    solo.clickOnView(mapView);
    solo.sleep(1000);
    int mapSubmit =
        currentAcctivity
            .getResources()
            .getIdentifier("submit", "id", currentAcctivity.getPackageName());
    Button btn_mapSubmit = (Button) solo.getView(mapSubmit);
    solo.clickOnView(btn_mapSubmit);
    solo.sleep(1000);

    //        boolean back = solo.waitForActivity("creatAGroupActivity");
    //        assertTrue("Sucessfully back to activity", back);
    currentAcctivity = solo.getCurrentActivity();
    int GroupTypeId =
        currentAcctivity
            .getResources()
            .getIdentifier("p1privateButton", "id", currentAcctivity.getPackageName());
    RadioButton p1privateButton = (RadioButton) solo.getView(GroupTypeId);
    solo.clickOnView(p1privateButton);
    solo.sleep(500);
    int submit =
        currentAcctivity
            .getResources()
            .getIdentifier("btn_submit", "id", currentAcctivity.getPackageName());
    Button btn_submit = (Button) solo.getView(submit);
    solo.clickOnView(btn_submit);
    solo.sleep(1000);

    solo.clickOnMenuItem("Logout", true);
  }
  /**
   * Test method to check if the Sales Management Game is loaded with proper default initialization
   */
  public void testPlayGridActivityLoadedWithData() {

    robotiumSolo.waitForActivity(com.shrikanthavale.salesmanagement.StartPageActivity.class, 2000);
    assertTrue(
        "com.shrikanthavale.salesmanagement.StartPageActivity is not found!",
        robotiumSolo.waitForActivity(com.shrikanthavale.salesmanagement.StartPageActivity.class));
    robotiumSolo.clickOnView(
        robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.startPageStartButton));
    assertTrue(
        "com.shrikanthavale.salesmanagement.PlayGridActivity is not found!",
        robotiumSolo.waitForActivity(com.shrikanthavale.salesmanagement.PlayGridActivity.class));

    Timeout.setSmallTimeout(22015);

    while (true) {

      int randomNumber = (int) (Math.random() * (5 - 1)) + 1;
      System.out.println("****************" + randomNumber);

      switch (randomNumber) {
        case 1:
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.upNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.upNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.leftNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.rightNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.downNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.rightNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.downNavigation));

          break;
        case 2:
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.rightNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.leftNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.downNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.upNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.leftNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.downNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.upNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.leftNavigation));

        case 3:
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.rightNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.leftNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.upNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.downNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.leftNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.upNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.downNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.leftNavigation));
        case 4:
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.downNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.rightNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.leftNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.upNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.rightNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.leftNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.downNavigation));
          robotiumSolo.clickOnView(
              robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.rightNavigation));
        default:
          break;
      }

      if (((PlayGridActivity) robotiumSolo.getCurrentActivity()).checkSufficientTimeCustomerTravel()
          || ((PlayGridActivity) robotiumSolo.getCurrentActivity())
              .checkSufficientTimeCustomerVisit()) {
        robotiumSolo.sendKey(Solo.MENU);
        robotiumSolo.sleep(1000);
        robotiumSolo.waitForText(robotiumSolo.getString(R.string.refreshGrid));
        robotiumSolo.clickOnActionBarItem(R.id.refresh_game);
        robotiumSolo.waitForDialogToOpen();
        robotiumSolo.clickOnButton(robotiumSolo.getString(R.string.popupdialogConfirmButton));
        robotiumSolo.waitForDialogToClose();
        robotiumSolo.waitForDialogToOpen();
        robotiumSolo.waitForDialogToClose();
        continue;
      }

      robotiumSolo.clickOnView(
          robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.confirmSelection));

      // get the current focus button
      Button focusedButton =
          ((PlayGridActivity) robotiumSolo.getCurrentActivity()).getFocusedButton();

      if (focusedButton
              .getText()
              .toString()
              .trim()
              .equals(robotiumSolo.getString(R.string.emptystring))
          || focusedButton.getText().toString().trim().contains("Start")
          || focusedButton.getText().toString().trim().contains("R")) {
        // non customer node was clicked
        assertTrue(
            "Non Customer node clicked error message missing",
            robotiumSolo.searchText(robotiumSolo.getString(R.string.nonnodeclickederrormessage)));
        continue;

      } else if (((PlayGridActivity) robotiumSolo.getCurrentActivity())
          .getVisitedCustomers()
          .contains(focusedButton.getId())) {

        assertTrue(
            "Visited Customer node clicked error message missing",
            robotiumSolo.searchText(robotiumSolo.getString(R.string.alreadyvisitednode)));

        continue;

      } else {
        robotiumSolo.waitForDialogToOpen();
        robotiumSolo.waitForDialogToClose();
        assertTrue(
            "com.shrikanthavale.salesmanagement.CaseStudyDescriptionActivity is not found!",
            robotiumSolo.waitForActivity(
                com.shrikanthavale.salesmanagement.CaseStudyDescriptionActivity.class));
        break;
      }
    }

    robotiumSolo.clickOnView(robotiumSolo.getView(R.id.scrollView1));
    robotiumSolo.scrollDown();
    robotiumSolo.scrollUp();
    robotiumSolo.scrollDown();
    robotiumSolo.scrollUp();

    robotiumSolo.clickOnView(
        robotiumSolo.getView(com.shrikanthavale.salesmanagement.R.id.optionsNavigate));
    robotiumSolo.waitForDialogToOpen();
    assertTrue(
        "Loading Dialogue Missing",
        robotiumSolo.waitForText("Loading Option Details .... Please Wait"));
    robotiumSolo.waitForDialogToClose();
    assertTrue(
        "com.shrikanthavale.salesmanagement.CaseStudyDescriptionActivity is not found!",
        robotiumSolo.waitForActivity(
            com.shrikanthavale.salesmanagement.CaseStudyOptionsActivity.class));

    robotiumSolo.clickOnView(robotiumSolo.getView(R.id.scrollViewOptions));
    robotiumSolo.scrollDown();
    robotiumSolo.scrollUp();
    robotiumSolo.scrollDown();
    robotiumSolo.scrollUp();

    robotiumSolo.clickOnRadioButton(0);
    robotiumSolo.clickOnRadioButton(1);
    robotiumSolo.clickOnRadioButton(2);

    robotiumSolo.clickOnRadioButton(1);

    Display display = robotiumSolo.getCurrentActivity().getWindowManager().getDefaultDisplay();
    Instrumentation inst = getInstrumentation();
    PackageManager pm = robotiumSolo.getCurrentActivity().getPackageManager();

    Monkey monkey = new Monkey(display, packageToTest, inst, pm);

    for (int i = 0; i < NUM_EVENTS; i++) {
      monkey.nextRandomEvent();
    }
  }
 public void testAddRemoveStar() {
   addStar(itemName);
   assertEquals(true, solo.getCurrentActivity().findViewById(R.id.StarImage).isShown());
   removeStar(itemName);
   assertEquals(false, solo.getCurrentActivity().findViewById(R.id.StarImage).isShown());
 }
  public void testCase1() {
    Log.d("xiacj", "test1()");
    SharedPreferences preferences =
        getInstrumentation()
            .getTargetContext()
            .getSharedPreferences("com.tencent.mm_preferences", 0);
    String login_user_name = preferences.getString("login_user_name", "");
    // 判断当前界面
    String className = solo.getCurrentActivity().getClass().getSimpleName();
    Log.e(TAG, "className:" + className + "  user:"******"LauncherUI")) {
      Boolean b1 = solo.searchText("快捷方式");
      if (b1) {
        Log.d(TAG, "found 界面:  快捷方式");
        solo.clickOnButton("取消");
      }

      Boolean b2 = solo.searchText("登录");
      Boolean b3 = solo.searchText("语言");
      if (b2 && b3) {
        Log.d(TAG, "found 界面:  登录、语言");
        solo.clickOnButton("登录");
        solo.sleep(2000);

        EditText editText;
        String str;
        editText = solo.getEditText(0);
        str = editText.getHint().toString();
        Log.e(TAG, "hint text: " + str);
        solo.enterText(editText, name1);

        editText = solo.getEditText(0);
        str = editText.getHint().toString();
        Log.e(TAG, "hint text: " + str);
        solo.enterText(editText, password);
        solo.clickOnText("登录");
      } else {
        Boolean b4 = solo.searchText("遇到问题");
        if (b4) {
          Log.d(TAG, "found 界面:  遇到问题");
          EditText editText = solo.getEditText(0);
          String str = editText.getHint().toString();
          Log.e(TAG, "hint text: " + str);
          solo.enterText(editText, password);
          solo.clickOnText("登录");
        }
      }
    } else {
      solo.assertCurrentActivity("进入LoginHistoryUI", "LoginHistoryUI");
      solo.waitForText("切换帐号");
      solo.clickOnText("切换帐号");

      solo.waitForView(ListView.class);
      ListView lv = solo.getView(ListView.class, 0);
      View itemView = lv.getChildAt(1);
      solo.clickOnView(itemView);
      solo.sleep(1000);

      // 断言进入登录界面
      solo.assertCurrentActivity("进入LoginUI", "LoginUI");
      solo.waitForView(solo.getButton(0));
      solo.enterText(0, name);
      solo.enterText(1, password);
      solo.clickOnButton(0);
      solo.sleep(1000 * 3);
    }

    try {
      Log.e(TAG, "try>>>>>>>>>>>>>>>>>>>>>>>>");
      solo.assertCurrentActivity("进入LauncherUI", "LauncherUI");
      if (true) {
        // 点击发现
        solo.waitForText("发现");
        solo.clickOnText("发现");
        solo.sleep(1000);
        Boolean b = solo.searchText("朋友圈") && solo.searchText("购物");
        if (b) {
          Log.d(TAG, "进入发现");
        }
        solo.sleep(2000);
      }
    } catch (Exception e) {
      Log.e(TAG, "catch:Exception e:" + e.getMessage());
    } finally {
      Log.e(TAG, "finally>>>>>>>>>>>>>>>>>>>>>>>>doFinally");
      // doFinally();
    }
    solo.sleep(1000 * 3);
  }