Commit 2b5056d4 authored by Gamage B.G.N.U's avatar Gamage B.G.N.U

Code testing Completed

parent b4456552
......@@ -40,7 +40,7 @@ android {
// python.exe file path *********** please change this according to your file path
python{
buildPython "C:/Users/Ruvi/AppData/Local/Programs/Python/Python39/python.exe"
buildPython "C:/Users/Navod/AppData/Local/Programs/Python/Python39/python.exe"
}
}
......@@ -91,7 +91,8 @@ dependencies {
implementation 'com.alimuzaffar.lib:pinentryedittext:1.3.1'
implementation 'androidx.multidex:multidex:2.0.1'
androidTestImplementation 'com.android.support.test:rules:1.0.2'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
}
\ No newline at end of file
package com.elearning.probabilityandstatisticsanalyserandeducator.inputMethod;
import android.app.Activity;
import android.app.Instrumentation;
import android.view.View;
import androidx.test.rule.ActivityTestRule;
import com.elearning.probabilityandstatisticsanalyserandeducator.R;
import com.elearning.probabilityandstatisticsanalyserandeducator.calculationfunction.DescriptiveStatisticsCalcuation;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
import static org.junit.Assert.*;
public class DescriptiveSCinputMethodTest {
@Rule
public ActivityTestRule<DescriptiveSCinputMethod> mActivityTestRule =
new ActivityTestRule<DescriptiveSCinputMethod>(DescriptiveSCinputMethod.class);
Instrumentation.ActivityMonitor monitor = getInstrumentation().addMonitor(DescriptiveStatisticsCalcuation.class.getName(),null,false);
private DescriptiveSCinputMethod descriptiveSCinputMethod = null;
@Before
public void setUp() throws Exception {
descriptiveSCinputMethod = mActivityTestRule.getActivity();
}
@Test
public void testLaunch(){
View view = descriptiveSCinputMethod.findViewById(R.id.btnTakeImage);
assertNotNull(view);
onView(withId(R.id.btnTakeImage)).perform(click());
Activity testedFunction = getInstrumentation().waitForMonitorWithTimeout(monitor,15000);
assertNotNull(testedFunction);
testedFunction.finish();
}
@After
public void tearDown() throws Exception {
descriptiveSCinputMethod = null;
}
}
\ No newline at end of file
package com.elearning.probabilityandstatisticsanalyserandeducator.inputMethod;
import android.app.Activity;
import android.app.Instrumentation;
import android.view.View;
import androidx.test.rule.ActivityTestRule;
import com.elearning.probabilityandstatisticsanalyserandeducator.R;
import com.elearning.probabilityandstatisticsanalyserandeducator.calculationfunction.DescriptiveStatisticsCalcuation;
import com.elearning.probabilityandstatisticsanalyserandeducator.calculationfunction.ProbabilityDistributionCalculation;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
import static org.junit.Assert.*;
public class ProbabilityDistributionsIMTest {
@Rule
public ActivityTestRule<ProbabilityDistributionsIM> mActivityTestRule =
new ActivityTestRule<ProbabilityDistributionsIM>(ProbabilityDistributionsIM.class);
Instrumentation.ActivityMonitor monitor = getInstrumentation().addMonitor(ProbabilityDistributionCalculation.class.getName(),null,false);
private ProbabilityDistributionsIM probabilityDistributionsIM = null;
@Before
public void setUp() throws Exception {
probabilityDistributionsIM = mActivityTestRule.getActivity();
}
@Test
public void testLaunch(){
View view = probabilityDistributionsIM.findViewById(R.id.btnTakeImage);
assertNotNull(view);
onView(withId(R.id.btnTakeImage)).perform(click());
Activity testedFunction = getInstrumentation().waitForMonitorWithTimeout(monitor,35000);
assertNotNull(testedFunction);
testedFunction.finish();
}
@After
public void tearDown() throws Exception {
probabilityDistributionsIM = null;
}
}
\ No newline at end of file
package com.elearning.probabilityandstatisticsanalyserandeducator.inputMethod;
import android.app.Activity;
import android.app.Instrumentation;
import android.view.View;
import androidx.test.rule.ActivityTestRule;
import com.elearning.probabilityandstatisticsanalyserandeducator.R;
import com.elearning.probabilityandstatisticsanalyserandeducator.calculationfunction.DescriptiveStatisticsCalcuation;
import com.elearning.probabilityandstatisticsanalyserandeducator.calculationfunction.StandaradDeviationCalculation;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
import static org.junit.Assert.*;
public class StandardDeviationInputMethodTest {
@Rule
public ActivityTestRule<StandardDeviationInputMethod> mActivityTestRule =
new ActivityTestRule<StandardDeviationInputMethod>(StandardDeviationInputMethod.class);
Instrumentation.ActivityMonitor monitor = getInstrumentation().addMonitor(StandaradDeviationCalculation.class.getName(),null,false);
private StandardDeviationInputMethod standardDeviationInputMethod = null;
@Before
public void setUp() throws Exception {
standardDeviationInputMethod = mActivityTestRule.getActivity();
}
@Test
public void testLaunch(){
View view = standardDeviationInputMethod.findViewById(R.id.btnTakeImage);
assertNotNull(view);
onView(withId(R.id.btnTakeImage)).perform(click());
Activity testedFunction = getInstrumentation().waitForMonitorWithTimeout(monitor,25000);
assertNotNull(testedFunction);
testedFunction.finish();
}
@After
public void tearDown() throws Exception {
standardDeviationInputMethod = null;
}
}
\ No newline at end of file
......@@ -115,13 +115,9 @@ public class DescriptiveSCinputMethod extends AppCompatActivity {
// img_greyview = findViewById(R.id.greyImg);
textInput = findViewById(R.id.keyboard_Input);
rg_01 = findViewById(R.id.rg_01);
rg_02 = findViewById(R.id.rg_02);
setImageProperties = new SetImageProperties();
// Arraylist to pass the data
......@@ -302,7 +298,7 @@ public class DescriptiveSCinputMethod extends AppCompatActivity {
extractedData.add(output); // adding data to List
}
System.out.println("ExctractedData list size " + extractedData.size());
// System.out.println("ExctractedData list size " + extractedData.size());
// adding List to array in order to pass to ExtractData function
String[] dataArray = new String[extractedData.size()];
......@@ -326,11 +322,11 @@ public class DescriptiveSCinputMethod extends AppCompatActivity {
if (selectedType.equals("Solve Essay problem")) {
extractedKeywordsFromFuzzy = dsqc.DescriptiveStatisticsQuestionComparewithCSV(output, reading);
System.out.println("extractedKeywordsFromFuzzy " + extractedKeywordsFromFuzzy);
// System.out.println("extractedKeywordsFromFuzzy " + extractedKeywordsFromFuzzy);
//--------------------extrct dataset from DescripticeStatsQuesCompare class using ExtractDatasetfromDescriptiveQuestion method -----------------------------
extractDatasetForEssay = dsqc.ExtractDatasetFromDescriptiveQuestion(output);
System.out.println("extractDatasetForEssay " + extractDatasetForEssay);
// System.out.println("extractDatasetForEssay " + extractDatasetForEssay);
//System.out.println("Common elements == "+common);
// Converting list to array after data extraction function
......@@ -450,8 +446,6 @@ public class DescriptiveSCinputMethod extends AppCompatActivity {
}
//prepare the data for Tesseract
private void PrepareTessData(){
......@@ -465,7 +459,6 @@ public class DescriptiveSCinputMethod extends AppCompatActivity {
if (!file.exists()){
file.mkdirs();
}
if ((file.exists())) {
try {
......
package com.elearning.probabilityandstatisticsanalyserandeducator.inputMethod;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatDialogFragment;
import com.elearning.probabilityandstatisticsanalyserandeducator.R;
public class Input_Dialog extends AppCompatDialogFragment {
EditText verifyText;
Input_dialogInterface input_dialogInterface;
public static String textFromActivity;
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.activity_dialog_layout,null);
verifyText = view.findViewById(R.id.textFromDialog);
verifyText.setText(textFromActivity);
builder.setView(view)
.setTitle("Please Verify your input ")
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setPositiveButton("Verify", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String text = verifyText.getText().toString();
input_dialogInterface.applyTexts(text);
}
});
return builder.create();
}
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
input_dialogInterface = (Input_dialogInterface)context;
}
public interface Input_dialogInterface{
void applyTexts(String text);
}
public static void SetTextFromActivity(String text){
textFromActivity = text;
}
}
......@@ -39,184 +39,12 @@ import java.io.OutputStream;
public class ProbabilityCalculationIM extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
private TessBaseAPI tessBaseAPI;
String FinalDatapath;
String FinalPathToTESS_BASE_API;
//variable for permission
private int STORAGE_PERMISSION_CODE = 1;
//variable deceleration
ImageView imageView;
Button takeImage;
TextView outputText;
Bitmap finalbitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_probability_calculation_i_m);
// variable initialization
// imageView = findViewById(R.id.imgView);
// takeImage = findViewById(R.id.btnTakeImg);
// outputText = findViewById(R.id.displayText);
System.out.println(Environment.getDataDirectory().toString());
System.out.println(Environment.getExternalStorageDirectory().toString());
//button on click listener
takeImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TakePicture();
}
});
}
// function to start the camera activity
private void TakePicture() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent,0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK){
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
imageView.setImageBitmap(bitmap);
finalbitmap = bitmap;
if (ActivityCompat.checkSelfPermission(ProbabilityCalculationIM.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED){
if (ActivityCompat.checkSelfPermission(ProbabilityCalculationIM.this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED){
System.out.println("inside first permission check");
PrepareTessData();
System.out.println("before start ocr");
startOCR(bitmap);
}else {
ActivityCompat.requestPermissions(ProbabilityCalculationIM.this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},101);
}
}else{
//when permission is not granted
//Request Permission
System.out.println("inside not having permission");
ActivityCompat.requestPermissions(ProbabilityCalculationIM.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},100);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
//check Condition
System.out.println("inside onRequest permission");
if (requestCode == 100 && (grantResults.length > 0 ) && (grantResults[0] == PackageManager.PERMISSION_GRANTED)){
//when permission is granted
// call method
System.out.println("inside onRequest permission granted");
PrepareTessData();
startOCR(finalbitmap);
}else if (requestCode == 101 && (grantResults.length > 0 ) && (grantResults[0] == PackageManager.PERMISSION_GRANTED)){
System.out.println("inside onRequest permission granted read");
PrepareTessData();
startOCR(finalbitmap);
} else {
Toast.makeText(getApplicationContext(),"Permission not granted",Toast.LENGTH_LONG).show();
}
}
//prepare the data for Tesseract
private void PrepareTessData(){
try {
String fileList[] = getAssets().list("trainedData");
for (String fileName : fileList) {
File file = new File(Environment.getExternalStorageDirectory()
+ "/tesseract/tessdata/");
if (!file.exists()){
file.mkdirs();
}
if ((file.exists())) {
try {
System.out.println("before input streem");
InputStream in = getAssets().open(fileName);
System.out.println("after input streem");
String sdCardPath = Environment.getExternalStorageDirectory()
+ "/tesseract/tessdata";
System.out.println("after SdCardPath");
FinalDatapath = sdCardPath + "/eng.traineddata";
FinalPathToTESS_BASE_API = Environment.getExternalStorageDirectory() + "/tesseract/";
System.out.println("after outputFile");
OutputStream out = new FileOutputStream(FinalDatapath);
System.out.println("after output stream");
byte [] buff = new byte[1024];
int len;
while(( len = in.read(buff)) > 0){
System.out.println("inside while len");
out.write(buff,0,len);
}
System.out.println("before close");
in.close();
out.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
}catch (Exception e){
e.printStackTrace();
}
}
// start OCR function
private void startOCR(Bitmap bitmap){
try {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 7;
String result = this.getText(bitmap);
outputText.setText(result); // binding value to txt field
}catch (Exception e){
e.printStackTrace();
}
}
private String getText(Bitmap bitmap){
try {
tessBaseAPI = new TessBaseAPI();
}catch (Exception e){
Log.e(TAG,e.getMessage());
}
tessBaseAPI.init(FinalPathToTESS_BASE_API,"eng");
System.out.println("after tessbaseapi init");
tessBaseAPI.setImage(bitmap);
System.out.println("after tessbaseapi setImage");
String retStr = "No Result";
try {
retStr = tessBaseAPI.getUTF8Text();
}catch (Exception e){
Log.e(TAG,e.getMessage());
}
tessBaseAPI.end();
return retStr;
}
}
\ No newline at end of file
......@@ -19,6 +19,7 @@ import android.speech.RecognitionListener;
import android.speech.RecognizerIntent;
import android.speech.SpeechRecognizer;
import android.speech.tts.TextToSpeech;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.animation.Animation;
......@@ -63,7 +64,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ProbabilityDistributionsIM extends AppCompatActivity {
public class ProbabilityDistributionsIM extends AppCompatActivity implements Input_Dialog.Input_dialogInterface{
//variable deceleration
private static final String TAG = MainActivity.class.getSimpleName();
......@@ -74,11 +75,18 @@ public class ProbabilityDistributionsIM extends AppCompatActivity {
SetImageProperties setImageProperties;
OCR ocr;
Switch valueSwitch;
String textFromDialog;
static boolean isCameraInput = false;
Python py = null;
List<String> extractedData1;
List<String> extractedData2;
List<String> extractDatasetForX;
List<String> extractDatasetForPx;
Integer[] valuesTakenFromEditTextArray;
// ImageView imageView, img_greyview;
......@@ -93,6 +101,7 @@ public class ProbabilityDistributionsIM extends AppCompatActivity {
//ExtractData extractData;
ExtractValueForRandomVariable extractValueForRandomVariable;
ProbabilityValue probabilityValue;
ProbabilityDistributionQuestionComparation pdqc;
Uri uri;
......@@ -108,6 +117,9 @@ public class ProbabilityDistributionsIM extends AppCompatActivity {
private TextView textView;
private Intent voiceintent;
String[] datasetArray;
String[] datasetArray1;
@Override
......@@ -128,6 +140,7 @@ public class ProbabilityDistributionsIM extends AppCompatActivity {
valueSwitch = findViewById(R.id.switch_values);
pdqc = new ProbabilityDistributionQuestionComparation();
rg_01 = findViewById(R.id.rg_01);
......@@ -158,6 +171,9 @@ public class ProbabilityDistributionsIM extends AppCompatActivity {
// ----------------------------------------------------------------------------------------- Initialize the variables for voice recognition
textToSpeech = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
......@@ -363,7 +379,7 @@ public class ProbabilityDistributionsIM extends AppCompatActivity {
List<String> extractedDataset;
List<String> extractedDataset1;
ProbabilityDistributionQuestionComparation pdqc = new ProbabilityDistributionQuestionComparation();
List<String> reading = readProbDistributionQuestions();
List<String> extractDatasetForEssay;
List<String> extractDatasetForEssay1;
......@@ -402,19 +418,26 @@ public class ProbabilityDistributionsIM extends AppCompatActivity {
extractedDataset = extractValueForRandomVariable.InputRandomVariable(dataArray1);
extractedDataset1 = probabilityValue.ExtractionProbabilityValue(dataArray2);
System.out.println("blahhhhh"+isCameraInput);
//-------------------------------------------------------------------------------------------------------------------------------- remove lateer
if (isCameraInput){
// Converting list to array after daa extraction function
datasetArray = new String[extractDatasetForX.size()];
datasetArray = extractDatasetForX.toArray(datasetArray);
datasetArray1 = new String[extractDatasetForPx.size()];
datasetArray1 = extractDatasetForPx.toArray(datasetArray1);
}else {
// Converting list to array after daa extraction function
datasetArray = new String[extractedDataset.size()];
datasetArray = extractedDataset.toArray(datasetArray);
datasetArray1 = new String[extractedDataset1.size()];
datasetArray1 = extractedDataset1.toArray(datasetArray1);
}
// Converting list to array after daa extraction function
String[] datasetArray = new String[extractedDataset.size()];
datasetArray = extractedDataset.toArray(datasetArray);
String[] datasetArray1 = new String[extractedDataset1.size()];
datasetArray1 = extractedDataset1.toArray(datasetArray1);
// System.out.println("selected Type "+selectedRadioButton.getText().toString());
Intent intent = new Intent(ProbabilityDistributionsIM.this, ProbabilityDistributionCalculation.class);
......@@ -613,8 +636,7 @@ public class ProbabilityDistributionsIM extends AppCompatActivity {
@Override
public void run() {
//setting extracted value to editText
textInput.setText(result);
openDialog(result);
}
});
......@@ -682,4 +704,55 @@ public class ProbabilityDistributionsIM extends AppCompatActivity {
}
//Function to run the dialog box
public void openDialog(String text){
Input_Dialog input_dialog = new Input_Dialog();
Input_Dialog.SetTextFromActivity(text);
input_dialog.show(getSupportFragmentManager(),"Input Dialog");
}
@Override
public void applyTexts(String text) {
textFromDialog = text;
ExtractValuestoDisplay(text);
}
//set values to edittext after extracting
public void ExtractValuestoDisplay(String text){
isCameraInput = true;
String joined1 = "", joined2 = "";
String extractedValuesForX = null;
String extractedVauesForPx = null;
List<String> reading = readProbDistributionQuestions();
extractedValuesForX = pdqc.ProbabilityDistributionComparewithCSV(text, reading);
extractedVauesForPx = pdqc.ProbabilityDistributionComparewithCSV(text, reading);
extractDatasetForX = pdqc.ExtractRandomvalueFromDistributionQuestion(text);
extractDatasetForPx = pdqc.ExtractProbValueFromDistributionQuestion(text);
System.out.println("extractedValuesForX " + extractDatasetForX);
System.out.println("extractedVauesForPx " + extractDatasetForPx);
for (String s : extractDatasetForX){
joined1 = TextUtils.join(", ", extractDatasetForX);
}
for (String s : extractDatasetForPx){
joined2 = TextUtils.join(", ", extractDatasetForPx);
}
textInput.setText(joined1);
textInput_2.setText(joined2);
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#00000000" />
<stroke android:width="2.5dp"
android:color="#000000" />
<corners
android:radius="5dp"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<TextView
android:id="@+id/dialog_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Please verify your inputted question .."
/>
<EditText
android:id="@+id/textFromDialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
/>
</RelativeLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment