001: package org.sakaiproject.tool.assessment.samlite.test;
002:
003: import java.io.BufferedReader;
004: import java.io.IOException;
005: import java.io.InputStream;
006: import java.io.InputStreamReader;
007: import java.util.List;
008: import java.util.Iterator;
009:
010: import org.sakaiproject.tool.assessment.qti.util.XmlStringBuffer;
011: import org.sakaiproject.tool.assessment.samlite.api.Answer;
012: import org.sakaiproject.tool.assessment.samlite.api.Question;
013: import org.sakaiproject.tool.assessment.samlite.api.QuestionGroup;
014: import org.sakaiproject.tool.assessment.samlite.api.SamLiteService;
015: import org.springframework.test.AbstractDependencyInjectionSpringContextTests;
016: import org.w3c.dom.Document;
017:
018: public class SamLiteServiceTest extends
019: AbstractDependencyInjectionSpringContextTests {
020:
021: protected String[] getConfigLocations() {
022: return new String[] { "classpath*:**/testbeans.xml" };
023: }
024:
025: private SamLiteService samLiteService;
026:
027: public void setSamLiteService(SamLiteService samLiteService) {
028: this .samLiteService = samLiteService;
029: }
030:
031: public void testCreateQuiz() throws IOException {
032: String quizName = "Test Quiz";
033: String quizDescription = "Test Description";
034: //String quizData = "Question 1 (10 points)\r\nIs this right?\r\n*a. Yes\r\nb. No\r\nSave answer\r\n";
035:
036: InputStream is = this .getClass().getResourceAsStream(
037: "TestQuiz.txt");
038:
039: String line = "";
040: BufferedReader in = new BufferedReader(
041: new InputStreamReader(is));
042: StringBuffer buffer = new StringBuffer();
043: while ((line = in.readLine()) != null) {
044: buffer.append(line);
045: buffer.append('\r');
046: buffer.append('\n');
047: }
048:
049: QuestionGroup questionGroup = samLiteService.parse(quizName,
050: quizDescription, buffer.toString());
051:
052: List questions = questionGroup.getQuestions();
053:
054: //printQuestions(questions);
055:
056: // There should be 9 questions in the test quiz
057: assertEquals(questions.size(), 9);
058:
059: Question q1 = (Question) questions.get(0);
060: assertEquals(q1.getQuestionType(),
061: Question.MULTIPLE_CHOICE_QUESTION);
062:
063: Question q2 = (Question) questions.get(1);
064: assertEquals(q2.getQuestionType(),
065: Question.MULTIPLE_CHOICE_MULTIPLE_ANSWER_QUESTION);
066: assertEquals(q2.getQuestionPoints(), "15");
067:
068: Question q3 = (Question) questions.get(2);
069: assertEquals(q3.getQuestionType(),
070: Question.FILL_IN_THE_BLANK_QUESTION);
071:
072: Question q4 = (Question) questions.get(3);
073: assertEquals(q4.getQuestionType(),
074: Question.FILL_IN_THE_BLANK_QUESTION);
075: assertEquals(q4.getCorrectAnswer(), "Blank");
076:
077: Question q5 = (Question) questions.get(4);
078: assertEquals(q5.getQuestionType(),
079: Question.SHORT_ESSAY_QUESTION);
080:
081: Question q6 = (Question) questions.get(5);
082: assertEquals(q6.getQuestionType(),
083: Question.MULTIPLE_CHOICE_QUESTION);
084: assertEquals(q6.getAnswers().size(), 3);
085:
086: Question q7 = (Question) questions.get(6);
087: assertEquals(q7.getQuestionType(), Question.TRUE_FALSE_QUESTION);
088: assertEquals(q7.getCorrectAnswer(), "True");
089:
090: Question q8 = (Question) questions.get(7);
091: assertEquals(q8.getQuestionType(),
092: Question.SHORT_ESSAY_QUESTION);
093:
094: Question q9 = (Question) questions.get(8);
095: assertEquals(q9.getQuestionType(),
096: Question.MULTIPLE_CHOICE_QUESTION);
097: assertEquals(q9.getAnswers().size(), 3);
098:
099: Document doc = samLiteService.createDocument(questionGroup);
100:
101: //printDocument(doc);
102:
103: }
104:
105: private void printDocument(Document doc) {
106: XmlStringBuffer xmlBuffer = new XmlStringBuffer(doc);
107:
108: System.out.println(xmlBuffer.stringValue());
109: }
110:
111: private void printQuestions(List questions) {
112: if (null != questions) {
113: for (Iterator it = questions.iterator(); it.hasNext();) {
114: Question question = (Question) it.next();
115: System.out.println("Question "
116: + question.getQuestionNumber() + " ("
117: + question.getQuestionPoints() + " points)");
118: System.out.println();
119: System.out.println(question.getQuestion());
120: System.out.println();
121: if (null != question.getAnswers()) {
122: for (Iterator ait = question.getAnswers()
123: .iterator(); ait.hasNext();) {
124: Answer answer = (Answer) ait.next();
125: if (answer.isCorrect())
126: System.out.print("*");
127: System.out.println(answer.getId() + ". "
128: + answer.getText());
129: }
130: }
131: System.out.println();
132: if (question.getQuestionType() == Question.FILL_IN_THE_BLANK_QUESTION)
133: System.out.println("> "
134: + question.getCorrectAnswer());
135: System.out.println();
136: System.out.println();
137: }
138: }
139: }
140:
141: }
|