use of org.olat.modules.assessment.AssessmentEntry in project openolat by klemens.
the class AssessmentTestSessionDAOTest method createTestSession_repo.
@Test
public void createTestSession_repo() {
// prepare a test and a user
RepositoryEntry testEntry = JunitTestHelper.createAndPersistRepositoryEntry();
Identity assessedIdentity = JunitTestHelper.createAndPersistIdentityAsRndUser("session-1");
AssessmentEntry assessmentEntry = assessmentService.getOrCreateAssessmentEntry(assessedIdentity, null, testEntry, "-", testEntry);
dbInstance.commit();
AssessmentTestSession testSession = testSessionDao.createAndPersistTestSession(testEntry, testEntry, "-", assessmentEntry, assessedIdentity, null, true);
Assert.assertNotNull(testSession);
dbInstance.commit();
}
use of org.olat.modules.assessment.AssessmentEntry in project openolat by klemens.
the class AssessmentToolManagerTest method assessmentTool_coach.
@Test
public void assessmentTool_coach() {
// course
Identity author = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-author-1");
ICourse course = CoursesWebService.createEmptyCourse(author, "course-assessment-tool", "course long name", null);
// members as participant and coach
Identity assessedIdentity1 = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-1");
Identity assessedIdentity2 = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-2");
Identity assessedIdentity3 = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-3");
Identity assessedIdentity4 = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-4");
Identity coach = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-coach-1");
RepositoryEntry entry = course.getCourseEnvironment().getCourseGroupManager().getCourseEntry();
RepositoryEntry refEntry = JunitTestHelper.createAndPersistRepositoryEntry();
String subIdent = UUID.randomUUID().toString();
BusinessGroup group1 = businessGroupDao.createAndPersist(null, "assessment-tool-bg-1", "assessment-tool-bg-1-desc", -1, -1, false, false, false, false, false);
businessGroupRelationDao.addRelationToResource(group1, entry);
BusinessGroup group2 = businessGroupDao.createAndPersist(null, "assessment-tool-bg-2", "assessment-tool-bg-2-desc", -1, -1, false, false, false, false, false);
businessGroupRelationDao.addRelationToResource(group2, entry);
businessGroupRelationDao.addRole(assessedIdentity1, group1, GroupRoles.participant.name());
businessGroupRelationDao.addRole(assessedIdentity2, group1, GroupRoles.participant.name());
businessGroupRelationDao.addRole(assessedIdentity3, group2, GroupRoles.participant.name());
businessGroupRelationDao.addRole(coach, group1, GroupRoles.coach.name());
dbInstance.commitAndCloseSession();
// some datas
assessmentEntryDao.createAssessmentEntry(assessedIdentity1, null, entry, subIdent, refEntry, 3.0f, Boolean.FALSE, null, null);
assessmentEntryDao.createAssessmentEntry(assessedIdentity2, null, entry, subIdent, refEntry, 5.0f, Boolean.TRUE, null, null);
assessmentEntryDao.createAssessmentEntry(assessedIdentity3, null, entry, subIdent, refEntry, 8.0f, Boolean.TRUE, null, null);
assessmentEntryDao.createAssessmentEntry(assessedIdentity4, null, entry, subIdent, refEntry, 9.0f, Boolean.TRUE, null, null);
assessmentEntryDao.createAssessmentEntry(null, UUID.randomUUID().toString(), entry, subIdent, refEntry);
dbInstance.commitAndCloseSession();
// coach of group 1 with id 1 and id2
List<BusinessGroup> coachedGroups = Collections.singletonList(group1);
AssessmentToolSecurityCallback assessmentCallback = new AssessmentToolSecurityCallback(false, false, false, true, coachedGroups);
SearchAssessedIdentityParams params = new SearchAssessedIdentityParams(entry, subIdent, refEntry, assessmentCallback);
// statistics
AssessmentStatistics statistics = assessmentToolManager.getStatistics(coach, params);
Assert.assertEquals(4.0d, statistics.getAverageScore().doubleValue(), 0.0001);
Assert.assertEquals(1, statistics.getCountFailed());
Assert.assertEquals(1, statistics.getCountPassed());
// check assessed identities list
List<Identity> assessedIdentities = assessmentToolManager.getAssessedIdentities(coach, params);
Assert.assertNotNull(assessedIdentities);
Assert.assertEquals(2, assessedIdentities.size());
// number of assessed identities
int numOfAssessedIdentities = assessmentToolManager.getNumberOfAssessedIdentities(coach, params);
Assert.assertEquals(2, numOfAssessedIdentities);
// check only the queries
AssessmentMembersStatistics participantStatistics = assessmentToolManager.getNumberOfParticipants(coach, params);
Assert.assertNotNull(participantStatistics);
int numOfInitialLanches = assessmentToolManager.getNumberOfInitialLaunches(coach, params);
// not launched, only simulated
Assert.assertEquals(0, numOfInitialLanches);
List<IdentityShort> assessedShortIdentities = assessmentToolManager.getShortAssessedIdentities(coach, params, 120);
Assert.assertNotNull(assessedShortIdentities);
Assert.assertEquals(2, assessedShortIdentities.size());
List<AssessmentEntry> assessmentEntries = assessmentToolManager.getAssessmentEntries(coach, params, AssessmentEntryStatus.notStarted);
Assert.assertNotNull(assessmentEntries);
Assert.assertEquals(0, assessmentEntries.size());
// separate check with more options in the search parameters
// add by group key
params.setBusinessGroupKeys(Collections.singletonList(group1.getKey()));
// assessed groups
List<AssessedBusinessGroup> assessedGroups = assessmentToolManager.getBusinessGroupStatistics(coach, params);
Assert.assertNotNull(assessedGroups);
Assert.assertEquals(1, assessedGroups.size());
// check assessed identities list
List<Identity> assessedIdentitiesAlt = assessmentToolManager.getAssessedIdentities(coach, params);
Assert.assertNotNull(assessedIdentitiesAlt);
Assert.assertEquals(2, assessedIdentitiesAlt.size());
// number of assessed identities
int numOfAssessedIdentitiesAlt = assessmentToolManager.getNumberOfAssessedIdentities(coach, params);
Assert.assertEquals(2, numOfAssessedIdentitiesAlt);
List<IdentityShort> assessedShortIdentitiesAlt = assessmentToolManager.getShortAssessedIdentities(coach, params, 120);
Assert.assertNotNull(assessedShortIdentitiesAlt);
Assert.assertEquals(2, assessedShortIdentitiesAlt.size());
List<AssessmentEntry> assessmentEntriesAlt = assessmentToolManager.getAssessmentEntries(coach, params, AssessmentEntryStatus.notStarted);
Assert.assertNotNull(assessmentEntriesAlt);
Assert.assertEquals(0, assessmentEntriesAlt.size());
}
use of org.olat.modules.assessment.AssessmentEntry in project openolat by klemens.
the class HighScoreManagerTest method highscoreTest.
@Test
public void highscoreTest() {
List<AssessmentEntry> assessEntries = new ArrayList<>();
int[] scores = { 1, 23, 10 };
Identity assessedIdentity = null;
// Create entries, add to List
for (int i = 0; i < scores.length; i++) {
assessedIdentity = JunitTestHelper.createAndPersistIdentityAsRndUser("as-node-2");
RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry();
String subIdent = UUID.randomUUID().toString();
AssessmentEntry nodeAssessment = courseNodeAssessmentDao.createAssessmentEntry(assessedIdentity, subIdent, entry, subIdent, entry);
nodeAssessment.setScore(new BigDecimal(scores[i]));
dbInstance.commitAndCloseSession();
AssessmentEntry reloadedAssessment = courseNodeAssessmentDao.loadAssessmentEntryById(nodeAssessment.getKey());
assessEntries.add(reloadedAssessment);
}
List<Integer> ownIdIndices = new ArrayList<>();
List<HighScoreTableEntry> allMembers = new ArrayList<>();
List<HighScoreTableEntry> ownIdMembers = new ArrayList<>();
List<List<HighScoreTableEntry>> allPodium = new ArrayList<>();
allPodium.add(new ArrayList<>());
allPodium.add(new ArrayList<>());
allPodium.add(new ArrayList<>());
double[] allScores = highScoreManager.sortRankByScore(assessEntries, allMembers, ownIdMembers, allPodium, ownIdIndices, 5, JunitTestHelper.createAndPersistIdentityAsRndUser("as-node-2")).getScores();
assertNotNull(allScores);
assertEquals(allMembers.size(), scores.length);
assertTrue(allScores[0] > 20);
assertTrue(allScores[2] < 10);
double[] histogramData = highScoreManager.processHistogramData(allScores, 0F, 30F).getModifiedScores();
assertNotNull(histogramData);
long classwidth = highScoreManager.processHistogramData(allScores, 0F, 30F).getClasswidth();
assertEquals(2L, classwidth);
}
use of org.olat.modules.assessment.AssessmentEntry in project openolat by klemens.
the class IQTESTCourseNode method getUserScoreEvaluation.
/**
* @see org.olat.course.nodes.AssessableCourseNode#getUserScoreEvaluation(org.olat.course.run.userview.UserCourseEnvironment)
*/
@Override
public AssessmentEvaluation getUserScoreEvaluation(UserCourseEnvironment userCourseEnv) {
// read score from properties save score, passed and attempts information
AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager();
Identity mySelf = userCourseEnv.getIdentityEnvironment().getIdentity();
AssessmentEntry entry = am.getAssessmentEntry(this, mySelf);
return getUserScoreEvaluation(entry);
}
use of org.olat.modules.assessment.AssessmentEntry in project openolat by klemens.
the class ScoreAccounting method evaluateAll.
public boolean evaluateAll(boolean update) {
Identity identity = userCourseEnvironment.getIdentityEnvironment().getIdentity();
List<AssessmentEntry> entries = userCourseEnvironment.getCourseEnvironment().getAssessmentManager().getAssessmentEntries(identity);
AssessableTreeVisitor visitor = new AssessableTreeVisitor(entries, update);
// collect all assessable nodes and eval 'em
CourseNode root = userCourseEnvironment.getCourseEnvironment().getRunStructure().getRootNode();
// breadth first traversal gives an easier order of evaluation for debugging
// however, for live it is absolutely mandatory to use depth first since using breadth first
// the score accoutings local cache hash map will never be used. this can slow down things like
// crazy (course with 10 tests, 300 users and some crazy score and passed calculations will have
// 10 time performance differences)
cachedScoreEvals.clear();
for (AssessmentEntry entry : entries) {
String nodeIdent = entry.getSubIdent();
CourseNode courseNode = userCourseEnvironment.getCourseEnvironment().getRunStructure().getNode(nodeIdent);
if (courseNode instanceof AssessableCourseNode) {
AssessableCourseNode acn = (AssessableCourseNode) courseNode;
AssessmentEvaluation se = AssessmentEvaluation.toAssessmentEvalutation(entry, acn);
cachedScoreEvals.put(acn, se);
}
}
// true=depth first
TreeVisitor tv = new TreeVisitor(visitor, root, true);
tv.visitAll();
return visitor.hasChanges();
}
Aggregations