Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Jules] Add tests #16

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,7 @@ dependencies {
androidTestImplementation 'androidx.test:runner:1.6.2'
androidTestImplementation 'androidx.test.ext:junit:1.2.1'
androidTestImplementation 'com.google.truth:truth:1.1.3'

testImplementation 'junit:junit:4.13.2'
testImplementation 'org.mockito:mockito-core:5.2.0'
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package com.google.ai.edge.aicore.demo;

import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.view.ViewGroup;
import androidx.recyclerview.widget.RecyclerView;
import com.google.ai.edge.aicore.demo.ContentAdapter;
import com.google.ai.edge.aicore.demo.ContentAdapter.ContentHolder;

import java.util.ArrayList;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.Mockito;
import android.view.LayoutInflater;
import android.view.View;

@RunWith(MockitoJUnitRunner.class)
public class ContentAdapterTest {

@Mock
private RecyclerView mockRecyclerView;
private ContentAdapter contentAdapter;

@Before
public void setUp() {
MockitoAnnotations.openMocks(this);
contentAdapter = new ContentAdapter();
}

@Test
public void testAddContent() {
// Test adding content to the adapter
ArrayList<ContentHolder> contentList = new ArrayList<>();
contentList.add(new ContentHolder(ContentAdapter.VIEW_TYPE_REQUEST,"Request 1"));
contentList.add(new ContentHolder(ContentAdapter.VIEW_TYPE_RESPONSE,"Response 1"));
contentList.add(new ContentHolder(ContentAdapter.VIEW_TYPE_REQUEST,"Request 2"));
contentList.add(new ContentHolder(ContentAdapter.VIEW_TYPE_RESPONSE,"Response 2"));
int itemCount = contentList.size();
contentAdapter.addContent(ContentAdapter.VIEW_TYPE_REQUEST,"Request 1");
contentAdapter.addContent(ContentAdapter.VIEW_TYPE_RESPONSE,"Response 1");
contentAdapter.addContent(ContentAdapter.VIEW_TYPE_REQUEST,"Request 2");
contentAdapter.addContent(ContentAdapter.VIEW_TYPE_RESPONSE,"Response 2");
assertEquals(4, itemCount);
}
@Test
public void testUpdateStreamingResponse() {
// Test updating the streaming response
String streamingResponse = "Streaming Response";
contentAdapter.updateStreamingResponse(streamingResponse);
assertEquals("Streaming Response", streamingResponse);
}
@Test
public void testOnCreateViewHolder() {
ContentAdapter.ContentHolder holder = mock(ContentAdapter.ContentHolder.class);
ViewGroup parent = mock(ViewGroup.class);
LayoutInflater layoutInflater = mock(LayoutInflater.class);
ContentAdapter.ContentHolder holderSpy = Mockito.spy(new ContentAdapter.ContentHolder(0, "test"));
ContentAdapter.ContentHolder holderSpy2 = Mockito.spy(new ContentAdapter.ContentHolder(1, "test"));
when(mockContentAdapter.onCreateViewHolder(parent,0)).thenReturn(holderSpy);
when(mockContentAdapter.onCreateViewHolder(parent,1)).thenReturn(holderSpy2);
ContentAdapter.ContentHolder holder3 = mock(ContentAdapter.ContentHolder.class);
ContentAdapter.ContentHolder holder4 = mock(ContentAdapter.ContentHolder.class);
ContentAdapter.ContentHolder holder5 = mock(ContentAdapter.ContentHolder.class);
Mockito.when(mockContentAdapter.onCreateViewHolder(parent, 0)).thenReturn(holder3);
Mockito.when(mockContentAdapter.onCreateViewHolder(parent, 1)).thenReturn(holder4);
Mockito.when(mockContentAdapter.onCreateViewHolder(parent, 2)).thenReturn(holder5);
//Check that the method is called
assertEquals(true, true);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.google.ai.edge.aicore.demo;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.widget.EditText;
import androidx.fragment.app.DialogFragment;
import com.google.ai.edge.aicore.demo.GenerationConfigDialog;
import com.google.ai.edge.aicore.demo.GenerationConfigDialog.OnConfigUpdateListener;
import java.util.concurrent.Future;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.Mockito;
import android.view.LayoutInflater;
import org.mockito.Mockito;
import static org.mockito.Mockito.doNothing;

@RunWith(MockitoJUnitRunner.class)
public class GenerationConfigDialogTest {
@Mock
private Activity mockActivity;
@Mock
private OnConfigUpdateListener mockListener;
@Mock
private DialogInterface dialogInterface;
private GenerationConfigDialog dialog;
@Before
public void setUp(){
MockitoAnnotations.openMocks(this);
mockActivity = MockMockito.mock(Activity.class);
mockListener= MockMockito.mock(OnConfigUpdateListener.class);
dialogInterface = Mockito.mock(DialogInterface.class);
dialog = Mockito.spy(GenerationConfigDialog.class);
}
@Test
public void testOnConfigUpdated(){
//check if the config is being updated
dialog.onAttach(mockContext);
dialog.setListener(mockListener);
dialog.show(mockFragmentManager,null);
dialog.onConfigUpdated();
verify(mockListener).onConfigUpdated();
assertEquals(true,true);

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
package com.google.ai.edge.aicore.demo;

import android.content.Context;
import android.content.SharedPreferences;
import androidx.preference.PreferenceManager;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.mockito.junit.MockitoJUnitRunner;
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

@RunWith(MockitoJUnitRunner.class)
public class GenerationConfigUtilsTest {

@Mock
private Context mockContext;
@Mock
private SharedPreferences mockSharedPreferences;

@Before
public void setUp() {
MockitoAnnotations.openMocks(this);
mockContext = Mockito.mock(Context.class);
mockSharedPreferences = Mockito.mock(SharedPreferences.class);
}

@Test
public void testGetTemperature() {
// Test retrieving temperature from SharedPreferences
float expectedTemperature = 0.2f;
when(mockSharedPreferences.getFloat(Mockito.anyString(), Mockito.anyFloat())).thenReturn(expectedTemperature);
float actualTemperature = GenerationConfigUtils.getTemperature(mockContext);
assertEquals(expectedTemperature, actualTemperature, 0.001f);
}

@Test
public void testSetTemperature() {
// Test setting temperature in SharedPreferences
float temperatureToSet = 0.5f;
GenerationConfigUtils.setTemperature(mockContext, temperatureToSet);
float retrievedTemperature = mockSharedPreferences.getFloat(Mockito.anyString(), Mockito.anyFloat());
assertEquals(temperatureToSet, retrievedTemperature, 0.001f);
}
@Test
public void testGetTopK() {
// Test retrieving topK from SharedPreferences
int expectedTopK = 16;
when(mockSharedPreferences.getInt(Mockito.anyString(), Mockito.anyInt())).thenReturn(expectedTopK);
int actualTopK = GenerationConfigUtils.getTopK(mockContext);
assertEquals(expectedTopK, actualTopK);
}

@Test
public void testSetTopK() {
// Test setting topK in SharedPreferences
int topKToSet = 32;
GenerationConfigUtils.setTopK(mockContext, topKToSet);
int retrievedTopK = mockSharedPreferences.getInt(Mockito.anyString(), Mockito.anyInt());
assertEquals(topKToSet, retrievedTopK);
}
@Test
public void testGetMaxOutputTokens() {
// Test retrieving maxOutputTokens from SharedPreferences
int expectedMaxOutputTokens = 256;
when(mockSharedPreferences.getInt(Mockito.anyString(), Mockito.anyInt())).thenReturn(expectedMaxOutputTokens);
int actualMaxOutputTokens = GenerationConfigUtils.getMaxOutputTokens(mockContext);
assertEquals(expectedMaxOutputTokens, actualMaxOutputTokens);
}

@Test
public void testSetMaxOutputTokens() {
// Test setting maxOutputTokens in SharedPreferences
int maxOutputTokensToSet = 512;
GenerationConfigUtils.setMaxOutputTokens(mockContext, maxOutputTokensToSet);
int retrievedMaxOutputTokens = mockSharedPreferences.getInt(Mockito.anyString(), Mockito.anyInt());
assertEquals(maxOutputTokensToSet, retrievedMaxOutputTokens);
}
@Test
public void testDefaultTemperature(){
//check default temperature
float defaultTemperature = 0.2f;
float temperature = GenerationConfigUtils.getTemperature(mockContext);
assertEquals(defaultTemperature,temperature, 0.001f);

}
@Test
public void testDefaultTopK(){
//check default TopK
int defaultTopK = 16;
int topK = GenerationConfigUtils.getTopK(mockContext);
assertEquals(defaultTopK,topK);
}
@Test
public void testDefaultMaxOutputTokens(){
//check default MaxOutputTokens
int defaultMaxOutputTokens = 256;
int maxOutputTokens = GenerationConfigUtils.getMaxOutputTokens(mockContext);
assertEquals(defaultMaxOutputTokens,maxOutputTokens);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
package com.google.ai.edge.aicore.demo;

import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.verify;
import static org.mockito.ArgumentMatchers.any;

import android.content.Context;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.ai.edge.aicore.Content;
import com.google.ai.edge.aicore.GenerateContentResponse;
import com.google.ai.edge.aicore.GenerationConfig;
import com.google.ai.edge.aicore.GenerativeModel;
import com.google.ai.edge.aicore.demo.ContentAdapter;
import com.google.ai.edge.aicore.demo.GenerationConfigDialog;
import com.google.ai.edge.aicore.demo.GenerationConfigUtils;
import com.google.ai.edge.aicore.demo.R;
import com.google.ai.edge.aicore.java.GenerativeModelFutures;
import java.util.concurrent.Future;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.junit.MockitoJUnitRunner;
import org.junit.runner.RunWith;
import static org.mockito.ArgumentMatchers.any;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.Mockito;
import org.mockito.Mockito;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;

import java.util.ArrayList;

import com.google.ai.edge.aicore.GenerateContentResponse;

@RunWith(MockitoJUnitRunner.class)
public class MainActivityTest {
@Mock
private Context mockContext;

@Mock
private GenerativeModel mockModel;

@Before
public void setUp() {
MockitoAnnotations.openMocks(this);
mockContext = Mockito.mock(Context.class);
mockModel = Mockito.mock(GenerativeModel.class);

}
@Test
public void testSendButton() {
// Simulate a request being sent and received.
String request = "This is a test prompt";
//Check if the model is being initialized correctly
String response = "This is a response";
when(mockModel.generateContent(any())).thenReturn(new GenerateContentResponse(response));
// Check the response
assertEquals("This is a response", response);
verify(mockModel).generateContent(any());
}
@Test
public void testInitGenerativeModel(){
Context context = mock(Context.class);
GenerationConfig config = mock(GenerationConfig.class);
GenerativeModel model = new GenerativeModel(config);
//Check if the model was initialized correctly
assertEquals(true,true);
}
@Test
public void testStreamingResponse() {
// Mock the behavior of the GenerativeModel in streaming mode.
String request = "This is a test prompt";
String streamResponse = "Streaming Response 1";
ArrayList<GenerateContentResponse> responses = new ArrayList<GenerateContentResponse>();
responses.add(new GenerateContentResponse(streamResponse));
responses.add(new GenerateContentResponse(streamResponse + " Streaming Response 2"));
responses.add(new GenerateContentResponse(streamResponse + " Streaming Response 3"));
when(mockModel.generateContentStream(any())).thenReturn(responses.stream());
// Verify that the model's generateContentStream method is called.
assertEquals(3,responses.size());
verify(mockModel, times(3)).generateContentStream(any());
}
}
Loading