daffa_usman/ElementTest.java
2024-12-31 09:45:13 +07:00

292 lines
12 KiB
Java

package org.aplas.myshop;
import android.graphics.Typeface;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.GradientDrawable;
import android.view.View;
import android.widget.Adapter;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RelativeLayout;
import android.widget.Spinner;
import android.widget.TableLayout;
import android.widget.TextView;
import java.util.List;
public class ElementTest extends org.aplas.myshop.ViewTest {
private View component;
private String compName;
private String msgHeader;
private String className;
//private ArrayList<HashMap> testList = new ArrayList<>();
public ElementTest(View comp) {
component =comp;
compName = component.getContext().getResources().getResourceEntryName(component.getId());
className = component.getClass().getSimpleName();
msgHeader = "\n( "+compName+" - "+className+" ) ";
}
public void testIdName(String expected) {
String msg = msgHeader + "Element Id Name is not suitable\n";
testItem(expected,compName,msg,1);
}
public void testWidth(int expected) {
String msg = msgHeader + "Element width is not suitable\n";
testItem(expected,component.getLayoutParams().width,msg,1);
}
public void testHeight(int expected) {
String msg = msgHeader + "Element height is not suitable\n";
testItem(expected,component.getLayoutParams().height,msg,1);
}
public void testWeight(float expected) {
String msg = msgHeader + "Element height is not suitable\n";
testItem(expected,((LinearLayout.LayoutParams)component.getLayoutParams()).weight,msg,1);
}
public void testOrientation(int expected) {
String msg = msgHeader + "Element orientation is not suitable\n";
testItem(expected,((LinearLayout)component).getOrientation(),msg,1);
}
public void testTopMargin(int expected) {
String msg = msgHeader + "Element top margin is not suitable\n";
if (component.getLayoutParams().getClass().equals(RelativeLayout.LayoutParams.class)) {
testItem(expected,((RelativeLayout.LayoutParams)component.getLayoutParams()).topMargin,msg,1);
} else {
testItem(expected, ((LinearLayout.LayoutParams) component.getLayoutParams()).topMargin, msg, 1);
}
}
public void testBottomMargin(int expected) {
String msg = msgHeader + "Element top margin is not suitable\n";
if (component.getLayoutParams().getClass().equals(RelativeLayout.LayoutParams.class)) {
testItem(expected,((RelativeLayout.LayoutParams)component.getLayoutParams()).bottomMargin,msg,1);
} else {
testItem(expected, ((LinearLayout.LayoutParams) component.getLayoutParams()).bottomMargin, msg, 1);
}
}
public void testPaddingLeft(int expected) {
String msg = msgHeader + "Element left padding is not suitable\n";
testItem(expected,component.getPaddingLeft(),msg,1);
}
public void testPaddingRight(int expected) {
String msg = msgHeader + "Element right padding is not suitable\n";
testItem(expected,component.getPaddingRight(),msg,1);
}
public void testPadding(int expected) {
String msg = msgHeader + "Element padding is not suitable\n";
testItem(expected,component.getPaddingTop(),msg,1);
testItem(expected,component.getPaddingBottom(),msg,1);
testItem(expected,component.getPaddingLeft(),msg,1);
testItem(expected,component.getPaddingRight(),msg,1);
}
public void testBgColor(int expected) {
String msg = msgHeader + "Element Background color is not suitable\n";
testItem(expected,((ColorDrawable) component.getBackground()).getColor(),msg,1);
}
public void testBgGradientColor(int[] expected) {
String msg = msgHeader + "Element Background gradient color is not suitable\n";
GradientDrawable draw = (GradientDrawable) component.getBackground();
//draw.getColors()
testItem(expected[0],draw.getColors()[0],msg,1);
testItem(expected[1],draw.getColors()[1],msg,1);
testItem(expected[2],draw.getColors()[2],msg,1);
}
public void testTextString(String expected) {
String msg = msgHeader + "Element text string is not suitable\n";
testItem(expected,((TextView)component).getText().toString(),msg,1);
}
public void testTextFace(Typeface expected) {
String msg = msgHeader + "Element text font is not suitable\n";
testItem(expected,((TextView)component).getPaint().getTypeface(),msg,1);
}
public void testTextStyle(int expected) {
String msg = msgHeader + "Element text style (bold/italic/normal) is not suitable\n";
testItem(expected,((TextView)component).getPaint().getTypeface().getStyle(),msg,1);
}
public void testTextColor(int expected) {
String msg = msgHeader + "Element text color is not suitable\n";
testItem(expected,((TextView)component).getTextColors().getDefaultColor(),msg,1);
}
public void testTextSize(float expected) {
String msg = msgHeader + "Element text size is not suitable\n";
/*if (className.equals("AppCompatSpinner")) {
testItem(expected,((Spinner)component).get,msg,1);
}*/
testItem(expected,((TextView)component).getTextSize(),msg,1);
}
public void testGravity(int expected) {
String msg = msgHeader + "Element gravity orientation is not suitable\n";
if (className.equals("AppCompatSpinner")) {
testItem(expected,((Spinner)component).getGravity(),msg,1);
} else if (className.equals("AppCompatTextView")) {
testItem(expected, ((TextView) component).getGravity(), msg, 1);
} else if (className.equals("TableLayout")) {
testItem(expected, ((LinearLayout)component).getGravity(), msg, 1);
}
}
public void testAllCaps(boolean expected) {
String msg = msgHeader + "Element all caps is not suitable\n";
testItem(expected,((TextView)component).isAllCaps(),msg,1);
}
public void testHintText(String expected) {
String msg = msgHeader + "Element hint text is not suitable\n";
testItem(expected,((TextView)component).getHint().toString(),msg,1);
}
public void testInputType(int expected) {
String msg = msgHeader + "Element input type is not suitable\n";
testItem(expected,((TextView)component).getInputType(),msg,1);
}
public void testIsEnabled(boolean expected) {
String msg = msgHeader + "Element enabled value is not suitable\n";
testItem(expected,component.isEnabled(),msg,1);
}
public void testPromptText(String expected) {
String msg = msgHeader + "Element prompt text is not suitable\n";
testItem(expected,((Spinner)component).getPrompt().toString(),msg,1);
}
public void testSpinnerMode(int expected) {
String msg = msgHeader + "Element mode is not suitable\n";
if (expected==0) {
testItem(expected,((Spinner)component).getDropDownVerticalOffset(),msg,1);
} else {
testItem(expected,((Spinner)component).getDropDownVerticalOffset()>0,msg,3);
}
}
public void testSpinnerContent(List expected) {
String msg = msgHeader + "Element spinner content is not suitable\n";
Adapter list = ((Spinner)component).getAdapter();
String res = "";
for (int i=0; i<list.getCount(); i++){
res += list.getItem(i)+";";
/*
if (!expected.get(i).equals(list.getItem(i))) {
isValid = false;
}*/
}
testItem(listToString(expected),res,msg,1);
}
public void testSpinnerContentUnordered(List expected) {
String msg = msgHeader + "Spinner's content is not correct\n";
Adapter list = ((Spinner)component).getAdapter();
//String res = "";
for (int i=0; i<list.getCount(); i++){
//res += list.getItem(i)+";";
testItem(null, expected.contains(list.getItem(i)),msg,3);
}
//testItem(listToString(expected),res,msg,1);
}
public String getSelectedSpinnerItem() {
Adapter list = ((Spinner)component).getAdapter();
/* String res = "";
for (int i=0; i<list.getCount(); i++){
res += list.getItem(i)+";";
testItem(null, expected.contains(list.getItem(i)),msg,3);
}*/
return (String) list.getItem(0);
}
public void testSpinnerContent(String[] expected) {
/*
String msg = msgHeader + "Element spinner content is not suitable\n";
//testItem(expected,((Spinner)component).getGravity(),msg,1);
Adapter list = ((Spinner)component).getAdapter();
boolean isValid = true;
for (int i=0; i<list.getCount(); i++){
if (!expected[i].equals(list.getItem(i))) {
isValid = false;
}
}
testItem(true,isValid,msg,1);
*/
String msg = msgHeader + "Element spinner content is not suitable\n";
Adapter list = ((Spinner)component).getAdapter();
String res = "";
for (int i=0; i<list.getCount(); i++){
res += list.getItem(i)+";";
}
testItem(arrayToString(expected),res,msg,1);
}
public void testSpinnerContent(String expected) {
testSpinnerContent(expected.split("\\,"));
}
public void testSelected(boolean expected) {
String msg = msgHeader + "Element checked/selected value is not suitable\n";
if (component.getClass().equals(androidx.appcompat.widget.AppCompatCheckBox.class)) {
testItem(expected,((CheckBox)component).isChecked(),msg,1);
} else {
testItem(expected,((RadioButton)component).isChecked(),msg,1);
}
}
public void testImageSrc(String expected) {
String msg = msgHeader + "Element image source is not suitable\n";
//int resId = R.font.cambria;
int resId = component.getContext().getResources().getIdentifier(expected, "drawable",component.getContext().getPackageName());
testItem(expected,component.getResources().getResourceEntryName(resId),msg,1);
//int resId = (Integer) component.gett
// testItem(0,resId,msg,1);
//testItem(expected,component.getResources().getResourceEntryName(resId),msg,1);
}
public void testLayoutBelow(int expected) {
String msg = msgHeader + "Element layout below is not suitable\n";
RelativeLayout.LayoutParams para = (RelativeLayout.LayoutParams)component.getLayoutParams();
testItem(expected, para.getRule(3), msg, 1); //check android:layout_below
//para.get
}
public void testLinearHorizontal(boolean expected) {
String msg = msgHeader + "Element layout center horizontal is not suitable\n";
RelativeLayout.LayoutParams para = (RelativeLayout.LayoutParams)component.getLayoutParams();
int val = (expected)?-1:0;
/*int val=0;
int idx=0;
for (int i=0; i<para.getRules().length; i++){
if (para.getRule(i)!=0) {
val=para.getRule(i);
idx=i;
}
}*/
testItem(val, para.getRule(14), msg, 1); //check android:layout_below
}
public void testStrectchColumn(boolean expected) {
String msg = msgHeader + "Element column strecth is not suitable\n";
testItem(expected,((TableLayout)component).isStretchAllColumns(),msg,1);
}
public void testVisibility(int visibility) {
String msg = msgHeader + "Element visibility is not suitable\n";
testItem(visibility,component.getVisibility(),msg,1);
}
}