content: /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
   *   http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing,
   * software distributed under the License is distributed on an
   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   * KIND, either express or implied.  See the License for the
   * specific language governing permissions and limitations
   * under the License.
   */
  package org.apache.weex.uitest.TC_Input;
  
  import android.app.Activity;
  import android.app.Application;
  import android.app.Instrumentation;
  import android.content.Intent;
  import android.test.ActivityInstrumentationTestCase2;
  import android.test.TouchUtils;
  import android.text.TextUtils;
  import android.util.Log;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.EditText;
  
  import org.apache.weex.R;
  import org.apache.weex.util.ScreenShot;
  import org.apache.weex.util.ViewUtil;
  import org.apache.weex.WXPageActivity;
  import org.apache.weex.WeappJsBaseTestCase;
  import org.apache.weex.constants.Constants;
  import com.taobao.weex.ui.view.WXTextView;
  
  import java.io.IOException;
  import java.util.ArrayList;
  
  /**
   * Created by admin on 16/3/23.
   */
  public class WeexUiTestCaseTcInputEvent extends ActivityInstrumentationTestCase2<WXPageActivity> {
      public final  String TAG = "TestScript_Guide==";
      public WeappJsBaseTestCase weappApplication;
      public WXPageActivity waTestPageActivity;
      public WXPageActivity waTestPageActivity2;
  
      public ViewGroup mViewGroup;
      public Application mApplication;
      public Instrumentation mInstrumentation;
  
      public  ArrayList<View> mCaseListIndexView = new ArrayList<View>();
      public WeexUiTestCaseTcInputEvent() {
          super(WXPageActivity.class);
      }
  
      public void setUp() throws Exception{
  
          Log.e("TestScript_Guide", "setUp  test!!");
          setActivityInitialTouchMode(false);
          weappApplication = new WeappJsBaseTestCase();
          mInstrumentation = getInstrumentation();
  
          Intent intent = new Intent();
          intent.putExtra("bundleUrl", Constants.BUNDLE_URL);
          launchActivityWithIntent("org.apache.weex", WXPageActivity.class, intent);
          waTestPageActivity = getActivity();
  //        waTestPageActivity.getIntent().getData().toString();
          Log.e(TAG, "activity1=" + waTestPageActivity.toString());
          Thread.sleep(3000);
  
          mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container);
          setViewGroup(mViewGroup);
  
          mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, "TC_");
          addAllTargetView("TC_");
  
          Thread.sleep(3000);
      }
  
  //    public void testPreConditions()
  //    {
  //        assertNotNull(waTestPageActivity);
  //        assertNotNull(mViewGroup);
  //        assertNotNull(mCaseListIndexView);
  //
  //    }
  
      public void testInputEvent(){
  
          for(final View caseView : mCaseListIndexView){
             if (((WXTextView)caseView).getText().toString().equals("TC_Input")){
                 Log.e(TAG, "TC_Input find");
  
                 final WXTextView inputView  = (WXTextView)caseView;
                  mInstrumentation.runOnMainSync(new Runnable() {
                      @Override
                      public void run() {
                          inputView.requestFocus();
                          inputView.performClick();
                      }
                  });
  
                 sleep(2000);
  
                 setActivity(WXPageActivity.wxPageActivityInstance);
                 Activity activity2 = getActivity();
                 Log.e(TAG, "activity2 = " + activity2.toString());
  
                 ViewGroup myGroup = (ViewGroup)(activity2.findViewById(R.id.container));
                 Log.e(TAG, myGroup.toString());
  
                 ArrayList<View> inputListView = new ArrayList<View>();
                 inputListView = ViewUtil.findViewWithText(myGroup, "TC_Input_Event");
  
  //               myGroup.findViewsWithText(inputListView, "TC_Input_Event", View.FIND_VIEWS_WITH_TEXT);
  
                 Log.e(TAG, "TC_Input_Event size== " + inputListView.size());
                 sleep(2000);
                 EditText inputTypeViewLoseFocus =null  ;
                 sleep(2000);
  
                 if(inputListView.size()!=0){
                     final WXTextView inputTypeView = (WXTextView)inputListView.get(0);
  
                     mInstrumentation.runOnMainSync(new Runnable() {
                         @Override
                         public void run() {
                             inputTypeView.requestFocus();
                             inputTypeView.performClick();
                             Log.e(TAG, "TC_Input_Event clcik!");
                         }
                     });
  
                     sleep(3000);
                     Log.e(TAG, "TC_Input_Event_01_init snap!");
                     screenShot("TC_Input_Event_01_init");
                     sleep(3000);
                 }
  
                 setActivity(WXPageActivity.wxPageActivityInstance);
                 activity2 = getActivity();
                 Log.e(TAG, "activity2 = " + activity2.toString());
  
                 myGroup = (ViewGroup)(activity2.findViewById(R.id.container));
                 ArrayList<View> inputListView11 = new ArrayList<View>();
                 sleep(3000);
  
                 inputListView11 = ViewUtil.getAllChildViews(myGroup);
                 ArrayList<View> listEventView = new ArrayList<View>();
  
                 for(View view :inputListView11){
                     if(view instanceof android.support.v7.widget.RecyclerView){
                         android.support.v7.widget.RecyclerView listView =
                                 (android.support.v7.widget.RecyclerView) view;
                         int count = listView.getChildCount();
                         Log.e(TAG, "listView count" + count);
                         listEventView = ViewUtil.getAllChildViews(listView);
                     }
  
                 }
                 Log.e(TAG, "listEventView  size== " + listEventView.size());
                 if(listEventView.size()!=0){
  
                     for(View view :listEventView){
  //                       if (view instanceof WXTextView && null != view){
  //                           Log.e(TAG, "WXTextView get = " + ((WXTextView) view).getText().toString());
  //                       }
  
                         String hintText = "";
  
                         if (view instanceof EditText){
                             hintText = ((EditText) view).getHint().toString();
                             Log.e(TAG, "EditText hint text = " + hintText);
                             if(hintText.equals("onclick")){
  
                                 final EditText inputTypeView = (EditText)view;
                                 mInstrumentation.runOnMainSync(new Runnable() {
                                     @Override
                                     public void run() {
                                         inputTypeView.requestFocus();
                                         inputTypeView.performClick();
                                         Log.e(TAG, "EditText onclick clcik!");
                                     }
                                 });
                                 sleep(3000);
  
                             }
                             else if(hintText.equals("oninput")){
  
                                 final EditText inputTypeView = (EditText)view;
                                 mInstrumentation.runOnMainSync(new Runnable() {
                                     @Override
                                     public void run() {
                                         inputTypeView.requestFocus();
                                         inputTypeView.performClick();
                                         inputTypeView.setText("input");
                                         Log.e(TAG, "EditText input clcik!");
  
                                     }
                                 });
  
                                 sleep(1000);
                                 screenShot("TC_Input_Event_02_input");
                                 Log.e(TAG, "TC_Input_Event_02_input snap!");
                                 sleep(1000);
  
                             }
  
                             else if(hintText.equals("onchange")){
  
                                 final EditText inputTypeView = (EditText)view;
                                 mInstrumentation.runOnMainSync(new Runnable() {
                                     @Override
                                     public void run() {
                                         inputTypeView.requestFocus();
                                         inputTypeView.performClick();
                                         inputTypeView.setText("change");
                                         Log.e(TAG, "EditText change clcik!");
  
                                     }
                                 });
  
                                 sleep(1000);
                             }
  
                             else if(hintText.equals("失焦用途")){
  
                                 inputTypeViewLoseFocus = (EditText)view;
                                 final EditText inputTypeView = inputTypeViewLoseFocus;
  
                                 mInstrumentation.runOnMainSync(new Runnable() {
                                     @Override
                                     public void run() {
                                         inputTypeView.requestFocus();
                                         inputTypeView.performClick();
                                         Log.e(TAG, "失焦用途  clcik!");
  
                                     }
                                 });
  
                                 sleep(1000);
                             }
                             else if(hintText.equals("onfocus")){
  
                                 final EditText inputTypeView = (EditText)view;
                                 mInstrumentation.runOnMainSync(new Runnable() {
                                     @Override
                                     public void run() {
                                         inputTypeView.requestFocus();
                                         inputTypeView.performClick();
                                         Log.e(TAG, "onfocus  clcik!");
  
                                     }
                                 });
  
                                 sleep(1000);
                             }
  
                             else if(hintText.equals("onblur")){
  
                                 final EditText inputTypeView = (EditText)view;
                                 mInstrumentation.runOnMainSync(new Runnable() {
                                     @Override
                                     public void run() {
                                         inputTypeView.requestFocus();
                                         inputTypeView.performClick();
                                         Log.e(TAG, "onblur  clcik!");
  
                                     }
                                 });
  
                                 sleep(1000);
                             }
  
                         }
  
                     }
                     if(null != inputTypeViewLoseFocus){
                         final EditText inputTypeView1 = inputTypeViewLoseFocus;
                         mInstrumentation.runOnMainSync(new Runnable() {
                             @Override
                             public void run() {
                                 inputTypeView1.requestFocus();
                                 inputTypeView1.performClick();
                                 Log.e(TAG, "失焦用途  clcik22!");
  
                             }
                         });
  
                         sleep(2000);
                         screenShot("TC_Input_Event_03_finish");
                         Log.e(TAG, "TC_Input_Event_03_finish snap!");
                         sleep(2000);
  
                     }
                 }
             }
          }
  
      }
  
  
  
      /**
       * get tc list by text
       * @param byText
       * @return
       * @throws InterruptedException
       */
      public ArrayList<View> getTestCaseListViewByText(String byText) throws InterruptedException {
          Log.e("TestScript_Guide", "byText ==" + byText);
  
          if(TextUtils.isEmpty(byText)){
              return null;
          }
          ArrayList<View> outViews = new ArrayList<View>();
  
          mViewGroup.findViewsWithText(outViews, byText, View.FIND_VIEWS_WITH_TEXT);
  
          for (View view :  outViews){
              String viewText = ((WXTextView)view).getText().toString();
              Log.e(TAG, "viewText ==" + viewText);
  
  
          }
          return outViews;
      }
  
      /**
       * findMyCaseByText
       */
      public View findMyCaseByText(String caseText){
          if (mCaseListIndexView.size() == 0) return null;
  
          WXTextView view = null;
          for(int i=0; i<mCaseListIndexView.size();i++){
  
              view = (WXTextView)mCaseListIndexView.get(i);
  
              if (view.getText().toString().toLowerCase().contains(caseText.toLowerCase())){
                  return view;
              }
  
          }
          return view;
      }
  
      /**
       * sleep
       */
      public void sleep(long time){
          try {
              Thread.sleep(time);
          } catch (InterruptedException e) {
              e.printStackTrace();
          }
      }
  
  
      /**
       * snapshot
       */
      public void screenShot(String shotName) {
          try {
              ScreenShot.shoot(WXPageActivity.wxPageActivityInstance, shotName);
          } catch (IOException e) {
              e.printStackTrace();
          }
      }
  
      public void setViewGroup(ViewGroup viewGroup){
          mViewGroup = viewGroup;
      }
      public void addAllTargetView(String target){
          int max = 6;
          int count =0 ;
          while (count < max){
              TouchUtils.dragQuarterScreenUp(this, this.getActivity());
              mViewGroup = (ViewGroup) waTestPageActivity.findViewById(R.id.container);
              mCaseListIndexView = ViewUtil.findViewWithText(mViewGroup, target);
              mCaseListIndexView.addAll(mCaseListIndexView);
              count ++;
          }
      }
  
  
  }
  