diff --git a/app/app.iml b/app/app.iml
index 2aa7e8e..a695701 100755
--- a/app/app.iml
+++ b/app/app.iml
@@ -20,7 +20,7 @@
-
+
@@ -103,6 +103,9 @@
+
+
+
diff --git a/app/build.gradle b/app/build.gradle
index c765274..1b80362 100755
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -19,6 +19,10 @@ android {
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
+
+ testOptions {
+ unitTests.returnDefaultValues = true
+ }
}
dependencies {
@@ -29,6 +33,14 @@ dependencies {
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
+ // Required -- JUnit 4 framework
+ testImplementation 'junit:junit:4.12'
+ // Optional -- Robolectric environment
+ testImplementation 'androidx.test:core:1.0.0'
+ // Optional -- Mockito framework
+ testImplementation 'org.mockito:mockito-core:1.10.19'
+
+
implementation 'com.google.code.gson:gson:2.8.6'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'com.google.android.material:material:1.0.0'
diff --git a/app/src/main/java/com/example/nfcapp/BCardObject/BCardObject.java b/app/src/main/java/com/example/nfcapp/BCardObject/BCardObject.java
new file mode 100644
index 0000000..c845e11
--- /dev/null
+++ b/app/src/main/java/com/example/nfcapp/BCardObject/BCardObject.java
@@ -0,0 +1,123 @@
+package com.example.nfcapp.BCardObject;
+
+import android.graphics.Bitmap;
+import android.graphics.Picture;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+public class BCardObject {
+
+ private int id; //
+
+ private Bitmap bitmapImage;
+ private String name;
+ private String position;
+
+ private List phoneNumber = new ArrayList<>();
+ private List email = new ArrayList<>();
+
+ BCardObject() {
+ this.id = new Random().nextInt();
+ this.name = new Integer(new Random().nextInt()).toString();
+ this.position = new Integer(new Random().nextInt()).toString();
+ }
+
+ public BCardObject(int id, String name, String position) {
+ this.id = id;
+ this.name = name;
+ this.position = position;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void editName(String name) {
+ this.name = name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getPosition() {
+ return position;
+ }
+
+ public void setPosition(String position) {
+ this.position = position;
+ }
+
+ public String[] getmail() {
+ return email.toArray(new String[email.size()]);
+ }
+
+ public String[] getPhoneNumber() {
+ return phoneNumber.toArray(new String[phoneNumber.size()]);
+ }
+
+ public void addMail(String email) {
+ this.email.add(email);
+ }
+
+ public void addNumber(String phoneNumber) {
+ this.phoneNumber.add(phoneNumber);
+ }
+
+ public void addPicture(File picture) {
+
+ }
+
+ boolean hasPicture() {
+ if (bitmapImage == null)
+ return false;
+
+ return true;
+ }
+
+ public String getNumber1() { return phoneNumber.get(0); }
+
+ public String getEmail1() { return email.get(0); }
+
+ @Override
+ public String toString() {
+ return "BCardObject{" +
+ "id=" + id +
+ ", picture=" + bitmapImage +
+ ", name='" + name + '\'' +
+ ", position='" + position + '\'' +
+ ", phoneNumber=" + phoneNumber +
+ ", email=" + email +
+ '}';
+ }
+
+ public String toTerminalString() {
+
+ StringBuilder sb = new StringBuilder();
+
+ sb.append("ID : " + id + "\n");
+ sb.append("Name : " + name + "\n");
+ sb.append("Position : "+ position + "\n");
+ sb.append("hasPicture : " + hasPicture() + "\n");
+
+ //PhoneNumber
+ sb.append("phoneNumbers : \n");
+ for (int i = 0; i < phoneNumber.size(); i++) {
+ sb.append(" " + (i+1) + " | " + phoneNumber.get(i) + "\n");
+ }
+
+ //email
+ sb.append("email : " + "\n");
+ for (int i = 0; i < email.size(); i++) {
+ sb.append(" " + (i+1) + " | " + email.get(i) + "\n");
+ }
+ return sb.toString();
+ }
+}
diff --git a/app/src/main/java/com/example/nfcapp/BCardObject/Company.java b/app/src/main/java/com/example/nfcapp/BCardObject/Company.java
new file mode 100644
index 0000000..2b76a08
--- /dev/null
+++ b/app/src/main/java/com/example/nfcapp/BCardObject/Company.java
@@ -0,0 +1,29 @@
+package com.example.nfcapp.BCardObject;
+
+import android.location.Location;
+
+public class Company {
+
+ String name;
+ String title;
+ Location location;
+ String jobDescibtion;
+
+ public Company(String name, String title, Location location, String jobDescibtion) {
+ this.name = name;
+ this.title = title;
+ this.location = location;
+ this.jobDescibtion = jobDescibtion;
+ }
+
+ public Company() {
+ }
+
+ void put(String TYPE, int input) {
+
+ }
+
+ void put(String TYPE, String input) {
+
+ }
+}
diff --git a/app/src/main/java/com/example/nfcapp/BCardObject/User.java b/app/src/main/java/com/example/nfcapp/BCardObject/User.java
new file mode 100644
index 0000000..c8c854c
--- /dev/null
+++ b/app/src/main/java/com/example/nfcapp/BCardObject/User.java
@@ -0,0 +1,66 @@
+package com.example.nfcapp.BCardObject;
+
+import static android.provider.ContactsContract.CommonDataKinds.StructuredName.*;
+
+import java.lang.reflect.Array;
+import java.util.ArrayList;
+
+
+public class User {
+
+ private int id;
+ private String prefix;
+ private String firstName;
+ private String middleName;
+ private String lastName;
+ private String suffix;
+ private ArrayList phoneNumber = new ArrayList<>();
+
+ public User(int id, String prefix, String firstName, String middleName, String lastName, String suffix) {
+ this.id = id;
+ this.prefix = prefix;
+ this.firstName = firstName;
+ this.middleName = middleName;
+ this.lastName = lastName;
+ this.suffix = suffix;
+ }
+
+ public User() {
+
+ }
+
+ void put(String TYPE, int input) {
+ switch(TYPE) {
+ case CONTACT_ID :
+ this.id = input;
+ break;
+
+ default:
+ throw new TypeNotPresentException(TYPE, new Throwable("exception thrown in com.example.nfcapp.BCardObject.User"));
+ }
+ }
+
+ void put(String TYPE, String input) {
+ switch (TYPE) {
+ case PREFIX:
+ this.prefix = input;
+ break;
+
+ case GIVEN_NAME:
+ this.firstName = input;
+ break;
+
+ case MIDDLE_NAME:
+ this.middleName = input;
+ break;
+
+ case FAMILY_NAME:
+ this.lastName = input;
+ break;
+
+ case SUFFIX:
+ this.suffix = input;
+ break;
+ }
+ }
+}
diff --git a/app/src/main/java/com/example/nfcapp/ButtonControl.java b/app/src/main/java/com/example/nfcapp/ButtonControl.java
new file mode 100644
index 0000000..6dd4249
--- /dev/null
+++ b/app/src/main/java/com/example/nfcapp/ButtonControl.java
@@ -0,0 +1,42 @@
+package com.example.nfcapp;
+
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class ButtonControl implements TextWatcher {
+
+ private EditText t1;
+ private EditText t2;
+ private EditText t3;
+ private EditText t4;
+ private Button button;
+
+ public ButtonControl(View t1, View t2, View t3, View t4, View b) {
+ this.t1 = (EditText) t1;
+ this.t2 = (EditText) t2;
+ this.t3 = (EditText) t3;
+ this.t4 = (EditText) t4;
+ this.button = (Button) b;
+ }
+
+ @Override
+ public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+
+ }
+
+ @Override
+ public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+
+ }
+
+ @Override
+ public void afterTextChanged(Editable editable) {
+ if (t1.length() > 0 && t2.length() > 0 && t3.length() > 0 && t4.length() > 0)
+ button.setClickable(true);
+ else
+ button.setClickable(false);
+ }
+}
diff --git a/app/src/main/java/com/example/nfcapp/MainActivity.java b/app/src/main/java/com/example/nfcapp/MainActivity.java
index 210aef8..59621fa 100755
--- a/app/src/main/java/com/example/nfcapp/MainActivity.java
+++ b/app/src/main/java/com/example/nfcapp/MainActivity.java
@@ -1,152 +1,163 @@
package com.example.nfcapp;
-import android.Manifest;
import android.content.Intent;
-import android.content.pm.PackageManager;
import android.nfc.NfcAdapter;
import android.os.Bundle;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
+
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
-import androidx.core.app.ActivityCompat;
-import androidx.core.content.ContextCompat;
-import androidx.fragment.app.Fragment;
import com.example.nfcapp.BusinessCardDir.BusinessCardItem;
-import com.example.nfcapp.FavouritesFragmentDir.FavouritesFragment;
-import com.example.nfcapp.HomeFragmentDir.HomeFragment;
+import com.example.nfcapp.BusinessCardDir.CorporateTitle;
import com.example.nfcapp.NFC.NFCHandler;
-import com.example.nfcapp.SettingsFragmentDir.SettingsFragment;
-import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.gson.Gson;
-public class MainActivity extends AppCompatActivity {
-
- NfcAdapter mNfcAdapter;
- NFCHandler nfc;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- BottomNavigationView bottomNav = findViewById(R.id.bottom_nav_view);
- bottomNav.setOnNavigationItemSelectedListener(navListener);
+import java.util.ArrayList;
+public class MainActivity extends AppCompatActivity {
- if (!(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) || !(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)) {
- requestStoragePermissions();
- }
+ private BusinessCardItem card;
+
+ //The array lists to hold our messages
+ private ArrayList messagesToSendArray = new ArrayList<>();
+ private ArrayList messagesReceivedArray = new ArrayList<>();
+
+ //Text boxes to add and display our messages
+ private EditText txtBoxAddMessage1;
+ private EditText txtBoxAddMessage2;
+ private EditText txtBoxAddMessage3;
+ private EditText txtBoxAddMessage4;
+ private TextView txtReceivedMessages;
+ private TextView txtMessagesToSend;
+ private Button btnAddMessage;
+
+ private NfcAdapter mNfcAdapter;
+ private NFCHandler nfc;
+
+ //Buttom addMessage
+ public void addMessage(View view) {
+ String s1 = txtBoxAddMessage1.getText().toString();
+ String s2 = txtBoxAddMessage2.getText().toString();
+ String s3 = txtBoxAddMessage3.getText().toString();
+ String s4 = txtBoxAddMessage4.getText().toString();
+ card = new BusinessCardItem(null, s1, CorporateTitle.Chief_brand_officer, s2, s3, s4, "");
+ Gson g = new Gson();
+ String newMessage = g.toJson(card);
+ messagesToSendArray.add(newMessage);
+ nfc.addMessageToSend(newMessage);
+
+ txtBoxAddMessage1.setText(null);
+ txtBoxAddMessage2.setText(null);
+ txtBoxAddMessage3.setText(null);
+ txtBoxAddMessage4.setText(null);
+ updateTextViews();
+
+ Toast.makeText(this, "Added Message", Toast.LENGTH_LONG).show();
+ }
- if (!(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.NFC) == PackageManager.PERMISSION_GRANTED) || !((ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.NFC_TRANSACTION_EVENT) == PackageManager.PERMISSION_GRANTED))) {
- requestNFCPermission();
+ private void updateTextViews() {
+ txtMessagesToSend.setText("Messages To Send:\n");
+ //Populate Our list of messages we want to send
+ if(messagesToSendArray.size() > 0) {
+ for (int i = 0; i < messagesToSendArray.size(); i++) {
+ txtMessagesToSend.append(getJson(messagesToSendArray.get(i)));
+ txtMessagesToSend.append("\n");
+ }
}
- /*
- //Check if NFC is available on device
- if (!nfc.checkNFC()) {
- Toast.makeText(this, "NFC not available on this device",
- Toast.LENGTH_SHORT).show();
+ txtReceivedMessages.setText("Messages Received:\n");
+ //Populate our list of messages we have received
+ if (messagesReceivedArray.size() > 0) {
+ for (int i = 0; i < messagesReceivedArray.size(); i++) {
+ txtReceivedMessages.append(getJson(messagesReceivedArray.get(i)));
+ txtReceivedMessages.append("\n");
+ }
}
- */
- mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
- nfc = new NFCHandler(this, mNfcAdapter);
}
- private void requestNFCPermission() {
- ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.NFC, Manifest.permission.NFC_TRANSACTION_EVENT},2);
+ private String getJson(String s) {
+ Gson g = new Gson();
+ BusinessCardItem temp = g.fromJson(s, BusinessCardItem.class);
+ return "Name: " + temp.getName() + "\n"+ "Company: " + temp.getCompanyName() + "\n" + "Adress: " + temp.getAddress() + "\n" + "Phone: " + temp.getPhoneNumber() + "\n" + "Email: " + temp.getEmail() + "\n";
}
- private void requestStoragePermissions() {
- if (!(ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_EXTERNAL_STORAGE))) {
- ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
- }
-
+ //Save our Array Lists of Messages for if the user navigates away
+ @Override
+ public void onSaveInstanceState(@NonNull Bundle savedInstanceState) {
+ super.onSaveInstanceState(savedInstanceState);
+ savedInstanceState.putStringArrayList("messagesToSend", messagesToSendArray);
+ savedInstanceState.putStringArrayList("lastMessagesReceived",messagesReceivedArray);
}
+ //Load our Array Lists of Messages for when the user navigates back
@Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
- if (requestCode == 1){
- if((grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) && (grantResults.length > 0 && grantResults[1] == PackageManager.PERMISSION_GRANTED));
- Toast.makeText(MainActivity.this, "thx", Toast.LENGTH_SHORT).show();
- } else if(requestCode == 2) {
- if((grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) && (grantResults.length > 0 && grantResults[1] == PackageManager.PERMISSION_GRANTED));
- Toast.makeText(MainActivity.this, "thx", Toast.LENGTH_SHORT).show();
- }
+ public void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
+ super.onRestoreInstanceState(savedInstanceState);
+ messagesToSendArray = savedInstanceState.getStringArrayList("messagesToSend");
+ messagesReceivedArray = savedInstanceState.getStringArrayList("lastMessagesReceived");
}
- private BottomNavigationView.OnNavigationItemSelectedListener navListener = new BottomNavigationView.OnNavigationItemSelectedListener() {
- @Override
- public boolean onNavigationItemSelected(@NonNull MenuItem item) {
- Fragment selectedFragment = null;
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
- switch (item.getItemId()){
- case R.id.nav_home:
- selectedFragment = new HomeFragment();
- break;
+ txtBoxAddMessage1 = findViewById(R.id.txtBoxAddMessage1);
+ txtBoxAddMessage2 = findViewById(R.id.txtBoxAddMessage2);
+ txtBoxAddMessage3 = findViewById(R.id.txtBoxAddMessage3);
+ txtBoxAddMessage4 = findViewById(R.id.txtBoxAddMessage4);
+ txtMessagesToSend = findViewById(R.id.txtMessageToSend);
+ txtReceivedMessages = findViewById(R.id.txtMessagesReceived);
+ btnAddMessage = findViewById(R.id.buttonAddMessage);
- case R.id.nav_fav:
- selectedFragment = new FavouritesFragment();
- break;
+ btnAddMessage.setClickable(false);
- case R.id.nav_settings:
- selectedFragment = new SettingsFragment();
- break;
- }
+ btnAddMessage.setText("Add Message");
- if (selectedFragment == null) {
- return false;
- }
+ final ButtonControl control = new ButtonControl(findViewById(R.id.txtBoxAddMessage1)
+ , findViewById(R.id.txtBoxAddMessage2)
+ , findViewById(R.id.txtBoxAddMessage3)
+ , findViewById(R.id.txtBoxAddMessage4)
+ , findViewById(R.id.buttonAddMessage));
- getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, selectedFragment).commit();
+ txtBoxAddMessage1.addTextChangedListener(control);
+ txtBoxAddMessage2.addTextChangedListener(control);
+ txtBoxAddMessage3.addTextChangedListener(control);
+ txtBoxAddMessage4.addTextChangedListener(control);
+ updateTextViews();
- return true;
- }
- };
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.head_menu, menu);
- return true;
- }
+ mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
+ nfc = new NFCHandler(this, mNfcAdapter);
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()){
- case R.id. head_item_send:
- nfc.addMessageToSend(new Gson().toJson(Database.getLocalID()));
- break;
+ //Check if NFC is available on device
+ if (!nfc.checkNFC()) {
+ Toast.makeText(this, "NFC not available on this device",
+ Toast.LENGTH_SHORT).show();
}
- return super.onOptionsItemSelected(item);
- }
-/*
- private void updateRecyclerViews() {
- Database.add(Database.read());
}
- */
@Override
public void onNewIntent(Intent intent) {
- /*Database.setIntentIncomingList(nfc.handleNfcIntent(intent));
- convertNewIntentToUsableItem();
- updateRecyclerViews();
- */
-
- Toast.makeText(this, nfc.handleNfcIntent(intent).get(0), Toast.LENGTH_SHORT).show();
- }
-/*
- void convertNewIntentToUsableItem() {
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < Database.getIntentIncomingList().size(); i++) {
- sb.append(Database.getIntentIncomingList().get(i));
- }
- Database.add(new Gson().fromJson(sb.toString(), BusinessCardItem.class));
+ messagesReceivedArray = nfc.handleNfcIntent(intent);
+ if (messagesReceivedArray != null)
+ Toast.makeText(this, "Received " + messagesReceivedArray.size() + " Messages", Toast.LENGTH_LONG).show();
+ else
+ Toast.makeText(this, "Received Blank Parcel", Toast.LENGTH_LONG).show();
+ updateTextViews();
}
- */
+ @Override
+ public void onResume() {
+ super.onResume();
+ messagesReceivedArray = nfc.handleNfcIntent(getIntent());
+
+ updateTextViews();
+ }
}
diff --git a/app/src/main/java/com/example/nfcapp/NFC/NFCHandler.java b/app/src/main/java/com/example/nfcapp/NFC/NFCHandler.java
index f230c67..a90c78d 100644
--- a/app/src/main/java/com/example/nfcapp/NFC/NFCHandler.java
+++ b/app/src/main/java/com/example/nfcapp/NFC/NFCHandler.java
@@ -115,12 +115,11 @@ public ArrayList handleNfcIntent(Intent NfcIntent) {
if (string.equals(activity.getPackageName())) { continue; }
messagesReceivedArray.add(string);
}
- Toast.makeText(activity, "Received " + messagesReceivedArray.size() +
- " Messages", Toast.LENGTH_LONG).show();
- }
- else {
- Toast.makeText(activity, "Received Blank Parcel", Toast.LENGTH_LONG).show();
+ //Toast.makeText(activity, "Received " + messagesReceivedArray.size() + " Messages", Toast.LENGTH_LONG).show();
}
+ //else {
+ // Toast.makeText(activity, "Received Blank Parcel", Toast.LENGTH_LONG).show();
+ //}
}
return this.messagesReceivedArray;
}
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 300001f..07814c7 100755
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,32 +1,64 @@
-
-
-
+
+
+ android:layout_height="wrap_content"
+ android:layout_below="@+id/txtBoxAddMessage3"
+ android:layout_centerHorizontal="true"
+ android:layout_marginTop="34dp" />
+
+
-
- android:background="?android:attr/windowBackground"
- app:menu="@menu/bottom_navigation"
+
- >
+
-
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/dimensions.xml b/app/src/main/res/values/dimensions.xml
new file mode 100644
index 0000000..48963b2
--- /dev/null
+++ b/app/src/main/res/values/dimensions.xml
@@ -0,0 +1,6 @@
+
+
+
+ 16dp
+ 16dp
+
\ No newline at end of file
diff --git a/app/src/test/java/com/example/nfcapp/NFC/NFCHandlerTest.java b/app/src/test/java/com/example/nfcapp/NFC/NFCHandlerTest.java
new file mode 100644
index 0000000..c8047f4
--- /dev/null
+++ b/app/src/test/java/com/example/nfcapp/NFC/NFCHandlerTest.java
@@ -0,0 +1,95 @@
+package com.example.nfcapp.NFC;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.nfc.NdefMessage;
+import android.nfc.NdefRecord;
+import android.nfc.NfcAdapter;
+import android.nfc.NfcEvent;
+import android.os.Parcelable;
+
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import static org.mockito.Mockito.mock;
+import static org.junit.Assert.*;
+
+public class NFCHandlerTest {
+
+ @Test
+ public void checkNFCTrue() {
+ Activity mockActivity = mock(Activity.class);
+ NfcAdapter mockAdapter = mock(NfcAdapter.class);
+ NFCHandler nfc = new NFCHandler(mockActivity, mockAdapter);
+ assertTrue(nfc.checkNFC());
+ }
+
+ @Test
+ public void checkNFCFalse() {
+ Activity mockActivity = mock(Activity.class);
+ NFCHandler nfc = new NFCHandler(mockActivity, null);
+ assertFalse(nfc.checkNFC());
+ }
+
+ @Test
+ public void handleNfcIntent() {
+ String test = "test";
+ Activity mockActivity = mock(Activity.class);
+ NfcAdapter mockAdapter = mock(NfcAdapter.class);
+ Intent mockIntent = mock(Intent.class);
+ NdefMessage mockMessage = mock(NdefMessage.class);
+ Parcelable[] messages = {mockMessage};
+ NdefRecord mockRecord = mock(NdefRecord.class);
+ NdefRecord[] records = {mockRecord};
+ Mockito.when(mockIntent.getAction()).thenReturn(NfcAdapter.ACTION_NDEF_DISCOVERED);
+ Mockito.when(mockIntent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)).thenReturn(messages);
+ Mockito.when(mockMessage.getRecords()).thenReturn(records);
+ Mockito.when(mockRecord.getPayload()).thenReturn(test.getBytes());
+ NFCHandler nfc = new NFCHandler(mockActivity, mockAdapter);
+
+ assertEquals("[test]", nfc.handleNfcIntent(mockIntent).toString());
+
+ Mockito.verify(mockIntent).getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
+ Mockito.verify(mockMessage).getRecords();
+ Mockito.verify(mockRecord).getPayload();
+ }
+
+ @Test
+ public void handleNfcIntentNull() {
+ Activity mockActivity = mock(Activity.class);
+ NfcAdapter mockAdapter = mock(NfcAdapter.class);
+ Intent mockIntent = mock(Intent.class);
+ Mockito.when(mockIntent.getAction()).thenReturn(NfcAdapter.ACTION_NDEF_DISCOVERED);
+ Mockito.when(mockIntent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)).thenReturn(null);
+ NFCHandler nfc = new NFCHandler(mockActivity, mockAdapter);
+
+ assertEquals("[]", nfc.handleNfcIntent(mockIntent).toString());
+
+ Mockito.verify(mockIntent).getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
+ }
+
+ @Test
+ public void createNdefMessage() {
+ Activity mockActivity = mock(Activity.class);
+ NfcAdapter mockAdapter = mock(NfcAdapter.class);
+ NfcEvent mockEvent = mock(NfcEvent.class);
+ //NdefRecord mockRecord = mock(NdefRecord.class);
+ Mockito.when(mockActivity.getPackageName()).thenReturn("");
+
+ NFCHandler nfc = new NFCHandler(mockActivity, mockAdapter);
+ nfc.addMessageToSend("test");
+
+ System.out.println(nfc.createNdefMessage(mockEvent).toString());
+ }
+
+ @Test
+ public void createNdefMessageNull() {
+ Activity mockActivity = mock(Activity.class);
+ NfcAdapter mockAdapter = mock(NfcAdapter.class);
+ NfcEvent mockEvent = mock(NfcEvent.class);
+
+ NFCHandler nfc = new NFCHandler(mockActivity, mockAdapter);
+
+ assertEquals(null, nfc.createNdefMessage(mockEvent));
+ }
+}
\ No newline at end of file