

import java.util.ArrayList;

import ca.ualberta.cs.cmput301t03app.controllers.PostController;
import ca.ualberta.cs.cmput301t03app.models.Answer;
import ca.ualberta.cs.cmput301t03app.models.Question;
import ca.ualberta.cs.cmput301t03app.views.MainActivity;
import android.test.ActivityInstrumentationTestCase2;
/**
 * This tests that the user is able to browse questions
 * and that the post controller is working.
 * @category Unit Testing
 */

public class TestBrowseQuestions extends ActivityInstrumentationTestCase2<MainActivity> {
	public TestBrowseQuestions(){
		super(MainActivity.class);
	}

	
	/**
	 * This tests that the postcontroller is adding a question to the question 
	 * list it holds.
	 * @throws InterruptedException 
	 */
	
	public void testGetQuestions() throws InterruptedException{
		PostController controller = new PostController(getInstrumentation().getTargetContext());
		Question q = new Question("Title1","TextBody1", "author");
		controller.getQuestionsInstance().add(q);
		Thread.sleep(2000);
		assertTrue("Failed to get questions, question list empty.", controller.getQuestionsInstance().size() > 0);
	}	
	
	// Creates a question and then creates an arbitrary amount of answers (it is currently 35)
	// and then assigns them as children of the question
	// The test then asserts that the counting method (size() of the arraylist of answers)
	// returns the expected number of children
	/**
	 * This test that the answers are being added 35 times when 
	 * an answer is created and added to that question
	 */
	public void testViewNumberOfAnswersToQuestion() {
		
		Question q1 = new Question("Title1","TextBody1", "author");
		for(int j = 0; j < 35; j++){
			Answer answer = new Answer("title", "author","1");
			q1.addAnswer(answer);
		}
		assertEquals("Not expected number of answers.", q1.countAnswers(),35);
	}
}
