Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / libaddressinput / src / java / test / com / android / i18n / addressinput / AddressWidgetUiComponentProviderTest.java
1 /*
2  * Copyright (C) 2014 Google Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package com.android.i18n.addressinput;
18
19 import com.android.i18n.addressinput.testing.TestActivity;
20
21 import android.app.Activity;
22 import android.app.ProgressDialog;
23 import android.content.Context;
24 import android.test.ActivityInstrumentationTestCase2;
25 import android.view.View;
26 import android.widget.ArrayAdapter;
27 import android.widget.EditText;
28 import android.widget.LinearLayout;
29 import android.widget.Spinner;
30 import android.widget.TextView;
31
32 import junit.framework.Assert;
33
34 /**
35  * Test class for {@link AddressWidgetUiComponentProvider}.
36  */
37 public class AddressWidgetUiComponentProviderTest
38     extends ActivityInstrumentationTestCase2<TestActivity> {
39   private AddressWidget widget;
40   private AddressWidgetUiComponentProvider componentProvider;
41   private LinearLayout container;
42   private AddressData address;
43   private Context context;
44   private int customTextViewCounter;
45   private int customProgressDialogCounter;
46
47   public AddressWidgetUiComponentProviderTest() {
48     super(TestActivity.class);
49   }
50
51   @Override
52   protected void setUp() throws Exception {
53     super.setUp();
54     AddressData.Builder builder = new AddressData.Builder()
55         .setCountry("US")
56         .setLanguageCode("en")
57         .setAddressLine1("1098 Alta Ave")
58         .setAdminArea("CA");
59     address = builder.build();
60     context = getActivity();
61     container = new LinearLayout(context);
62   }
63
64   public void testCustomWidgets() {
65     customTextViewCounter = 0;
66     customProgressDialogCounter = 0;
67     componentProvider = new TestComponentProvider(context);
68     widget = new AddressWidget(context, container, new FormOptions.Builder().build(),
69         new SimpleClientCacheManager(), componentProvider);
70     widget.renderFormWithSavedAddress(address);
71
72     for (AddressField field : AddressField.values()) {
73       if (field.equals(AddressField.COUNTRY)) {
74         continue;
75       }
76
77       View view = widget.getViewForField(field);
78       if (view instanceof EditText) {
79         assertTrue("Field " + field + " does not use customized edit text widget.",
80             view instanceof CustomEditText);
81       } else if (view instanceof Spinner) {
82         assertTrue("Field " + field + " does not use customized spinner widget.",
83             view instanceof CustomSpinner);
84         assertTrue("Field " + field + " does not use customized ArrayAdapter.",
85             ((Spinner) view).getAdapter() instanceof CustomArrayAdapter);
86       }
87     }
88
89     assertTrue("Custom TextView label not used.", customTextViewCounter > 0);
90     assertTrue("Custom ProgressDialog not used.", customProgressDialogCounter > 0);
91   }
92
93   private void increaseTextViewCounter() {
94     customTextViewCounter++;
95   }
96
97   private void increaseProgressDialogCounter() {
98     customProgressDialogCounter++;
99   }
100
101   private class CustomEditText extends EditText {
102     CustomEditText(Context context) {
103       super(context);
104     }
105   }
106
107   private class CustomSpinner extends Spinner {
108     CustomSpinner(Context context) {
109       super(context);
110     }
111   }
112
113   private class CustomArrayAdapter<String> extends ArrayAdapter {
114     CustomArrayAdapter(Context context, int id) {
115       super(context, id);
116     }
117   }
118
119   private class TestComponentProvider extends AddressWidgetUiComponentProvider {
120     TestComponentProvider(Context context) {
121       super(context);
122     }
123
124     protected TextView createUiLabel(CharSequence label, AddressField.WidthType widthType) {
125       TextView result = new TextView(mContext);
126       result.setText(label);
127       AddressWidgetUiComponentProviderTest.this.increaseTextViewCounter();
128       return result;
129     }
130
131     protected EditText createUiTextField(AddressField.WidthType widthType) {
132       return new CustomEditText(mContext);
133     }
134
135     protected Spinner createUiPickerSpinner(AddressField.WidthType widthType) {
136       return new CustomSpinner(mContext);
137     }
138
139     protected ArrayAdapter<String> createUiPickerAdapter(AddressField.WidthType widthType) {
140       ArrayAdapter<String> result = new CustomArrayAdapter<String>(
141           context, android.R.layout.simple_spinner_item);
142       result.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
143       return result;
144     }
145
146     protected ProgressDialog getUiActivityIndicatorView() {
147       AddressWidgetUiComponentProviderTest.this.increaseProgressDialogCounter();
148       return super.getUiActivityIndicatorView();
149     }
150   }
151 }