package org.sakaiproject.tool.gradebook.test;
import junit.framework.Assert;
import org.sakaiproject.tool.gradebook.Assignment;
import org.sakaiproject.tool.gradebook.AssignmentGradeRecord;
import org.sakaiproject.tool.gradebook.Category;
import org.sakaiproject.tool.gradebook.Comment;
import org.sakaiproject.tool.gradebook.CourseGrade;
import org.sakaiproject.tool.gradebook.CourseGradeRecord;
import org.sakaiproject.tool.gradebook.GradableObject;
import org.sakaiproject.tool.gradebook.GradeMapping;
import org.sakaiproject.tool.gradebook.Gradebook;
import org.sakaiproject.tool.gradebook.GradingEvent;
import org.sakaiproject.tool.gradebook.GradingEvents;
import org.sakaiproject.tool.gradebook.GradingScale;
import org.sakaiproject.tool.gradebook.Permission;
import org.sakaiproject.section.api.coursemanagement.Course;
import org.sakaiproject.section.api.coursemanagement.CourseSection;
import org.sakaiproject.section.api.coursemanagement.EnrollmentRecord;
import org.sakaiproject.section.api.coursemanagement.User;
import org.sakaiproject.section.api.facade.Role;
import org.sakaiproject.service.gradebook.shared.ConflictingAssignmentNameException;
import org.sakaiproject.service.gradebook.shared.GradebookService;
import org.sakaiproject.tool.gradebook.LetterGradePercentMapping;
import java.sql.Time;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Date;
import java.util.Map;
import java.util.Set;
import java.math.BigDecimal;
public class GradebookManagerOPCTest extends GradebookTestBase {
private Long assgn1Long;
private Long assgn3Long;
private Long cate1Long;
private Long cate2Long;
protected void onSetUpInTransaction() throws Exception {
super.onSetUpInTransaction();
String className = this.getClass().getName();
gradebookFrameworkService.addGradebook(className, className);
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
cate1Long = gradebookManager.createCategory(persistentGradebook.getId(), "cate 1", new Double(0.40), 0, 0, 0, false);
cate2Long = gradebookManager.createCategory(persistentGradebook.getId(), "cate 2", new Double(0.60), 0, 0, 0, false);
List list = (List) gradebookManager.getCategories(persistentGradebook.getId());
for(int i=0; i<list.size(); i++)
{
Category cat = (Category) list.get(i);
if(i == 0)
{
assgn1Long = gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cat.getId(),
cat.getName() + "_assignment_1", new Double(10.0), new Date(), new Boolean(false), new Boolean(true), new Boolean(false));
}
if(i == 1)
{
assgn3Long = gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cat.getId(),
cat.getName() + "_assignment_1", new Double(10.0), new Date(), new Boolean(false), new Boolean(true), new Boolean(false));
}
Long assign2 = gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cat.getId(),
cat.getName() + "_assignment_2", new Double(10.0), new Date(), new Boolean(false), new Boolean(true), new Boolean(false));
}
//create default in GradebookFrameworkServiceImpl
// LetterGradePercentMapping returnedGradeMap = gradebookManager.getDefaultLetterGradePercentMapping();
// Assert.assertTrue(returnedGradeMap == null);
//
// Map gradeMap = new HashMap();
// gradeMap.put("a+", new Double(98));
// gradeMap.put("a", new Double(95));
// gradeMap.put("a-", new Double(90));
// gradeMap.put("b+", new Double(88));
// gradeMap.put("b", new Double(85));
// gradeMap.put("b-", new Double(80));
// gradeMap.put("c+", new Double(78));
// gradeMap.put("c", new Double(75));
// gradeMap.put("c-", new Double(70));
// gradeMap.put("d+", new Double(68));
// gradeMap.put("d", new Double(65));
// gradeMap.put("d-", new Double(60));
// gradeMap.put("f", new Double(0.0));
//
// gradebookManager.createDefaultLetterGradePercentMapping(gradeMap);
//
// returnedGradeMap = gradebookManager.getDefaultLetterGradePercentMapping();
}
//change them into onSetUpInTransaction
// public void testCreateGradebook() throws Exception {
// // Create a gradebook
// String className = this.getClass().getName();
// gradebookFrameworkService.addGradebook(className, className);
// setComplete();
// }
//
//public void testCreateCategory() throws Exception{
//Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
//
//Long id1 = gradebookManager.createCategory(persistentGradebook.getId(), "cate 1", new Double(0.40), 0);
////test for name conflict Long id2 = gradebookManager.createCategory(persistentGradebook.getId(), "cate 1", new Double(0), 0);
//Long id2 = gradebookManager.createCategory(persistentGradebook.getId(), "cate 2", new Double(0.60), 0);
//
////save data for testing getCategories. otherwise, it will be gone for next transaction.
//setComplete();
//
////System.out.println("category id1::" + id1.longValue());
////System.out.println("category id2::" + id2.longValue());
//}
//
//public void testCreateAssignmentForCategory() throws Exception{
//Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
//
//List list = (List) gradebookManager.getCategories(persistentGradebook.getId());
//
//for(int i=0; i<list.size(); i++)
//{
// Category cat = (Category) list.get(i);
// if(i == 0)
// {
// assgn1Long = gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cat.getId(),
// cat.getName() + "_assignment_1", new Double(10.0), new Date(), new Boolean(false), new Boolean(true));
// }
// if(i == 1)
// {
// assgn3Long = gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cat.getId(),
// cat.getName() + "_assignment_1", new Double(10.0), new Date(), new Boolean(false), new Boolean(true));
// }
// Long assign2 = gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cat.getId(),
// cat.getName() + "_assignment_2", new Double(10.0), new Date(), new Boolean(false), new Boolean(true));
//}
//setComplete();
//}
//
public void testGetGradebook() throws Exception {
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
// System.out.println("grade_type::" + persistentGradebook.getGrade_type());
// System.out.println("category_type::" + persistentGradebook.getCategory_type());
Assert.assertTrue(persistentGradebook.getGrade_type() == 1);
Assert.assertTrue(persistentGradebook.getCategory_type() == 1);
}
public void testGetCategories() throws Exception{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
List list = (List) gradebookManager.getCategories(persistentGradebook.getId());
// for(int i=0; i<list.size(); i++)
// {
// Category cat = (Category) list.get(i);
// System.out.println("category::" + cat.getName());
// System.out.println("category::" + cat.getId());
// System.out.println("category::" + cat.getGradebook().getId().longValue());
// System.out.println("category::" + cat.getWeight().longValue());
// System.out.println("category::" + cat.getDrop_lowest());
// }
Assert.assertTrue(list.size() == 2);
Assert.assertTrue(((Category)list.get(0)).getName().equals("cate 1"));
Assert.assertTrue(((Category)list.get(1)).getName().equals("cate 2"));
}
public void testGetAssignmentsForCategory() throws Exception{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
List list = (List) gradebookManager.getCategories(persistentGradebook.getId());
for(int i=0; i<list.size(); i++)
{
Category cat = (Category) list.get(i);
List asslist = (List) gradebookManager.getAssignmentsForCategory(cat.getId());
for(int j=0; j<asslist.size(); j++)
{
Assignment as = (Assignment) asslist.get(j);
// System.out.println("category::" + cat.getName() + "--assignment::" + as.getName());
Assert.assertTrue(as.getName().equals(cat.getName() + "_assignment_" + new Integer(j+1).intValue()));
}
}
}
public void testGetCategory() throws Exception{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Category cat1 = gradebookManager.getCategory(cate1Long);
Category cat2 = gradebookManager.getCategory(cate2Long);
// System.out.println(cat1 + "---" + cat1.getName());
// System.out.println(cat2 + "---" + cat2.getName());
}
public void testUpdateCategory() throws Exception{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Category cat1 = gradebookManager.getCategory(cate1Long);
// test for name conflicts with removed category Category cat2 = gradebookManager.getCategory(new Long(2));
// gradebookManager.removeCategory(cat2.getId());
// cat1.setName("cate 2");
cat1.setName("cate-rename");
gradebookManager.updateCategory(cat1);
Category cat_after = gradebookManager.getCategory(cate1Long);
Assert.assertTrue(cat_after.getName().equals("cate-rename"));
}
public void testRemoveCategory() throws Exception{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Category cat1 = gradebookManager.getCategory(cate1Long);
gradebookManager.removeCategory(cate1Long);
List list = (List) gradebookManager.getCategories(persistentGradebook.getId());
List assignList = (List) gradebookManager.getAssignments(persistentGradebook.getId());
Assert.assertTrue(list.size() == 1);
Assert.assertTrue(assignList.size() == 4);
// for(int i=0; i<list.size(); i++)
// {
// Category cat = (Category) list.get(i);
// System.out.println("category::" + cat.getName());
// System.out.println("category::" + cat.getId());
// System.out.println("category::" + cat.getGradebook().getId().longValue());
// System.out.println("category::" + cat.getWeight().longValue());
// System.out.println("category::" + cat.getDrop_lowest());
// }
}
public void testValidateCategoryWeighting() throws Exception{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Assert.assertTrue(gradebookManager.validateCategoryWeighting(persistentGradebook.getId()));
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
gradebookManager.createCategory(persistentGradebook.getId(), "cate 3", new Double(0), 0, 0, 0, false);
List list = (List) gradebookManager.getCategories(persistentGradebook.getId());
for(int i=0; i<list.size(); i++)
{
Category cat = (Category) list.get(i);
cat.setWeight(1.0/list.size());
gradebookManager.updateCategory(cat);
// System.out.println(cat.getWeight().doubleValue());
}
Assert.assertTrue(gradebookManager.validateCategoryWeighting(persistentGradebook.getId()));
}
public void testUpdateAssignmentGradeRecords() throws Exception{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Assignment assign = gradebookManager.getAssignment(assgn1Long);
//for percentage type
persistentGradebook.setGrade_type(GradebookService.GRADE_TYPE_PERCENTAGE);
assign.setPointsPossible(new Double(5));
gradebookManager.updateAssignment(assign);
List gradeRecords = generateGradeRecords(assign, 5);
Collection studentUids = new ArrayList();
studentUids.add("studentId1");
studentUids.add("studentId2");
studentUids.add("studentId3");
studentUids.add("studentId4");
studentUids.add("studentId5");
List returnGradeRecords = gradebookManager.getAssignmentGradeRecords(assign, studentUids);
List convertGradeRecords = new ArrayList();
for(int i=0; i<returnGradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)returnGradeRecords.get(i);
// System.out.println("student::" + agr.getStudentId() + "--assign::" + agr.getAssignment() + "--grade::" + agr.getPointsEarned());
//agr.setPointsEarned(new Double((agr.getPointsEarned().doubleValue() * 0.9) / assign.getPointsPossible()));
agr.setPercentEarned(new Double(90.0));
convertGradeRecords.add(agr);
}
gradebookManager.updateAssignmentGradeRecords(assign, convertGradeRecords, GradebookService.GRADE_TYPE_PERCENTAGE);
// System.out.println("after convert===============");
returnGradeRecords = gradebookManager.getAssignmentGradeRecords(assign, studentUids);
for(int i=0; i<returnGradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)returnGradeRecords.get(i);
Assert.assertTrue((new BigDecimal(agr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP)).doubleValue() == (0.9 * (assign.getPointsPossible())));
// System.out.println("student::" + agr.getStudentId() + "--assign::" + agr.getAssignment() + "--grade::" + agr.getPointsEarned());
// System.out.println(new BigDecimal(agr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP));
}
persistentGradebook.setGrade_type(GradebookService.GRADE_TYPE_LETTER);
returnGradeRecords = gradebookManager.getAssignmentGradeRecords(assign, studentUids);
convertGradeRecords = new ArrayList();
for(int i=0; i<returnGradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)returnGradeRecords.get(i);
agr.setLetterEarned("A");
convertGradeRecords.add(agr);
}
gradebookManager.updateAssignmentGradeRecords(assign, convertGradeRecords, GradebookService.GRADE_TYPE_LETTER);
returnGradeRecords = gradebookManager.getAssignmentGradeRecords(assign, studentUids);
for(int i=0; i<returnGradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)returnGradeRecords.get(i);
Assert.assertTrue((new BigDecimal(agr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP)).doubleValue() == (0.95 * (assign.getPointsPossible())));
}
}
private List generateGradeRecords(Assignment go, int gradeRecordsToGenerate) {
List records = new ArrayList();
AssignmentGradeRecord record;
for(int i = 1; i <= gradeRecordsToGenerate; i++) {
record = new AssignmentGradeRecord();
record.setPointsEarned(new Double(i));
record.setGradableObject(go);
record.setStudentId("studentId" + i);
records.add(record);
}
gradebookManager.updateAssignmentGradeRecords(go, records, GradebookService.GRADE_TYPE_POINTS);
return records;
}
public void testGetAssignmentGradeRecordsConverted() throws Exception{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Assignment assign = gradebookManager.getAssignment(assgn1Long);
//for percentage type
persistentGradebook.setGrade_type(GradebookService.GRADE_TYPE_PERCENTAGE);
gradebookManager.updateGradebook(persistentGradebook);
assign.setPointsPossible(new Double(5));
gradebookManager.updateAssignment(assign);
List gradeRecords = generateGradeRecords(assign, 5);
Collection studentUids = new ArrayList();
studentUids.add("studentId1");
studentUids.add("studentId2");
studentUids.add("studentId3");
studentUids.add("studentId4");
studentUids.add("studentId5");
List returnGradeRecords = gradebookManager.getAssignmentGradeRecordsConverted(assign, studentUids);
for(int i=0; i<returnGradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)returnGradeRecords.get(i);
Assert.assertTrue((new BigDecimal(agr.getPercentEarned()).setScale(2, BigDecimal.ROUND_HALF_UP)).doubleValue() == new BigDecimal(((double)(i+1))/assign.getPointsPossible().doubleValue() * 100.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// System.out.println(new BigDecimal(((double)(i+1))/assign.getPointsPossible().doubleValue()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// System.out.println("student::" + agr.getStudentId() + "--assign::" + agr.getAssignment() + "--point possible::" + agr.getAssignment().getPointsPossible() + "--grade::" + agr.getPointsEarned());
}
}
//for testing internal calculation
//need add public double getTotalPointsEarnedInternal(final Long gradebookId, final String studentId, Gradebook gradebook, List categories);
//and public double getTotalPointsInternal(final Long gradebookId, final Gradebook gradebook, final List categories, final String studentId);
//and public double getLiteralTotalPointsInternal(final Long gradebookId, final Gradebook gradebook, final List categories);
//into GradebookManager API.
// public void testGetTotalPointsEarnedInternal() throws Exception{
// Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
// Assignment assign = gradebookManager.getAssignment(assgn1Long);
// Assignment assign2 = gradebookManager.getAssignment(assgn3Long);
//
// //test for assignment with 0 points
// Long assign0long = gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cate1Long, "assignment0point", new Double(0), new Date(), new Boolean(false), new Boolean(true));
// Assignment assign3 = gradebookManager.getAssignment(assign0long);
//
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// assign.setPointsPossible(new Double(5));
// gradebookManager.updateAssignment(assign);
// List categories = gradebookManager.getCategories(persistentGradebook.getId());
// Category cate = gradebookManager.getCategory(assign.getCategory().getId());
//
// List gradeRecords = generateGradeRecords(assign, 5);
// List graderRecords2 = generateGradeRecords(assign2, 5);
// List gradeRecords3 = generateGradeRecords(assign3, 5);
//
//// Double piontsEearned = gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId1", persistentGradebook, categories);
//// System.out.println(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId1", persistentGradebook, categories));
//// System.out.println(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId2", persistentGradebook, categories));
//// System.out.println(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId3", persistentGradebook, categories));
//// System.out.println(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId4", persistentGradebook, categories));
//// System.out.println(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId5", persistentGradebook, categories));
//
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId1", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal( (1.0) / 5.0 * cate.getWeight().doubleValue() + (1.0) / 10.0 * 0.6)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId2", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal( (2.0) / 5.0 * cate.getWeight().doubleValue() + (2.0) / 10 * 0.6)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId3", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal( (3.0) / 5.0 * cate.getWeight().doubleValue() + (3.0) / 10 * 0.6)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId4", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal( (4.0) / 5.0 * cate.getWeight().doubleValue() + (4.0) / 10 * 0.6)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId5", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal( (5.0) / 5.0 * cate.getWeight().doubleValue() + (5.0) / 10 * 0.6)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId1", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(1.0+1.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId2", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(2.0+2.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId3", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(3.0+3.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId4", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(4.0+4.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId5", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(5.0+5.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId1", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(1.0+1.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId2", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(2.0+2.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId3", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(3.0+3.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId4", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(4.0+4.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId5", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(5.0+5.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
// //test for setting studentId1's assignment1 to null
// ((AssignmentGradeRecord)gradeRecords.get(0)).setPointsEarned(null);
// gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId1", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal( (0) / 15 * cate.getWeight().doubleValue() + (1.0) / 10.0 * 0.6)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId1", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal( 1.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId1", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(1.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
//
// gradebookManager.removeCategory(cate.getId());
// categories = gradebookManager.getCategories(persistentGradebook.getId());
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId1", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal( (1.0) / 10 * 0.6)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId2", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal( (2.0) / 10 *0.6)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId1", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(1.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId2", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(4.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId1", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(1.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId2", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(4.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
// //test for setting studentId1's assignment2 to null - studentId1 now hasn't taken any assignments now.
// ((AssignmentGradeRecord)graderRecords2.get(0)).setPointsEarned(null);
// gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId1", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(-1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()));
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId1", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(-1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()));
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsEarnedInternal(persistentGradebook.getId(), "studentId1", persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(-1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()));
// }
//
// public void testGetTotalPointsInternal() throws Exception{
// Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
// Assignment assign = gradebookManager.getAssignment(assgn1Long);
// Assignment assign2 = gradebookManager.getAssignment(assgn3Long);
//
// //test for assignment with 0 points
// Long assign0long = gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cate1Long, "assignment0point", new Double(0), new Date(), new Boolean(false), new Boolean(true));
// Assignment assign3 = gradebookManager.getAssignment(assign0long);
//
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// assign.setPointsPossible(new Double(5));
// gradebookManager.updateAssignment(assign);
// List categories = gradebookManager.getCategories(persistentGradebook.getId());
// Category cate = gradebookManager.getCategory(assign.getCategory().getId());
//
// List gradeRecords = generateGradeRecords(assign, 5);
// List graderRecords2 = generateGradeRecords(assign2, 5);
// List graderRecords3 = generateGradeRecords(assign3, 5);
//
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId1"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(1.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId2"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(1.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId3"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(1.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId4"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(1.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId5"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(1.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId1"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(15.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId2"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(15.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId3"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(15.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId4"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(15.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId5"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(15.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId1"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(15.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId2"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(15.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId3"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(15.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId4"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(15.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId5"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(15.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
// //test for setting studentId1's assignment1 to null
// ((AssignmentGradeRecord)gradeRecords.get(0)).setPointsEarned(null);
// gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId1"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(0.6)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId2"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(1.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
// gradebookManager.removeCategory(cate.getId());
// categories = gradebookManager.getCategories(persistentGradebook.getId());
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId1"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(0.6)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId2"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(0.6)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId3"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(0.6)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId4"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(0.6)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId5"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(0.6)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId1"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(10.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId2"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(15.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId3"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(15.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId4"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(15.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId5"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(15.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId1"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(10.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId2"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(15.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId3"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(15.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId4"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(15.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId5"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(15.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
// //test for setting studentId1's assignment2 to null - studentId1 now hasn't taken any assignments now.
// ((AssignmentGradeRecord)graderRecords2.get(0)).setPointsEarned(null);
// gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId1"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(-1)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId1"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(-1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()));
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories, "studentId1"))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(-1)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// }
//
// public void testGetLiteralTotalPointsInternal() throws Exception {
// Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
// Assignment assign = gradebookManager.getAssignment(assgn1Long);
// Assignment assign2 = gradebookManager.getAssignment(assgn3Long);
//
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// assign.setPointsPossible(new Double(5));
// gradebookManager.updateAssignment(assign);
// List categories = gradebookManager.getCategories(persistentGradebook.getId());
// Category cate = gradebookManager.getCategory(assign.getCategory().getId());
//
// Assert.assertTrue((new BigDecimal(gradebookManager.getLiteralTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(35.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getLiteralTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(35.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getLiteralTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(35.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
// gradebookManager.removeCategory(cate.getId());
// categories = gradebookManager.getCategories(persistentGradebook.getId());
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getLiteralTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(20.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getLiteralTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(35.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getLiteralTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(35.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
// gradebookManager.removeAssignment(assign.getId());
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getLiteralTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(20.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getLiteralTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(30.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//
// persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
// gradebookManager.updateGradebook(persistentGradebook);
// Assert.assertTrue((new BigDecimal(gradebookManager.getLiteralTotalPointsInternal(persistentGradebook.getId(), persistentGradebook, categories))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// (new BigDecimal(30.0)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// }
public void testDroppedGradeRecords() throws Exception {
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Assignment assign = gradebookManager.getAssignment(assgn1Long);
Assignment assign2 = gradebookManager.getAssignment(assgn3Long);
//test for assignment with 0 points
Long assign0long = gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cate1Long, "assignment0point", new Double(0), new Date(), new Boolean(false), new Boolean(true), new Boolean(false));
Assignment assign3 = gradebookManager.getAssignment(assign0long);
//test for ungraded item
Long assign4long = gradebookManager.createUngradedAssignmentForCategory(persistentGradebook.getId(), cate1Long, "assignment_ungraded", new Date(), new Boolean(false), new Boolean(true));
Assignment assign4 = gradebookManager.getAssignment(assign4long);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
assign.setPointsPossible(new Double(5));
gradebookManager.updateAssignment(assign);
List categories = gradebookManager.getCategories(persistentGradebook.getId());
Category cat = gradebookManager.getCategory(assign.getCategory().getId());
cat.setDrop_lowest(2);
List assignments = gradebookManager.getAssignmentsWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true);
List gradeRecords = generateGradeRecords(assign, 5);
List gradeRecords2 = generateGradeRecords(assign2, 5);
List gradeRecords3 = generateGradeRecords(assign3, 5);
List gradeRecords4 = generateGradeRecords(assign4, 5);
for(int i=0; i<gradeRecords2.size(); i++)
{
gradeRecords.add(gradeRecords2.get(i));
}
for(int i=0; i<gradeRecords3.size(); i++)
{
gradeRecords.add(gradeRecords3.get(i));
}
for(int i=0; i<gradeRecords4.size(); i++)
{
gradeRecords.add(gradeRecords4.get(i));
}
List uid = new ArrayList();
uid.add("studentId1");
uid.add("studentId2");
uid.add("studentId3");
uid.add("studentId4");
uid.add("studentId5");
Map studentIdMap = new HashMap();
studentIdMap.put("studentId1", new Double(1.0));
studentIdMap.put("studentId2", new Double(2.0));
studentIdMap.put("studentId3", new Double(3.0));
studentIdMap.put("studentId4", new Double(4.0));
studentIdMap.put("studentId5", new Double(5.0));
Map filteredGradesMap = new HashMap();
gradeRecords = gradebookManager.getAllAssignmentGradeRecords(persistentGradebook.getId(), uid);
for(int i=0; i<gradeRecords.size(); i++) {
AssignmentGradeRecord gradeRecord = (AssignmentGradeRecord)gradeRecords.get(i);
gradeRecord.getDroppedFromGrade();
}
}
public void testGetPointsEarnedCourseGradeRecords() throws Exception{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Assignment assign = gradebookManager.getAssignment(assgn1Long);
Assignment assign2 = gradebookManager.getAssignment(assgn3Long);
//test for assignment with 0 points
Long assign0long = gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cate1Long, "assignment0point", new Double(0), new Date(), new Boolean(false), new Boolean(true), new Boolean(false));
Assignment assign3 = gradebookManager.getAssignment(assign0long);
//test for ungraded item
Long assign4long = gradebookManager.createUngradedAssignmentForCategory(persistentGradebook.getId(), cate1Long, "assignment_ungraded", new Date(), new Boolean(false), new Boolean(true));
Assignment assign4 = gradebookManager.getAssignment(assign4long);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
assign.setPointsPossible(new Double(5));
assign.setExtraCredit(false);
assign2.setExtraCredit(false);
assign3.setExtraCredit(false);
assign4.setExtraCredit(false);
gradebookManager.updateAssignment(assign);
List categories = gradebookManager.getCategories(persistentGradebook.getId());
Category cate = gradebookManager.getCategory(assign.getCategory().getId());
List assignments = gradebookManager.getAssignments(persistentGradebook.getId());
List gradeRecords = generateGradeRecords(assign, 5);
List gradeRecords2 = generateGradeRecords(assign2, 5);
List gradeRecords3 = generateGradeRecords(assign3, 5);
List gradeRecords4 = generateGradeRecords(assign4, 5);
for(int i=0; i<gradeRecords2.size(); i++)
{
gradeRecords.add(gradeRecords2.get(i));
}
for(int i=0; i<gradeRecords3.size(); i++)
{
gradeRecords.add(gradeRecords3.get(i));
}
for(int i=0; i<gradeRecords4.size(); i++)
{
gradeRecords.add(gradeRecords4.get(i));
}
List uid = new ArrayList();
uid.add("studentId1");
uid.add("studentId2");
uid.add("studentId3");
uid.add("studentId4");
uid.add("studentId5");
Map studentIdMap = new HashMap();
studentIdMap.put("studentId1", new Double(1.0));
studentIdMap.put("studentId2", new Double(2.0));
studentIdMap.put("studentId3", new Double(3.0));
studentIdMap.put("studentId4", new Double(4.0));
studentIdMap.put("studentId5", new Double(5.0));
Map filteredGradesMap = new HashMap();
gradeRecords = gradebookManager.getAllAssignmentGradeRecords(persistentGradebook.getId(), uid);
gradebookManager.addToGradeRecordMap(filteredGradesMap, gradeRecords);
CourseGrade courseGrade = gradebookManager.getCourseGrade(persistentGradebook.getId());
List courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid, assignments, filteredGradesMap);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
// Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
// new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId()))) * 0.4 / 5.0 + ((Double)studentIdMap.get(cgr.getStudentId())) * 0.6 / 10.0 ).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId()))) * 2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId())) ) * 0.4 * 100 / 5.0 + ((Double)studentIdMap.get(cgr.getStudentId())) * 0.6 * 100 / 10.0 ).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//System.out.println(cgr.getGradeAsPercentage() + "--" + cgr.getDisplayGrade() + "--" + new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId())) ) * 0.4 * 100 / 5.0 + ((Double)studentIdMap.get(cgr.getStudentId())) * 0.6 * 100 / 10.0 ).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid, assignments, filteredGradesMap);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId())).doubleValue() * 2 )).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId())).doubleValue() * 2) * 100 / 15.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid, assignments, filteredGradesMap);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId())).doubleValue() * 2)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((((Double)studentIdMap.get(cgr.getStudentId()))) * 2 ) * 100/ 15.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
//test for setting studentId1's assignment1 to null
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assgn1Long) && agr.getStudentId().equals("studentId1"))
agr.setPointsEarned(null);
}
//test for setting studentId1's assignment1 to empty string
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assgn1Long) && agr.getStudentId().equals("studentId1"))
agr.setPointsEarned(null);
}
gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
gradeRecords = gradebookManager.getAllAssignmentGradeRecords(persistentGradebook.getId(), uid);
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assgn1Long) && agr.getStudentId().equals("studentId1"))
Assert.assertTrue( agr.getPointsEarned() == null);
}
//end test for setting studentId1's assignment1 to empty string
gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid, assignments, filteredGradesMap);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
if(cgr.getStudentId().equals("studentId1"))
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((Double)studentIdMap.get(cgr.getStudentId()))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((Double)studentIdMap.get(cgr.getStudentId())) * 0.6 * 100 / 10.0 / 0.60).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid, assignments, filteredGradesMap);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
if(cgr.getStudentId().equals("studentId1"))
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId())).doubleValue() )).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId())).doubleValue()) * 100 / 10.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid, assignments, filteredGradesMap);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
if(cgr.getStudentId().equals("studentId1"))
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId())).doubleValue())).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId())).doubleValue() ) * 100 / 10.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
gradebookManager.removeCategory(cate.getId());
categories = gradebookManager.getCategories(persistentGradebook.getId());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid, assignments, filteredGradesMap);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((Double)studentIdMap.get(cgr.getStudentId()))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((Double)studentIdMap.get(cgr.getStudentId())) * 0.6 * 100 / 10.0 / 0.6).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid, assignments, filteredGradesMap);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
if(!cgr.getStudentId().equals("studentId1"))
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((Double)studentIdMap.get(cgr.getStudentId())).doubleValue() * 2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId())).doubleValue() * 2) * 100 / 10.0 ).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
else
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((Double)studentIdMap.get(cgr.getStudentId())).doubleValue()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId())).doubleValue()) * 100 / 10.0 ).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid, assignments, filteredGradesMap);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
if(!cgr.getStudentId().equals("studentId1"))
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((Double)studentIdMap.get(cgr.getStudentId())).doubleValue() * 2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId())).doubleValue() * 2) * 100 / 15.0 ).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
else
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((Double)studentIdMap.get(cgr.getStudentId())).doubleValue()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId())).doubleValue()) * 100 / 10.0 ).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
//test for setting studentId1's assignment2 to null - studentId1 now hasn't taken any assignments now.
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assgn3Long) && agr.getStudentId().equals("studentId1"))
agr.setPointsEarned(null);
}
gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid, assignments, filteredGradesMap);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
if(!cgr.getStudentId().equals("studentId1"))
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((Double)studentIdMap.get(cgr.getStudentId())).doubleValue()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId())).doubleValue()) *0.6 * 100 / 10.0 / 0.6).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
else
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(cgr.getGradeAsPercentage() == null);
}
}
gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid, assignments, filteredGradesMap);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
if(!cgr.getStudentId().equals("studentId1"))
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((Double)studentIdMap.get(cgr.getStudentId())).doubleValue() * 2 ).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId())).doubleValue()) * 2 * 100 / 15.0 ).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
else
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(cgr.getGradeAsPercentage() == null);
}
}
gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid, assignments, filteredGradesMap);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
if(!cgr.getStudentId().equals("studentId1"))
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((Double)studentIdMap.get(cgr.getStudentId())).doubleValue() * 2 ).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId())).doubleValue()) * 2 * 100 / 10.0 ).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
else
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(cgr.getGradeAsPercentage() == null);
}
}
}
public void testGetStudentCourseGradeRecord() throws Exception {
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Assignment assign = gradebookManager.getAssignment(assgn1Long);
Assignment assign2 = gradebookManager.getAssignment(assgn3Long);
//test for assignment with 0 points
Long assign0long = gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cate1Long, "assignment0point", new Double(0), new Date(), new Boolean(false), new Boolean(true), new Boolean(false));
Assignment assign3 = gradebookManager.getAssignment(assign0long);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
assign.setPointsPossible(new Double(5));
assign.setExtraCredit(false);
assign2.setExtraCredit(false);
assign3.setExtraCredit(false);
gradebookManager.updateAssignment(assign);
List categories = gradebookManager.getCategories(persistentGradebook.getId());
Category cate = gradebookManager.getCategory(assign.getCategory().getId());
List assignments = gradebookManager.getAssignments(persistentGradebook.getId());
List gradeRecords = generateGradeRecords(assign, 5);
List gradeRecords2 = generateGradeRecords(assign2, 5);
List gradeRecords3 = generateGradeRecords(assign3, 5);
for(int i=0; i<gradeRecords2.size(); i++)
{
gradeRecords.add(gradeRecords2.get(i));
}
for(int i=0; i<gradeRecords3.size(); i++)
{
gradeRecords.add(gradeRecords3.get(i));
}
List uid = new ArrayList();
uid.add("studentId1");
uid.add("studentId2");
uid.add("studentId3");
uid.add("studentId4");
uid.add("studentId5");
Map studentIdMap = new HashMap();
studentIdMap.put("studentId1", new Double(1.0));
studentIdMap.put("studentId2", new Double(2.0));
studentIdMap.put("studentId3", new Double(3.0));
studentIdMap.put("studentId4", new Double(4.0));
studentIdMap.put("studentId5", new Double(5.0));
CourseGrade courseGrade = gradebookManager.getCourseGrade(persistentGradebook.getId());
CourseGradeRecord cgr1 = (CourseGradeRecord) gradebookManager.getStudentCourseGradeRecord(persistentGradebook, "studentId1");
CourseGradeRecord cgr2 = (CourseGradeRecord) gradebookManager.getStudentCourseGradeRecord(persistentGradebook, "studentId2");
Assert.assertTrue(new BigDecimal(cgr1.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr1.getStudentId()))) + (((Double)studentIdMap.get(cgr1.getStudentId())))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr1.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr1.getStudentId()))) * 0.4 * 100 / 5 + (((Double)studentIdMap.get(cgr1.getStudentId()))) * 0.6 * 100 / 10).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr2.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr2.getStudentId()))) + (((Double)studentIdMap.get(cgr2.getStudentId())))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr2.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr2.getStudentId()))) * 0.4 * 100 / 5 + (((Double)studentIdMap.get(cgr2.getStudentId()))) * 0.6 * 100 / 10).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
cgr1 = (CourseGradeRecord) gradebookManager.getStudentCourseGradeRecord(persistentGradebook, "studentId1");
cgr2 = (CourseGradeRecord) gradebookManager.getStudentCourseGradeRecord(persistentGradebook, "studentId2");
Assert.assertTrue(new BigDecimal(cgr1.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr1.getStudentId()))) * 2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr1.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((((Double)studentIdMap.get(cgr1.getStudentId()))) * 2) * 100/ 15.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr2.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr2.getStudentId()))) * 2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr2.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((((Double)studentIdMap.get(cgr2.getStudentId()))) * 2) * 100/ 15.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
cgr1 = (CourseGradeRecord) gradebookManager.getStudentCourseGradeRecord(persistentGradebook, "studentId1");
cgr2 = (CourseGradeRecord) gradebookManager.getStudentCourseGradeRecord(persistentGradebook, "studentId2");
Assert.assertTrue(new BigDecimal(cgr1.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr1.getStudentId()))) * 2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr1.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((((Double)studentIdMap.get(cgr1.getStudentId()))) * 2) * 100/ 15.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr2.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr2.getStudentId()))) * 2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr2.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((((Double)studentIdMap.get(cgr2.getStudentId()))) * 2) *100 / 15.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//test for setting studentId1's assignment1 to null
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assgn1Long) && agr.getStudentId().equals("studentId1"))
agr.setPointsEarned(null);
}
gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
cgr1 = (CourseGradeRecord) gradebookManager.getStudentCourseGradeRecord(persistentGradebook, "studentId1");
cgr2 = (CourseGradeRecord) gradebookManager.getStudentCourseGradeRecord(persistentGradebook, "studentId2");
Assert.assertTrue(new BigDecimal(cgr1.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr1.getStudentId())))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr1.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr1.getStudentId()))) * 0.6 * 100 / 10 / 0.6).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr2.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr2.getStudentId()))) + (((Double)studentIdMap.get(cgr2.getStudentId())))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr2.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr2.getStudentId()))) * 0.4 * 100 / 5 + (((Double)studentIdMap.get(cgr2.getStudentId()))) * 0.6 * 100 / 10).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
gradebookManager.removeCategory(cate.getId());
categories = gradebookManager.getCategories(persistentGradebook.getId());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
cgr1 = (CourseGradeRecord) gradebookManager.getStudentCourseGradeRecord(persistentGradebook, "studentId1");
cgr2 = (CourseGradeRecord) gradebookManager.getStudentCourseGradeRecord(persistentGradebook, "studentId2");
Assert.assertTrue(new BigDecimal(cgr1.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr1.getStudentId())) )).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr1.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr1.getStudentId()))) * 0.6 * 100 / 10 / 0.6).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr2.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr2.getStudentId())))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr2.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr2.getStudentId()))) * 0.6 * 100 / 10 / 0.6).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
cgr1 = (CourseGradeRecord) gradebookManager.getStudentCourseGradeRecord(persistentGradebook, "studentId1");
cgr2 = (CourseGradeRecord) gradebookManager.getStudentCourseGradeRecord(persistentGradebook, "studentId2");
Assert.assertTrue(new BigDecimal(cgr1.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr1.getStudentId())))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr1.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr1.getStudentId()))) * 100 / 10).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr2.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr2.getStudentId()))) * 2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr2.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((((Double)studentIdMap.get(cgr2.getStudentId()))) * 2.0)* 100.0/ 10.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
cgr1 = (CourseGradeRecord) gradebookManager.getStudentCourseGradeRecord(persistentGradebook, "studentId1");
cgr2 = (CourseGradeRecord) gradebookManager.getStudentCourseGradeRecord(persistentGradebook, "studentId2");
Assert.assertTrue(new BigDecimal(cgr1.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr1.getStudentId())))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr1.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((((Double)studentIdMap.get(cgr1.getStudentId())))) * 100.0 / 10.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr2.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr2.getStudentId()))) * 2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr2.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((((Double)studentIdMap.get(cgr2.getStudentId()))) * 2.0)* 100.0/ 15.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
public void testGetPointsEarnedCourseGradeRecords2Params() throws Exception {
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Assignment assign = gradebookManager.getAssignment(assgn1Long);
Assignment assign2 = gradebookManager.getAssignment(assgn3Long);
//test for assignment with 0 points
Long assign0long = gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cate1Long, "assignment0point", new Double(0), new Date(), new Boolean(false), new Boolean(true), new Boolean(false));
Assignment assign3 = gradebookManager.getAssignment(assign0long);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
assign.setPointsPossible(new Double(5));
assign.setExtraCredit(false);
assign2.setExtraCredit(false);
assign3.setExtraCredit(false);
gradebookManager.updateAssignment(assign);
List categories = gradebookManager.getCategories(persistentGradebook.getId());
Category cate = gradebookManager.getCategory(assign.getCategory().getId());
List assignments = gradebookManager.getAssignments(persistentGradebook.getId());
List gradeRecords = generateGradeRecords(assign, 5);
List gradeRecords2 = generateGradeRecords(assign2, 5);
List gradeRecords3 = generateGradeRecords(assign3, 5);
for(int i=0; i<gradeRecords2.size(); i++)
{
gradeRecords.add(gradeRecords2.get(i));
}
for(int i=0; i<gradeRecords3.size(); i++)
{
gradeRecords.add(gradeRecords3.get(i));
}
List uid = new ArrayList();
uid.add("studentId1");
uid.add("studentId2");
uid.add("studentId3");
uid.add("studentId4");
uid.add("studentId5");
Map studentIdMap = new HashMap();
studentIdMap.put("studentId1", new Double(1.0));
studentIdMap.put("studentId2", new Double(2.0));
studentIdMap.put("studentId3", new Double(3.0));
studentIdMap.put("studentId4", new Double(4.0));
studentIdMap.put("studentId5", new Double(5.0));
gradeRecords = gradebookManager.getAllAssignmentGradeRecords(persistentGradebook.getId(), uid);
CourseGrade courseGrade = gradebookManager.getCourseGrade(persistentGradebook.getId());
List courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId()))) + (((Double)studentIdMap.get(cgr.getStudentId())))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId()))) * 0.4 * 100 / 5 + (((Double)studentIdMap.get(cgr.getStudentId()))) * 0.6 * 100 / 10).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId()))) * 2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((((Double)studentIdMap.get(cgr.getStudentId()))) * 2) * 100 / 15.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId()))) * 2 ).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((((Double)studentIdMap.get(cgr.getStudentId()))) * 2) * 100 / 15.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
//test for setting studentId1's assignment1 to null
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assgn1Long) && agr.getStudentId().equals("studentId1"))
agr.setPointsEarned(null);
}
gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
if(!cgr.getStudentId().equals("studentId1"))
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId()))) + (((Double)studentIdMap.get(cgr.getStudentId())))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId()))) * 0.4 * 100 / 5 + (((Double)studentIdMap.get(cgr.getStudentId()))) * 0.6 * 100 / 10).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
else
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId())))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId()))) * 0.6 * 100 / 10 / 0.6).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
if(!cgr.getStudentId().equals("studentId1"))
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId()))) * 2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((((Double)studentIdMap.get(cgr.getStudentId()))) * 2) * 100 / 15.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
else
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((Double)studentIdMap.get(cgr.getStudentId())).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((((Double)studentIdMap.get(cgr.getStudentId())))) * 100 / 10.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
if(!cgr.getStudentId().equals("studentId1"))
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId()))) * 2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((((Double)studentIdMap.get(cgr.getStudentId()))) * 2) * 100 / 15.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
else
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((Double)studentIdMap.get(cgr.getStudentId())).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((((Double)studentIdMap.get(cgr.getStudentId())))) * 100 / 10.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
gradebookManager.removeCategory(cate.getId());
categories = gradebookManager.getCategories(persistentGradebook.getId());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId())))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId()))) * 0.6 * 100 / 10 / 0.6).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
if(!cgr.getStudentId().equals("studentId1"))
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((Double)studentIdMap.get(cgr.getStudentId()) * 2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((Double)studentIdMap.get(cgr.getStudentId()) * 2) * 100 / 10.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
else
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((Double)studentIdMap.get(cgr.getStudentId())).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((Double)studentIdMap.get(cgr.getStudentId())) * 100 / 10.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
if(!cgr.getStudentId().equals("studentId1"))
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((Double)studentIdMap.get(cgr.getStudentId()) * 2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((Double)studentIdMap.get(cgr.getStudentId()) * 2) * 100 / 15.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
else
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((Double)studentIdMap.get(cgr.getStudentId())).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((Double)studentIdMap.get(cgr.getStudentId())) * 100 / 10.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
//test for setting studentId1's assignment2 to null - studentId1 now hasn't taken any assignments now.
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assgn3Long) && agr.getStudentId().equals("studentId1"))
agr.setPointsEarned(null);
}
gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecords(courseGrade, uid);
for(int i=0; i<courseGradeRecords.size(); i++)
{
CourseGradeRecord cgr = (CourseGradeRecord) courseGradeRecords.get(i);
if(!cgr.getStudentId().equals("studentId1"))
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId())))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cgr.getGradeAsPercentage()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((((Double)studentIdMap.get(cgr.getStudentId()))) * 0.6 * 100 / 10 / 0.6).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
else
{
Assert.assertTrue(new BigDecimal(cgr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(cgr.getGradeAsPercentage() == null);
}
}
}
public void testGetTotalPoints() throws Exception {
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Assignment assign = gradebookManager.getAssignment(assgn1Long);
//test for ungraded item
Long assign4long = gradebookManager.createUngradedAssignmentForCategory(persistentGradebook.getId(), cate1Long, "assignment_ungraded", new Date(), new Boolean(false), new Boolean(true));
Assignment assign4 = gradebookManager.getAssignment(assign4long);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
assign.setPointsPossible(new Double(5));
gradebookManager.updateAssignment(assign);
Double total = gradebookManager.getTotalPoints(persistentGradebook.getId());
Assert.assertTrue(new BigDecimal(total).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(35.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
total = gradebookManager.getTotalPoints(persistentGradebook.getId());
Assert.assertTrue(new BigDecimal(total).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(35.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
total = gradebookManager.getTotalPoints(persistentGradebook.getId());
Assert.assertTrue(new BigDecimal(total).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(35.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
gradebookManager.removeCategory(cate1Long);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
total = gradebookManager.getTotalPoints(persistentGradebook.getId());
Assert.assertTrue(new BigDecimal(total).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(20.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
total = gradebookManager.getTotalPoints(persistentGradebook.getId());
Assert.assertTrue(new BigDecimal(total).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(5 + 10 + 10 + 10).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
total = gradebookManager.getTotalPoints(persistentGradebook.getId());
Assert.assertTrue(new BigDecimal(total).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(5 + 10 + 10 + 10).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
public void testUpdateAssignmentGradesAndComments() throws Exception{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Assignment assign = gradebookManager.getAssignment(assgn1Long);
//for percentage type
persistentGradebook.setGrade_type(GradebookService.GRADE_TYPE_PERCENTAGE);
assign.setPointsPossible(new Double(5));
gradebookManager.updateAssignment(assign);
List gradeRecords = generateGradeRecords(assign, 5);
Collection studentUids = new ArrayList();
studentUids.add("studentId1");
studentUids.add("studentId2");
studentUids.add("studentId3");
studentUids.add("studentId4");
studentUids.add("studentId5");
List returnGradeRecords = gradebookManager.getAssignmentGradeRecords(assign, studentUids);
List convertGradeRecords = new ArrayList();
for(int i=0; i<returnGradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)returnGradeRecords.get(i);
agr.setPercentEarned(90.0);
convertGradeRecords.add(agr);
}
Collection comments = new ArrayList();
for(int i=0; i<convertGradeRecords.size(); i++)
{
Comment cm = new Comment();
cm.setCommentText(new String("comment--" + (i+1)));
cm.setDateRecorded(new Date());
cm.setGradableObject(assign);
cm.setGraderId("admin_test");
cm.setStudentId("studentId" + (i+1));
comments.add(cm);
}
gradebookManager.updateAssignmentGradesAndComments(assign, convertGradeRecords, comments);
returnGradeRecords = gradebookManager.getAssignmentGradeRecords(assign, studentUids);
List commentReturned = gradebookManager.getComments(assign, studentUids);
for(int i=0; i<returnGradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)returnGradeRecords.get(i);
Assert.assertTrue((new BigDecimal(agr.getPointsEarned()).setScale(2, BigDecimal.ROUND_HALF_UP)).doubleValue() == (0.9 * agr.getAssignment().getPointsPossible().doubleValue()));
Assert.assertTrue((((Comment)commentReturned.get(i)).getCommentText()).equals("comment--" + (i+1)));
// System.out.println((((Comment)commentReturned.get(i)).getCommentText()));
}
}
public void testGetPointsEarnedCourseGradeRecordsWithStats() throws Exception {
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Assignment assign = gradebookManager.getAssignment(assgn1Long);
Assignment assign2 = gradebookManager.getAssignment(assgn3Long);
//test for assignment with 0 points
Long assign0long = gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cate1Long, "assignment0point", new Double(0), new Date(), new Boolean(false), new Boolean(true), new Boolean(false));
Assignment assign3 = gradebookManager.getAssignment(assign0long);
//test for ungraded item
Long assign4long = gradebookManager.createUngradedAssignmentForCategory(persistentGradebook.getId(), cate1Long, "assignment-ungraded", new Date(), new Boolean(false), new Boolean(false));
Assignment assign4 = gradebookManager.getAssignment(assign4long);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
integrationSupport.createCourse(persistentGradebook.getUid(), persistentGradebook.getUid(), false, false, false);
gradebookManager.updateGradebook(persistentGradebook);
assign.setPointsPossible(new Double(5));
assign.setExtraCredit(false);
assign2.setExtraCredit(false);
assign3.setExtraCredit(false);
assign4.setExtraCredit(false);
gradebookManager.updateAssignment(assign);
List categories = gradebookManager.getCategories(persistentGradebook.getId());
Category cate = gradebookManager.getCategory(assign.getCategory().getId());
List assignments = gradebookManager.getAssignments(persistentGradebook.getId());
List gradeRecords = generateGradeRecords(assign, 5);
List gradeRecords2 = generateGradeRecords(assign2, 5);
List gradeRecords3 = generateGradeRecords(assign3, 5);
List gradeRecords4 = generateGradeRecords(assign4, 5);
for(int i=0; i<gradeRecords2.size(); i++)
{
gradeRecords.add(gradeRecords2.get(i));
}
for(int i=0; i<gradeRecords3.size(); i++)
{
gradeRecords.add(gradeRecords3.get(i));
}
for(int i=0; i<gradeRecords4.size(); i++)
{
gradeRecords.add(gradeRecords4.get(i));
}
List uid = new ArrayList();
uid.add("studentId1");
uid.add("studentId2");
uid.add("studentId3");
uid.add("studentId4");
uid.add("studentId5");
Map studentIdMap = new HashMap();
studentIdMap.put("studentId1", new Double(1.0));
studentIdMap.put("studentId2", new Double(2.0));
studentIdMap.put("studentId3", new Double(3.0));
studentIdMap.put("studentId4", new Double(4.0));
studentIdMap.put("studentId5", new Double(5.0));
gradeRecords = gradebookManager.getAllAssignmentGradeRecords(persistentGradebook.getId(), uid);
addUsersEnrollments(persistentGradebook, uid);
CourseGrade courseGrade = gradebookManager.getCourseGrade(persistentGradebook.getId());
List courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecordsWithStats(courseGrade, uid);
Assert.assertTrue(new BigDecimal(courseGrade.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1 + 2 + 3 + 4 + 5) * 0.4 / 5 / 5+ (1 + 2 + 3 + 4 + 5) * 0.6 / 10 / 5) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecordsWithStats(courseGrade, uid);
Assert.assertTrue(new BigDecimal(courseGrade.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0 + 2 + 3 + 4 + 5 + 1 + 2 + 3 + 4 + 5) / 15.0 / 5.0) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecordsWithStats(courseGrade, uid);
Assert.assertTrue(new BigDecimal(courseGrade.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0 + 2 + 3 + 4 + 5 + 1 + 2 + 3 + 4 + 5) / 15.0 / 5.0) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//test for setting studentId1's assignment1 to null
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assgn1Long) && agr.getStudentId().equals("studentId1"))
agr.setPointsEarned(null);
}
gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecordsWithStats(courseGrade, uid);
Assert.assertTrue(new BigDecimal(courseGrade.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0/10.0 ) + (2.0/5.0*0.4 + 2.0/10.0*0.6) + (3.0/5.0*0.4 + 3.0/10.0*0.6) + (4.0/5.0*0.4 + 4.0/10.0*0.6) + (5.0/5.0*0.4 + 5.0/10.0*0.6)) / 5.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
gradebookManager.removeCategory(cate.getId());
categories = gradebookManager.getCategories(persistentGradebook.getId());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecordsWithStats(courseGrade, uid);
Assert.assertTrue(new BigDecimal(courseGrade.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0/10.0 ) + (2.0/10.0) + (3.0/10.0) + (4.0/10.0) + (5.0/10.0)) / 5.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecordsWithStats(courseGrade, uid);
Assert.assertTrue(new BigDecimal(courseGrade.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0/10.0) + (4.0/10) + (6.0/10.0) + (8.0/10.0) + (10.0/10.0)) / 5.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecordsWithStats(courseGrade, uid);
Assert.assertTrue(new BigDecimal(courseGrade.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0/10.0) + (4.0/15) + (6.0/15.0) + (8.0/15.0) + (10.0/15.0)) / 5.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//test for setting studentId1's assignment2 to null - studentId1 now hasn't taken any assignments now.
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assgn3Long) && agr.getStudentId().equals("studentId1"))
agr.setPointsEarned(null);
}
gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecordsWithStats(courseGrade, uid);
Assert.assertTrue(new BigDecimal(courseGrade.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((2.0/10.0) + (3.0/10.0) + (4.0/10.0) + (5.0/10.0)) / 4.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecordsWithStats(courseGrade, uid);
Assert.assertTrue(new BigDecimal(courseGrade.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((4.0/10) + (6.0/10.0) + (8.0/10.0) + (10.0/10.0)) / 4.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecordsWithStats(courseGrade, uid);
Assert.assertTrue(new BigDecimal(courseGrade.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((4.0/15) + (6.0/15.0) + (8.0/15.0) + (10.0/15.0)) / 4.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//test for only 0 point possible assignment has grade records
gradebookManager.removeAssignment(assgn1Long);
gradebookManager.removeAssignment(assgn3Long);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecordsWithStats(courseGrade, uid);
Assert.assertTrue(courseGrade.getMean() == null);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecordsWithStats(courseGrade, uid);
Assert.assertTrue(courseGrade.getMean() == null);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradeRecords = gradebookManager.getPointsEarnedCourseGradeRecordsWithStats(courseGrade, uid);
Assert.assertTrue(courseGrade.getMean() == null);
}
public void testGetAssignmentsWithStats() throws Exception{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Assignment assign = gradebookManager.getAssignment(assgn1Long);
Assignment assign2 = gradebookManager.getAssignment(assgn3Long);
//test for assignment with 0 points
Long assign0long = gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cate1Long, "assignment0point", new Double(0), new Date(), new Boolean(false), new Boolean(true), new Boolean(false));
Assignment assign3 = gradebookManager.getAssignment(assign0long);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
integrationSupport.createCourse(persistentGradebook.getUid(), persistentGradebook.getUid(), false, false, false);
gradebookManager.updateGradebook(persistentGradebook);
assign.setPointsPossible(new Double(5));
gradebookManager.updateAssignment(assign);
List categories = gradebookManager.getCategories(persistentGradebook.getId());
Category cate = gradebookManager.getCategory(assign.getCategory().getId());
List assignments = gradebookManager.getAssignments(persistentGradebook.getId());
List gradeRecords = generateGradeRecords(assign, 5);
List gradeRecords2 = generateGradeRecords(assign2, 5);
List gradeRecords3 = generateGradeRecords(assign3, 5);
for(int i=0; i<gradeRecords2.size(); i++)
{
gradeRecords.add(gradeRecords2.get(i));
}
for(int i=0; i<gradeRecords3.size(); i++)
{
gradeRecords.add(gradeRecords3.get(i));
}
List uid = new ArrayList();
uid.add("studentId1");
uid.add("studentId2");
uid.add("studentId3");
uid.add("studentId4");
uid.add("studentId5");
Map studentIdMap = new HashMap();
studentIdMap.put("studentId1", new Double(1.0));
studentIdMap.put("studentId2", new Double(2.0));
studentIdMap.put("studentId3", new Double(3.0));
studentIdMap.put("studentId4", new Double(4.0));
studentIdMap.put("studentId5", new Double(5.0));
addUsersEnrollments(persistentGradebook, uid);
List assgnsWithStats = gradebookManager.getAssignmentsWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true);
for(int i=0; i<assgnsWithStats.size(); i++)
{
Assignment as = (Assignment) assgnsWithStats.get(i);
if(as.getMean() != null)
{
Assert.assertTrue(new BigDecimal(as.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1 + 2 + 3 + 4 + 5) / as.getPointsPossible().doubleValue() / 5) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(as.getAverageTotal()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1 + 2 + 3 + 4 + 5) / 5).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
//test for setting studentId1's assignment1 to null
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assgn1Long) && agr.getStudentId().equals("studentId1"))
agr.setPointsEarned(null);
}
gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
assgnsWithStats = gradebookManager.getAssignmentsWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true);
for(int i=0; i<assgnsWithStats.size(); i++)
{
Assignment as = (Assignment) assgnsWithStats.get(i);
if(as.getMean() != null)
{
if(as.getId().equals(assgn1Long))
{
Assert.assertTrue(new BigDecimal(as.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((2.0 + 3 + 4 + 5) / as.getPointsPossible().doubleValue() / 4.0) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(as.getAverageTotal()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((2.0 + 3 + 4 + 5) / 4.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
else
{
Assert.assertTrue(new BigDecimal(as.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1 + 2.0 + 3 + 4 + 5) / as.getPointsPossible().doubleValue() / 5.0) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(as.getAverageTotal()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1 + 2.0 + 3 + 4 + 5) / 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
}
}
public void testGetAssignmentsAndCourseGradeWithStats() throws Exception{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Assignment assign = gradebookManager.getAssignment(assgn1Long);
Assignment assign2 = gradebookManager.getAssignment(assgn3Long);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
integrationSupport.createCourse(persistentGradebook.getUid(), persistentGradebook.getUid(), false, false, false);
gradebookManager.updateGradebook(persistentGradebook);
assign.setPointsPossible(new Double(5));
assign.setExtraCredit(false);
assign2.setExtraCredit(false);
gradebookManager.updateAssignment(assign);
List categories = gradebookManager.getCategories(persistentGradebook.getId());
Category cate = gradebookManager.getCategory(assign.getCategory().getId());
List assignments = gradebookManager.getAssignments(persistentGradebook.getId());
List gradeRecords = generateGradeRecords(assign, 5);
List gradeRecords2 = generateGradeRecords(assign2, 5);
for(int i=0; i<gradeRecords2.size(); i++)
{
gradeRecords.add(gradeRecords2.get(i));
}
List uid = new ArrayList();
uid.add("studentId1");
uid.add("studentId2");
uid.add("studentId3");
uid.add("studentId4");
uid.add("studentId5");
Map studentIdMap = new HashMap();
studentIdMap.put("studentId1", new Double(1.0));
studentIdMap.put("studentId2", new Double(2.0));
studentIdMap.put("studentId3", new Double(3.0));
studentIdMap.put("studentId4", new Double(4.0));
studentIdMap.put("studentId5", new Double(5.0));
addUsersEnrollments(persistentGradebook, uid);
List assgnsWithStats = gradebookManager.getAssignmentsAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true);
for(int i=0; i<(assgnsWithStats.size() - 1); i++)
{
Assignment as = (Assignment) assgnsWithStats.get(i);
if(as.getMean() != null)
{
Assert.assertTrue(new BigDecimal(as.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0 + 2 + 3 + 4 + 5) / as.getPointsPossible().doubleValue() / 5.0) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(as.getAverageTotal()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2 + 3 + 4 + 5) / 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
CourseGrade cg = (CourseGrade) assgnsWithStats.get(assgnsWithStats.size() - 1);
Assert.assertTrue(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0 + 2 + 3 + 4 + 5) * 0.4 / 5.0 / 5.0 + (1.0 + 2 + 3 + 4 + 5) * 0.6 / 10.0 / 5.0 ) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cg.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0 + 2 + 3 + 4 + 5 + 1.0 + 2 + 3 + 4 + 5) / 5.0 )).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
assgnsWithStats = gradebookManager.getAssignmentsAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true);
cg = (CourseGrade) assgnsWithStats.get(assgnsWithStats.size() - 1);
Assert.assertTrue(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0 + 2 + 3 + 4 + 5 + 1.0 + 2 + 3 + 4 + 5) / 15.0 / 5.0 ) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
assgnsWithStats = gradebookManager.getAssignmentsAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true);
cg = (CourseGrade) assgnsWithStats.get(assgnsWithStats.size() - 1);
Assert.assertTrue(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0 + 2 + 3 + 4 + 5 + 1.0 + 2 + 3 + 4 + 5) / 15.0 / 5.0 ) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//test for setting studentId1's assignment1 to null
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assgn1Long) && agr.getStudentId().equals("studentId1"))
agr.setPointsEarned(null);
}
gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
assgnsWithStats = gradebookManager.getAssignmentsAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true);
for(int i=0; i<(assgnsWithStats.size() - 1); i++)
{
Assignment as = (Assignment) assgnsWithStats.get(i);
if(as.getMean() != null && !as.getId().equals(assgn1Long))
{
Assert.assertTrue(new BigDecimal(as.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0 + 2 + 3 + 4 + 5) / as.getPointsPossible().doubleValue() / 5.0) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(as.getAverageTotal()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2 + 3 + 4 + 5) / 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
else if(as.getMean() != null)
{
Assert.assertTrue(new BigDecimal(as.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((2.0 + 3 + 4 + 5) / as.getPointsPossible().doubleValue() / 4.0) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(as.getAverageTotal()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((2.0 + 3 + 4 + 5) / 4.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
cg = (CourseGrade) assgnsWithStats.get(assgnsWithStats.size() - 1);
Assert.assertTrue(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0/10.0) + (2.0/5.0*0.4 + 2.0/10.0*0.6) + (3.0/5.0*0.4 + 3.0/10.0*0.6) + (4.0/5.0*0.4 + 4.0/10.0*0.6) + (5.0/5.0*0.4 + 5.0/10.0*0.6)) *100.0/ 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
assgnsWithStats = gradebookManager.getAssignmentsAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true);
cg = (CourseGrade) assgnsWithStats.get(assgnsWithStats.size() - 1);
Assert.assertTrue(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0/10.0) + (4.0/15.0) + (6.0/15.0) + (8.0/15.0) + (10.0/15.0)) *100.0/ 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cg.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((2 + 3 + 4 + 5 + 1.0 + 2 + 3 + 4 + 5) / 5.0 )).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
assgnsWithStats = gradebookManager.getAssignmentsAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true);
cg = (CourseGrade) assgnsWithStats.get(assgnsWithStats.size() - 1);
Assert.assertTrue(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0/10.0) + (4.0/15.0) + (6.0/15.0) + (8.0/15.0) + (10.0/15.0)) *100.0/ 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cg.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((2 + 3 + 4 + 5 + 1.0 + 2 + 3 + 4 + 5) / 5.0 )).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//test for setting studentId1's assignment2 to null - studentId1 doesn't have any scores now
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assgn3Long) && agr.getStudentId().equals("studentId1"))
agr.setPointsEarned(null);
}
gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
assgnsWithStats = gradebookManager.getAssignmentsAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true);
for(int i=0; i<(assgnsWithStats.size() - 1); i++)
{
Assignment as = (Assignment) assgnsWithStats.get(i);
if(as.getMean() != null && !as.getId().equals(assgn1Long) && !as.getId().equals(assgn3Long))
{
Assert.assertTrue(new BigDecimal(as.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0 + 2 + 3 + 4 + 5) / as.getPointsPossible().doubleValue() / 5.0) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(as.getAverageTotal()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2 + 3 + 4 + 5) / 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
else if(as.getMean() != null)
{
Assert.assertTrue(new BigDecimal(as.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((2.0 + 3 + 4 + 5) / as.getPointsPossible().doubleValue() / 4.0) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(as.getAverageTotal()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((2.0 + 3 + 4 + 5) / 4.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
cg = (CourseGrade) assgnsWithStats.get(assgnsWithStats.size() - 1);
Assert.assertTrue(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((2.0/5.0*0.4 + 2.0/10.0*0.6) + (3.0/5.0*0.4 + 3.0/10.0*0.6) + (4.0/5.0*0.4 + 4.0/10.0*0.6) + (5.0/5.0*0.4 + 5.0/10.0*0.6)) *100.0/ 4.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cg.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((2 + 3 + 4 + 5 + 2.0 + 3 + 4 + 5) / 4.0 )).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
assgnsWithStats = gradebookManager.getAssignmentsAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true);
cg = (CourseGrade) assgnsWithStats.get(assgnsWithStats.size() - 1);
Assert.assertTrue(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((4.0/15.0) + (6.0/15.0) + (8.0/15.0) + (10.0/15.0)) *100.0/ 4.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cg.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((2 + 3 + 4 + 5 + 2.0 + 3 + 4 + 5) / 4.0 )).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
assgnsWithStats = gradebookManager.getAssignmentsAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true);
cg = (CourseGrade) assgnsWithStats.get(assgnsWithStats.size() - 1);
Assert.assertTrue(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((4.0/15.0) + (6.0/15.0) + (8.0/15.0) + (10.0/15.0)) *100.0/ 4.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cg.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((2 + 3 + 4 + 5 + 2.0 + 3 + 4 + 5) / 4.0 )).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
public void testGetAssignmentWithStats() throws Exception{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Assignment assign = gradebookManager.getAssignment(assgn1Long);
Assignment assign2 = gradebookManager.getAssignment(assgn3Long);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
integrationSupport.createCourse(persistentGradebook.getUid(), persistentGradebook.getUid(), false, false, false);
gradebookManager.updateGradebook(persistentGradebook);
assign.setPointsPossible(new Double(5));
gradebookManager.updateAssignment(assign);
List categories = gradebookManager.getCategories(persistentGradebook.getId());
Category cate = gradebookManager.getCategory(assign.getCategory().getId());
List assignments = gradebookManager.getAssignments(persistentGradebook.getId());
List gradeRecords = generateGradeRecords(assign, 5);
List gradeRecords2 = generateGradeRecords(assign2, 5);
for(int i=0; i<gradeRecords2.size(); i++)
{
gradeRecords.add(gradeRecords2.get(i));
}
List uid = new ArrayList();
uid.add("studentId1");
uid.add("studentId2");
uid.add("studentId3");
uid.add("studentId4");
uid.add("studentId5");
Map studentIdMap = new HashMap();
studentIdMap.put("studentId1", new Double(1.0));
studentIdMap.put("studentId2", new Double(2.0));
studentIdMap.put("studentId3", new Double(3.0));
studentIdMap.put("studentId4", new Double(4.0));
studentIdMap.put("studentId5", new Double(5.0));
addUsersEnrollments(persistentGradebook, uid);
Assignment as = gradebookManager.getAssignmentWithStats(assign.getId());
if(as.getMean() != null)
{
Assert.assertTrue(new BigDecimal(as.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0 + 2 + 3 + 4 + 5) / as.getPointsPossible().doubleValue() / 5.0) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(as.getAverageTotal()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2 + 3 + 4 + 5) / 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
as = gradebookManager.getAssignmentWithStats(assign2.getId());
if(as.getMean() != null)
{
Assert.assertTrue(new BigDecimal(as.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0 + 2 + 3 + 4 + 5) / as.getPointsPossible().doubleValue() / 5.0) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(as.getAverageTotal()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2 + 3 + 4 + 5) / 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
//test for setting studentId1's assignment1 to null
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assgn1Long) && agr.getStudentId().equals("studentId1"))
agr.setPointsEarned(null);
}
gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
as = gradebookManager.getAssignmentWithStats(assign.getId());
if(as.getMean() != null)
{
Assert.assertTrue(new BigDecimal(as.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((2.0 + 3 + 4 + 5) / as.getPointsPossible().doubleValue() / 4.0) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(as.getAverageTotal()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((2.0 + 3 + 4 + 5) / 4.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
as = gradebookManager.getAssignmentWithStats(assign2.getId());
if(as.getMean() != null)
{
Assert.assertTrue(new BigDecimal(as.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0 + 2 + 3 + 4 + 5) / as.getPointsPossible().doubleValue() / 5.0) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(as.getAverageTotal()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2 + 3 + 4 + 5) / 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
public void testGetCategoriesWithStats() throws Exception{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Assignment assign = gradebookManager.getAssignment(assgn1Long);
Assignment assign2 = gradebookManager.getAssignment(assgn3Long);
//test for assignment with 0 points
Long assign0long = gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cate1Long, "assignment0point", new Double(0), new Date(), new Boolean(false), new Boolean(true), new Boolean(false));
Assignment assign3 = gradebookManager.getAssignment(assign0long);
//test for ungraded item
Long assign4long = gradebookManager.createUngradedAssignmentForCategory(persistentGradebook.getId(), cate1Long, "assignment_ungraded", new Date(), new Boolean(false), new Boolean(true));
Assignment assign4 = gradebookManager.getAssignment(assign4long);
integrationSupport.createCourse(persistentGradebook.getUid(), persistentGradebook.getUid(), false, false, false);
gradebookManager.updateGradebook(persistentGradebook);
assign.setPointsPossible(new Double(5));
assign.setExtraCredit(false);
assign2.setExtraCredit(false);
assign3.setExtraCredit(false);
assign4.setExtraCredit(false);
gradebookManager.updateAssignment(assign);
List categories = gradebookManager.getCategories(persistentGradebook.getId());
List gradeRecords = generateGradeRecords(assign, 5);
List gradeRecords2 = generateGradeRecords(assign2, 5);
List gradeRecords3 = generateGradeRecords(assign3, 5);
List gradeRecords4 = generateGradeRecords(assign4, 5);
for(int i=0; i<gradeRecords2.size(); i++)
{
gradeRecords.add(gradeRecords2.get(i));
}
for(int i=0; i<gradeRecords3.size(); i++)
{
gradeRecords.add(gradeRecords3.get(i));
}
for(int i=0; i<gradeRecords4.size(); i++)
{
gradeRecords.add(gradeRecords4.get(i));
}
List uid = new ArrayList();
uid.add("studentId1");
uid.add("studentId2");
uid.add("studentId3");
uid.add("studentId4");
uid.add("studentId5");
addUsersEnrollments(persistentGradebook, uid);
List cateList = gradebookManager.getCategoriesWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_NAME, true);
List tempList = gradebookManager.getAssignmentsAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true);
CourseGrade cg1 = (CourseGrade) tempList.get(tempList.size() - 1);
for(int i=0; i<cateList.size(); i++)
{
if(i == (cateList.size() -1))
{
CourseGrade cg = (CourseGrade) cateList.get(i);
Assert.assertTrue(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((2.0 / 15.0 ) + (4.0 / 15.0) + (6.0/15.0) + (8.0/15.0) + (10.0/ 15.0)) * 100 / 5).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
else
{
Category cat = (Category) cateList.get(i);
if(i == 0)
{
Assert.assertTrue(new BigDecimal(cat.getAverageTotalPoints()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2 + 3 + 4 + 5) / 5.0 ).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0+ 2 + 3+ 4 +5.0) / 5.0 / 5.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
else if(i == 1)
{
Assert.assertTrue(new BigDecimal(cat.getAverageTotalPoints()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(10.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2 + 3 + 4 + 5) / 5.0 ).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0+ 2 + 3+ 4 +5.0) / 5.0 / 10.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
List assignList = cat.getAssignmentList();
for(int j=0; j<assignList.size(); j++)
{
Assignment assi= (Assignment) assignList.get(j);
if(assi.getId().equals(assgn1Long))
{
Assert.assertTrue(new BigDecimal(assi.getAverageTotal()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0+2+3+4+5) / 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(assi.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0+2+3+4+5) / 5.0 / 5.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
if(assi.getId().equals(assgn3Long))
{
Assert.assertTrue(new BigDecimal(assi.getAverageTotal()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0+2+3+4+5) / 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(assi.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0+2+3+4+5) / 5.0 / 10.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
//System.out.println(assi.getAverageTotal() + "==" + assi.getMean());
}
}
}
//test for setting studentId1's assignment1 to null
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assgn1Long) && agr.getStudentId().equals("studentId1"))
agr.setPointsEarned(null);
}
gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
cateList = gradebookManager.getCategoriesWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_NAME, true);
CourseGrade cg = (CourseGrade) cateList.get(cateList.size() - 1);
Assert.assertTrue(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0/10.0 ) + (2.0/5.0 * 0.4 + 2.0 / 10.0 * 0.6) + (3.0/5.0 * 0.4 + 3.0 / 10.0 * 0.6) + (4.0/5.0 * 0.4 + 4.0 / 10.0 * 0.6) + (5.0/5.0 * 0.4 + 5.0 / 10.0 * 0.6)) * 100 / 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
for(int i=0; i<(cateList.size() - 1); i++)
{
Category cat = (Category) cateList.get(i);
if(i == 0)
{
Assert.assertTrue(new BigDecimal(cat.getAverageTotalPoints()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((2.0 + 3 + 4 + 5) / 4.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((2 + 3+ 4 +5.0) / 5.0 / 4.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
else if(i == 1)
{
Assert.assertTrue(new BigDecimal(cat.getAverageTotalPoints()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(10.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2.0 + 3 + 4 + 5) / 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0+ 2 + 3+ 4 +5.0) / 5.0 / 10.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
List assignList = cat.getAssignmentList();
for(int j=0; j<assignList.size(); j++)
{
Assignment assi= (Assignment) assignList.get(j);
if(assi.getId().equals(assgn1Long))
{
Assert.assertTrue(new BigDecimal(assi.getAverageTotal()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((2+3+4+5) / 4.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(assi.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((2+3+4+5) / 4.0 / 5.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
if(assi.getId().equals(assgn3Long))
{
Assert.assertTrue(new BigDecimal(assi.getAverageTotal()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0+2+3+4+5) / 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(assi.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0+2+3+4+5) / 5.0 / 10.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
}
//test for non-released assignment
Category cateWithNonRleased = (Category)cateList.get(0);
gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cateWithNonRleased.getId(),
cateWithNonRleased.getName() + "_assignment_non_released", new Double(10.0), new Date(), new Boolean(false), new Boolean(false), new Boolean(false));
cateList = gradebookManager.getCategoriesWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_NAME, true);
List assignListWithNonReleased = cateWithNonRleased.getAssignmentList();
Assert.assertTrue(new BigDecimal(cateWithNonRleased.getAverageTotalPoints()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cateWithNonRleased.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((2.0 + 3 + 4 + 5) / 4.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(assignListWithNonReleased.size() == 5);
for(int i=0; i<assignListWithNonReleased.size(); i++)
{
Assignment testAsignmentNonReleased = (Assignment)assignListWithNonReleased.get(i);
if(i == 4)
Assert.assertTrue(testAsignmentNonReleased.getName().equals(cateWithNonRleased.getName() + "_assignment_non_released"));
}
cg = (CourseGrade) cateList.get(cateList.size() - 1);
Assert.assertTrue(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0/10.0 ) + (2.0/5.0 * 0.4 + 2.0 / 10.0 * 0.6) + (3.0/5.0 * 0.4 + 3.0 / 10.0 * 0.6) + (4.0/5.0 * 0.4 + 4.0 / 10.0 * 0.6) + (5.0/5.0 * 0.4 + 5.0 / 10.0 * 0.6)) * 100 / 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//test for setting one assignment to be not included in course grade
assign.setNotCounted(true);
gradebookManager.updateAssignment(assign);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
cateList = gradebookManager.getCategoriesWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_NAME, true);
for(int i=0; i<(cateList.size() - 1); i++)
{
Category cat = (Category) cateList.get(i);
if(i == 0)
{
Assert.assertTrue(cat.getAverageTotalPoints() == null);
Assert.assertTrue(cat.getAverageScore() == null);
Assert.assertTrue(cat.getMean() == null);
}
else if(i == 1)
{
Assert.assertTrue(new BigDecimal(cat.getAverageTotalPoints()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(10.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2.0 + 3 + 4 + 5) / 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0+ 2 + 3+ 4 +5.0) / 5.0 / 10.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
//add another assignment to cate_1 for test
Category cate1 = (Category)cateList.get(0);
Long assignAddedId = gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cate1.getId(),
cate1.getName() + "_assignment_added", new Double(10.0), new Date(), new Boolean(false), new Boolean(true), new Boolean(false));
generateGradeRecords(gradebookManager.getAssignment(assignAddedId), 5);
cateList = gradebookManager.getCategoriesWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_NAME, true);
for(int i=0; i<(cateList.size() - 1); i++)
{
Category cat = (Category) cateList.get(i);
if(i == 0)
{
Assert.assertTrue(new BigDecimal(cat.getAverageTotalPoints()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(10.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2.0 + 3 + 4 + 5) / 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2 + 3+ 4 +5.0) / 10.0 / 5.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
else if(i == 1)
{
Assert.assertTrue(new BigDecimal(cat.getAverageTotalPoints()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(10.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2.0 + 3 + 4 + 5) / 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0+ 2 + 3+ 4 +5.0) / 5.0 / 10.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
}
public void testGetAssignmentsWithNoCategory() throws Exception
{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Long assignId1 = gradebookManager.createAssignment(persistentGradebook.getId(), "no_cate_1", new Double(10), new Date(), new Boolean(false), new Boolean(true), new Boolean(false));
Long assignId2 = gradebookManager.createAssignment(persistentGradebook.getId(), "no_cate_2", new Double(9), new Date(), new Boolean(false), new Boolean(true), new Boolean(false));
List assigns = gradebookManager.getAssignmentsWithNoCategory(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true);
Assert.assertTrue(assigns.size() == 2);
Assert.assertTrue(assignId1.longValue() == ((Assignment)assigns.get(0)).getId().longValue());
Assert.assertTrue(assignId2.longValue() == ((Assignment)assigns.get(1)).getId().longValue());
assigns = gradebookManager.getAssignmentsWithNoCategory(persistentGradebook.getId(), Assignment.SORT_BY_POINTS, true);
Assert.assertTrue(assignId1.longValue() == ((Assignment)assigns.get(1)).getId().longValue());
Assert.assertTrue(assignId2.longValue() == ((Assignment)assigns.get(0)).getId().longValue());
assigns = gradebookManager.getAssignmentsWithNoCategory(persistentGradebook.getId(), Assignment.SORT_BY_POINTS, false);
Assert.assertTrue(assignId1.longValue() == ((Assignment)assigns.get(0)).getId().longValue());
Assert.assertTrue(assignId2.longValue() == ((Assignment)assigns.get(1)).getId().longValue());
}
public void testGetCategoriesWithSorting() throws Exception
{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
List cateList = gradebookManager.getCategoriesWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_NAME, true);
for(int i=0; i<(cateList.size() - 1); i++)
{
Category cat = (Category) cateList.get(i);
if(i == 0)
Assert.assertTrue(cat.getName().equals("cate 1"));
if(i == 1)
Assert.assertTrue(cat.getName().equals("cate 2"));
}
cateList = gradebookManager.getCategoriesWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_NAME, false);
for(int i=0; i<(cateList.size() - 1); i++)
{
Category cat = (Category) cateList.get(i);
if(i == 0)
Assert.assertTrue(cat.getName().equals("cate 2"));
if(i == 1)
Assert.assertTrue(cat.getName().equals("cate 1"));
}
Assignment assign = gradebookManager.getAssignment(assgn1Long);
Assignment assign2 = gradebookManager.getAssignment(assgn3Long);
integrationSupport.createCourse(persistentGradebook.getUid(), persistentGradebook.getUid(), false, false, false);
gradebookManager.updateGradebook(persistentGradebook);
assign.setPointsPossible(new Double(5));
gradebookManager.updateAssignment(assign);
List categories = gradebookManager.getCategories(persistentGradebook.getId());
List gradeRecords = generateGradeRecords(assign, 5);
List gradeRecords2 = generateGradeRecords(assign2, 5);
for(int i=0; i<gradeRecords2.size(); i++)
{
gradeRecords.add(gradeRecords2.get(i));
}
List uid = new ArrayList();
uid.add("studentId1");
uid.add("studentId2");
uid.add("studentId3");
uid.add("studentId4");
uid.add("studentId5");
addUsersEnrollments(persistentGradebook, uid);
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assgn1Long) && agr.getStudentId().equals("studentId1"))
agr.setPointsEarned(null);
}
gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
cateList = gradebookManager.getCategoriesWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_AVERAGE_SCORE, true);
for(int i=0; i<(cateList.size() - 1); i++)
{
Category cat = (Category) cateList.get(i);
if(i == 0)
Assert.assertTrue(cat.getAverageScore().equals((double)((1.0+2+3+4+5))/ 5.0));
if(i == 1)
Assert.assertTrue(cat.getAverageScore().equals((double)((2.0+3+4+5)/4.0)));
}
cateList = gradebookManager.getCategoriesWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_AVERAGE_SCORE, false);
for(int i=0; i<(cateList.size() - 1); i++)
{
Category cat = (Category) cateList.get(i);
if(i == 0)
Assert.assertTrue(cat.getAverageScore().equals((double)((2.0+3+4+5)/4.0)));
if(i == 1)
Assert.assertTrue(cat.getAverageScore().equals((double)((1.0+2+3+4+5))/ 5.0));
}
cateList = gradebookManager.getCategoriesWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_WEIGHT, true);
for(int i=0; i<(cateList.size() - 1); i++)
{
Category cat = (Category) cateList.get(i);
if(i == 0)
Assert.assertTrue(cat.getWeight().equals((double)0.4));
if(i == 1)
Assert.assertTrue(cat.getWeight().equals((double)0.6));
}
cateList = gradebookManager.getCategoriesWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_WEIGHT, false);
for(int i=0; i<(cateList.size() - 1); i++)
{
Category cat = (Category) cateList.get(i);
if(i == 0)
Assert.assertTrue(cat.getWeight().equals((double)0.6));
if(i == 1)
Assert.assertTrue(cat.getWeight().equals((double)0.4));
}
}
public void testGetAssignmentsWithNoCategoryWithStats() throws Exception
{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Long assignId1 = gradebookManager.createAssignment(persistentGradebook.getId(), "no_cate_1", new Double(10), new Date(), new Boolean(false), new Boolean(true), new Boolean(false));
Long assignId2 = gradebookManager.createAssignment(persistentGradebook.getId(), "no_cate_2", new Double(9), new Date(), new Boolean(false), new Boolean(true), new Boolean(false));
Assignment assign = gradebookManager.getAssignment(assgn1Long);
Assignment assign2 = gradebookManager.getAssignment(assgn3Long);
integrationSupport.createCourse(persistentGradebook.getUid(), persistentGradebook.getUid(), false, false, false);
gradebookManager.updateGradebook(persistentGradebook);
assign.setPointsPossible(new Double(5));
gradebookManager.updateAssignment(assign);
List categories = gradebookManager.getCategories(persistentGradebook.getId());
List gradeRecords = generateGradeRecords(assign, 5);
List gradeRecords2 = generateGradeRecords(assign2, 5);
for(int i=0; i<gradeRecords2.size(); i++)
{
gradeRecords.add(gradeRecords2.get(i));
}
gradeRecords2 = generateGradeRecords(gradebookManager.getAssignment(assignId1), 5);
for(int i=0; i<gradeRecords2.size(); i++)
{
gradeRecords.add(gradeRecords2.get(i));
}
gradeRecords2 = generateGradeRecords(gradebookManager.getAssignment(assignId2), 5);
for(int i=0; i<gradeRecords2.size(); i++)
{
gradeRecords.add(gradeRecords2.get(i));
}
List uid = new ArrayList();
uid.add("studentId1");
uid.add("studentId2");
uid.add("studentId3");
uid.add("studentId4");
uid.add("studentId5");
addUsersEnrollments(persistentGradebook, uid);
List assignWithStatsWithNoCategory = gradebookManager.getAssignmentsWithNoCategoryWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true);
for(int i=0; i<assignWithStatsWithNoCategory.size(); i++)
{
Assignment assginment = (Assignment) assignWithStatsWithNoCategory.get(i);
Assert.assertTrue(assginment.getId().equals(assignId1) || assginment.getId().equals(assignId2));
if(assginment.getId().equals(assignId1))
Assert.assertTrue(new BigDecimal(assginment.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2.0 +3 +4 +5) / 5.0 / 10.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
if(assginment.getId().equals(assignId2))
Assert.assertTrue(new BigDecimal(assginment.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2.0 +3 +4 +5) / 5.0 / 9.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
public void testConvertGradingEventsConverted() throws Exception
{
Assignment assign = gradebookManager.getAssignment(assgn1Long);
GradingEvent ge1 = new GradingEvent(assign, "admin", "studentId1", new Double(1.0));
GradingEvent ge2 = new GradingEvent(assign, "admin", "studentId2", new Double(2.0));
GradingEvents ges = new GradingEvents();
ges.addEvent(ge1);
ges.addEvent(ge2);
List uid = new ArrayList();
uid.add("studentId1");
uid.add("studentId2");
gradebookManager.convertGradingEventsConverted(assign, ges, uid, GradebookService.GRADE_TYPE_PERCENTAGE);
List events = ges.getEvents((String)uid.get(0));
for(Iterator iter = events.iterator(); iter.hasNext(); )
{
GradingEvent converted = (GradingEvent) iter.next();
Assert.assertTrue(new BigDecimal(new Double(converted.getGrade())).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(1.0 / assign.getPointsPossible().doubleValue() * 100.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
events = ges.getEvents((String)uid.get(1));
for(Iterator iter = events.iterator(); iter.hasNext(); )
{
GradingEvent converted = (GradingEvent) iter.next();
Assert.assertTrue(new BigDecimal(new Double(converted.getGrade())).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(2.0 / assign.getPointsPossible().doubleValue() * 100.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
public void testCheckStuendsNotSubmitted() throws Exception
{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Assignment assign = gradebookManager.getAssignment(assgn1Long);
Assignment assign2 = gradebookManager.getAssignment(assgn3Long);
//test for ungraded item
Long assign4long = gradebookManager.createUngradedAssignmentForCategory(persistentGradebook.getId(), cate1Long, "assignment_ungraded", new Date(), new Boolean(false), new Boolean(true));
Assignment assign4 = gradebookManager.getAssignment(assign4long);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
integrationSupport.createCourse(persistentGradebook.getUid(), persistentGradebook.getUid(), false, false, false);
gradebookManager.updateGradebook(persistentGradebook);
assign.setPointsPossible(new Double(5));
gradebookManager.updateAssignment(assign);
List categories = gradebookManager.getCategories(persistentGradebook.getId());
Category cate = gradebookManager.getCategory(assign.getCategory().getId());
List assignments = gradebookManager.getAssignments(persistentGradebook.getId());
List gradeRecords = generateGradeRecords(assign, 5);
List gradeRecords2 = generateGradeRecords(assign2, 5);
List gradeRecords4 = generateGradeRecords(assign4, 5);
for(int i=0; i<gradeRecords2.size(); i++)
{
gradeRecords.add(gradeRecords2.get(i));
}
for(int i=0; i<gradeRecords4.size(); i++)
{
gradeRecords.add(gradeRecords4.get(i));
}
List uid = new ArrayList();
uid.add("studentId1");
uid.add("studentId2");
uid.add("studentId3");
uid.add("studentId4");
uid.add("studentId5");
Map studentIdMap = new HashMap();
studentIdMap.put("studentId1", new Double(1.0));
studentIdMap.put("studentId2", new Double(2.0));
studentIdMap.put("studentId3", new Double(3.0));
studentIdMap.put("studentId4", new Double(4.0));
studentIdMap.put("studentId5", new Double(5.0));
gradeRecords = gradebookManager.getAllAssignmentGradeRecords(persistentGradebook.getId(), uid);
addUsersEnrollments(persistentGradebook, uid);
Assert.assertTrue(gradebookManager.checkStuendsNotSubmitted(persistentGradebook));
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
Assert.assertTrue(gradebookManager.checkStuendsNotSubmitted(persistentGradebook));
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
Assert.assertTrue(gradebookManager.checkStuendsNotSubmitted(persistentGradebook));
List allAssigns = gradebookManager.getAssignments(persistentGradebook.getId());
for(Iterator iter = allAssigns.iterator(); iter.hasNext();)
{
Assignment assignment = (Assignment) iter.next();
if(!assignment.getId().equals(assgn1Long))
{
assignment.setCounted(false);
gradebookManager.updateAssignment(assignment);
}
}
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
Assert.assertTrue(!gradebookManager.checkStuendsNotSubmitted(persistentGradebook));
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
Assert.assertTrue(!gradebookManager.checkStuendsNotSubmitted(persistentGradebook));
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
Assert.assertTrue(!gradebookManager.checkStuendsNotSubmitted(persistentGradebook));
//test for setting studentId1's ungraded item to null
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assign4long) && agr.getStudentId().equals("studentId1"))
agr.setPointsEarned(null);
}
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
Assert.assertTrue(!gradebookManager.checkStuendsNotSubmitted(persistentGradebook));
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
Assert.assertTrue(!gradebookManager.checkStuendsNotSubmitted(persistentGradebook));
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
Assert.assertTrue(!gradebookManager.checkStuendsNotSubmitted(persistentGradebook));
//test for setting studentId1's assignment1 to null
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assgn1Long) && agr.getStudentId().equals("studentId1"))
agr.setPointsEarned(null);
}
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
Assert.assertTrue(gradebookManager.checkStuendsNotSubmitted(persistentGradebook));
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
Assert.assertTrue(gradebookManager.checkStuendsNotSubmitted(persistentGradebook));
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
Assert.assertTrue(gradebookManager.checkStuendsNotSubmitted(persistentGradebook));
}
public void testfillInZeroForNullGradeRecords() throws Exception
{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Assignment assign = gradebookManager.getAssignment(assgn1Long);
Assignment assign2 = gradebookManager.getAssignment(assgn3Long);
//test for ungraded item
Long assign4long = gradebookManager.createUngradedAssignmentForCategory(persistentGradebook.getId(), cate1Long, "assignment_ungraded", new Date(), new Boolean(false), new Boolean(true));
Assignment assign4 = gradebookManager.getAssignment(assign4long);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
integrationSupport.createCourse(persistentGradebook.getUid(), persistentGradebook.getUid(), false, false, false);
gradebookManager.updateGradebook(persistentGradebook);
assign.setPointsPossible(new Double(5));
gradebookManager.updateAssignment(assign);
List categories = gradebookManager.getCategories(persistentGradebook.getId());
Category cate = gradebookManager.getCategory(assign.getCategory().getId());
List assignments = gradebookManager.getAssignments(persistentGradebook.getId());
List gradeRecords = generateGradeRecords(assign, 5);
List gradeRecords2 = generateGradeRecords(assign2, 5);
for(int i=0; i<gradeRecords2.size(); i++)
{
gradeRecords.add(gradeRecords2.get(i));
}
List uid = new ArrayList();
uid.add("studentId1");
uid.add("studentId2");
uid.add("studentId3");
uid.add("studentId4");
uid.add("studentId5");
Map studentIdMap = new HashMap();
studentIdMap.put("studentId1", new Double(1.0));
studentIdMap.put("studentId2", new Double(2.0));
studentIdMap.put("studentId3", new Double(3.0));
studentIdMap.put("studentId4", new Double(4.0));
studentIdMap.put("studentId5", new Double(5.0));
gradeRecords = gradebookManager.getAllAssignmentGradeRecords(persistentGradebook.getId(), uid);
addUsersEnrollments(persistentGradebook, uid);
Assert.assertTrue(gradebookManager.checkStuendsNotSubmitted(persistentGradebook));
Assert.assertTrue(gradebookManager.getAllAssignmentGradeRecords(persistentGradebook.getId(), uid).size() == 10);
gradebookManager.fillInZeroForNullGradeRecords(persistentGradebook);
Assert.assertTrue(!gradebookManager.checkStuendsNotSubmitted(persistentGradebook));
Assert.assertTrue(gradebookManager.getAllAssignmentGradeRecords(persistentGradebook.getId(), uid).size() == 20);
//test for setting studentId1's ungraded item to null
List gradeRecords4 = generateGradeRecords(assign4, 5);
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assign4long) && agr.getStudentId().equals("studentId1"))
agr.setPointsEarned(null);
}
Assert.assertTrue(!gradebookManager.checkStuendsNotSubmitted(persistentGradebook));
//test for setting studentId1's assignment1 to null
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assgn1Long) && agr.getStudentId().equals("studentId1"))
agr.setPointsEarned(null);
}
Assert.assertTrue(gradebookManager.checkStuendsNotSubmitted(persistentGradebook));
gradebookManager.fillInZeroForNullGradeRecords(persistentGradebook);
Assert.assertTrue(!gradebookManager.checkStuendsNotSubmitted(persistentGradebook));
}
public void testConvertGradePointsForUpdatedTotalPoints() throws Exception
{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Assignment assign = gradebookManager.getAssignment(assgn1Long);
Assignment assign2 = gradebookManager.getAssignment(assgn3Long);
persistentGradebook.setGrade_type(GradebookService.GRADE_TYPE_PERCENTAGE);
gradebookManager.updateGradebook(persistentGradebook);
assign.setPointsPossible(new Double(5));
gradebookManager.updateAssignment(assign);
List studentUids = new ArrayList();
studentUids.add("studentId1");
studentUids.add("studentId2");
studentUids.add("studentId3");
studentUids.add("studentId4");
studentUids.add("studentId5");
Map studentIdMap = new HashMap();
studentIdMap.put("studentId1", new Double(1.0));
studentIdMap.put("studentId2", new Double(2.0));
studentIdMap.put("studentId3", new Double(3.0));
studentIdMap.put("studentId4", new Double(4.0));
studentIdMap.put("studentId5", new Double(5.0));
integrationSupport.createCourse(persistentGradebook.getUid(), persistentGradebook.getUid(), false, false, false);
gradebookManager.updateGradebook(persistentGradebook);
addUsersEnrollments(persistentGradebook, studentUids);
generateGradeRecords(assign, 5);
gradebookManager.convertGradePointsForUpdatedTotalPoints(persistentGradebook, assign, new Double(10), studentUids);
assign.setPointsPossible(new Double(10));
gradebookManager.updateAssignment(assign);
List records = gradebookManager.getAllAssignmentGradeRecordsConverted(persistentGradebook.getId(), studentUids);
for(int i=0; i<records.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord) records.get(i);
if(agr.getAssignment().getCategory().getName().equals("cate 1"))
Assert.assertTrue(agr.getPercentEarned().doubleValue() == ((Double)studentIdMap.get(agr.getStudentId())).doubleValue() * 2.0 / 10.0 * 100.0);
// System.out.println(agr.getAssignment().getName() + "-----" + agr.getStudentId() + "---" + agr.getPointsEarned());
}
persistentGradebook.setGrade_type(GradebookService.GRADE_TYPE_LETTER);
gradebookManager.updateGradebook(persistentGradebook);
gradebookManager.convertGradePointsForUpdatedTotalPoints(persistentGradebook, assign, new Double(6), studentUids);
assign.setPointsPossible(new Double(6.0));
gradebookManager.updateAssignment(assign);
records = gradebookManager.getAllAssignmentGradeRecordsConverted(persistentGradebook.getId(), studentUids);
LetterGradePercentMapping lgpm = gradebookManager.getLetterGradePercentMapping(persistentGradebook);
for(int i=0; i<records.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord) records.get(i);
if(agr.getAssignment().getCategory().getName().equals("cate 1"))
{
Assert.assertTrue(agr.getLetterEarned().equals(lgpm.getGrade(((Double)studentIdMap.get(agr.getStudentId())).doubleValue() * 2.0 / 10.0 * 100)));
}
}
}
public void testCalculateStatisticsPerStudent() throws Exception
{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Assignment assign = gradebookManager.getAssignment(assgn1Long);
Assignment assign2 = gradebookManager.getAssignment(assgn3Long);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
assign.setPointsPossible(new Double(5));
gradebookManager.updateAssignment(assign);
//test for ungraded item
Long assign4long = gradebookManager.createUngradedAssignmentForCategory(persistentGradebook.getId(), cate1Long, "assignment_ungraded", new Date(), new Boolean(false), new Boolean(true));
Assignment assign4 = gradebookManager.getAssignment(assign4long);
List gradeRecords = generateGradeRecords(assign, 5);
List gradeRecords2 = generateGradeRecords(assign2, 5);
List gradeRecords4 = generateGradeRecords(assign4, 5);
for(int i=0; i<gradeRecords2.size(); i++)
{
gradeRecords.add(gradeRecords2.get(i));
}
for(int i=0; i<gradeRecords4.size(); i++)
{
gradeRecords.add(gradeRecords4.get(i));
}
List uid = new ArrayList();
uid.add("studentId1");
uid.add("studentId2");
uid.add("studentId3");
uid.add("studentId4");
uid.add("studentId5");
Map studentIdMap = new HashMap();
studentIdMap.put("studentId1", new Double(1.0));
studentIdMap.put("studentId2", new Double(2.0));
studentIdMap.put("studentId3", new Double(3.0));
studentIdMap.put("studentId4", new Double(4.0));
studentIdMap.put("studentId5", new Double(5.0));
Category cate = gradebookManager.getCategory(cate1Long);
cate.calculateStatisticsPerStudent(gradeRecords, "studentId1");
Assert.assertTrue(cate.getMean().doubleValue() == 20.0);
Assert.assertTrue(cate.getAverageScore().doubleValue() == 1.0);
Assert.assertTrue(cate.getAverageTotalPoints().doubleValue() == 5.0);
cate = gradebookManager.getCategory(cate2Long);
cate.calculateStatisticsPerStudent(gradeRecords, "studentId1");
Assert.assertTrue(cate.getMean().doubleValue() == 10.0);
Assert.assertTrue(cate.getAverageScore().doubleValue() == 1.0);
Assert.assertTrue(cate.getAverageTotalPoints().doubleValue() == 10.0);
//test for setting studentId1's assignment1 to null
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assgn1Long) && agr.getStudentId().equals("studentId1"))
agr.setPointsEarned(null);
}
cate = gradebookManager.getCategory(cate1Long);
cate.calculateStatisticsPerStudent(gradeRecords, "studentId1");
Assert.assertTrue(cate.getMean() == null);
Assert.assertTrue(cate.getAverageScore() == null);
Assert.assertTrue(cate.getAverageTotalPoints() == null);
cate = gradebookManager.getCategory(cate2Long);
cate.calculateStatisticsPerStudent(gradeRecords, "studentId1");
Assert.assertTrue(cate.getMean().doubleValue() == 10.0);
Assert.assertTrue(cate.getAverageScore().doubleValue() == 1.0);
Assert.assertTrue(cate.getAverageTotalPoints().doubleValue() == 10.0);
}
public void testGetLetterGradePercentMapping() throws Exception
{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
LetterGradePercentMapping lgpm = null;
Map gradeMap = new HashMap();
gradeMap.put("a+", new Double(98));
gradeMap.put("a", new Double(95));
gradeMap.put("a-", new Double(90));
gradeMap.put("b+", new Double(88));
gradeMap.put("b", new Double(85));
gradeMap.put("b-", new Double(80));
gradeMap.put("c+", new Double(78));
gradeMap.put("c", new Double(75));
gradeMap.put("c-", new Double(70));
gradeMap.put("d+", new Double(68));
gradeMap.put("d", new Double(65));
gradeMap.put("d-", new Double(60));
gradeMap.put("f", new Double(0));
gradebookManager.createOrUpdateDefaultLetterGradePercentMapping(gradeMap);
lgpm = gradebookManager.getLetterGradePercentMapping(persistentGradebook);
Assert.assertTrue(lgpm.getValue("a").equals(new Double("95")));
gradeMap.put("a", new Double("96"));
lgpm = gradebookManager.getLetterGradePercentMapping(persistentGradebook);
Assert.assertTrue(lgpm.getValue("a").equals(new Double("95")));
gradebookManager.saveOrUpdateLetterGradePercentMapping(gradeMap, persistentGradebook);
lgpm = gradebookManager.getLetterGradePercentMapping(persistentGradebook);
Assert.assertTrue(lgpm.getValue("a").equals(new Double("96")));
lgpm = gradebookManager.getDefaultLetterGradePercentMapping();
Assert.assertTrue(lgpm.getValue("a").equals(new Double("95")));
gradebookManager.createOrUpdateDefaultLetterGradePercentMapping(gradeMap);
Assert.assertTrue(lgpm.getValue("a").equals(new Double("96")));
}
public void testCreateUngradedAssignment() throws Exception
{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
String A1_NAME = "ungraded-item";
Long assignmentId = gradebookManager.createUngradedAssignment(persistentGradebook.getId(), A1_NAME, new Date(), false, false);
Assignment assignment = gradebookManager.getAssignment(assignmentId);
Assert.assertEquals(null, assignment.getPointsPossible());
Assert.assertTrue(assignment.getUngraded());
Assert.assertEquals(A1_NAME, assignment.getName());
// now try to create an assignment with the same name
try {
gradebookManager.createUngradedAssignment(persistentGradebook.getId(), A1_NAME, new Date(), false, false);
fail("Did not catch assignment created with same name as existing assignment");
} catch (ConflictingAssignmentNameException cane) {}
// try to save one with trailing whitespace
try {
gradebookManager.createUngradedAssignment(persistentGradebook.getId(), " " + A1_NAME + " ", new Date(), false, false);
fail("Did not catch assignment created with same name as existing assignment with trailing spaces");
} catch (ConflictingAssignmentNameException cane) {}
}
public void testCreateUngradedAssignmentForCategory() throws Exception
{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
String A1_NAME = "ungraded item";
Long assignmentId = gradebookManager.createUngradedAssignmentForCategory(persistentGradebook.getId(), cate1Long, A1_NAME, new Date(), false, false);
Assignment assignment = gradebookManager.getAssignment(assignmentId);
Assert.assertEquals(null, assignment.getPointsPossible());
Assert.assertTrue(assignment.getUngraded());
Assert.assertEquals(A1_NAME, assignment.getName());
Assert.assertEquals(cate1Long, assignment.getCategory().getId());
// now try to create an assignment with the same name
try {
gradebookManager.createUngradedAssignmentForCategory(persistentGradebook.getId(), cate1Long, A1_NAME, new Date(), false, false);
fail("Did not catch assignment created with same name as existing assignment");
} catch (ConflictingAssignmentNameException cane) {}
// try to save one with trailing whitespace
try {
gradebookManager.createUngradedAssignmentForCategory(persistentGradebook.getId(), cate1Long, " " + A1_NAME + " ", new Date(), false, false);
fail("Did not catch assignment created with same name as existing assignment with trailing spaces");
} catch (ConflictingAssignmentNameException cane) {}
}
public void testSortLetterGrade() throws Exception
{
List list = new ArrayList();
list.add("b");
list.add("a+");
list.add("C-");
list.add("A");
list.add("A-");
list.add("b+");
list.add("B-");
list.add("c");
list.add("C+");
Collections.sort(list, GradebookService.lettergradeComparator);
//System.out.println();
for(int i=0; i<list.size(); i++)
{
//System.out.print((String)list.get(i) + "::");
}
//System.out.println();
}
public void testAddPermissionGetPermissionsForGB() throws Exception
{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Long permId = gradebookManager.addPermission(persistentGradebook.getId(), "grader1", GradebookService.gradePermission, cate1Long,"fake section");
Long permId1 = gradebookManager.addPermission(persistentGradebook.getId(), "grader2", GradebookService.viewPermission, null,"section1");
Long permId2 = gradebookManager.addPermission(persistentGradebook.getId(), "grader3", GradebookService.viewPermission, cate1Long, null);
List permList = gradebookManager.getPermissionsForGB(persistentGradebook.getId());
Assert.assertTrue(permList.size() == 3);
}
public void testUpdatePermission() throws Exception
{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Long permId = gradebookManager.addPermission(persistentGradebook.getId(), "grader1", GradebookService.gradePermission, cate1Long,"fake section");
Long permId1 = gradebookManager.addPermission(persistentGradebook.getId(), "grader2", GradebookService.viewPermission, null,"section1");
Long permId2 = gradebookManager.addPermission(persistentGradebook.getId(), "grader3", GradebookService.viewPermission, cate1Long, null);
List permList = gradebookManager.getPermissionsForGB(persistentGradebook.getId());
for(int i=0; i<permList.size(); i++)
{
Permission perm = (Permission) permList.get(i);
perm.setFunction(GradebookService.gradePermission);
perm.setGroupId("another section");
}
gradebookManager.updatePermission(permList);
permList = gradebookManager.getPermissionsForGB(persistentGradebook.getId());
//gradebookManager.deletePermission((Permission)permList.get(0));
//permList = gradebookManager.getPermissionsForGB(persistentGradebook.getId());
Long permId3 = gradebookManager.addPermission(persistentGradebook.getId(), "grader1", GradebookService.viewPermission, cate1Long, null);
permList = gradebookManager.getPermissionsForUser(persistentGradebook.getId(), "grader1");
}
public void testGetCategoriesForUser() throws Exception
{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
Long permId = gradebookManager.addPermission(persistentGradebook.getId(), "grader1", GradebookService.gradePermission, cate1Long,"fake section");
Long permId1 = gradebookManager.addPermission(persistentGradebook.getId(), "grader2", GradebookService.viewPermission, null,"section1");
Long permId2 = gradebookManager.addPermission(persistentGradebook.getId(), "grader3", GradebookService.viewPermission, cate1Long, null);
Long permId4 = gradebookManager.addPermission(persistentGradebook.getId(), "grader1", GradebookService.gradePermission, cate1Long,"another section");
Long permId5 = gradebookManager.addPermission(persistentGradebook.getId(), "grader1", GradebookService.gradePermission, null,"another section");
List cateList = gradebookManager.getCategories(persistentGradebook.getId());
List<Long> catIds = new ArrayList<Long>();
for (Category cat : (List<Category>) cateList) {
catIds.add(cat.getId());
}
List viewableCatIds = gradebookPermissionService.getCategoriesForUser(persistentGradebook.getId(), "grader1", catIds, GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
// for(int i=0; i<cateList.size(); i++)
// {
// System.out.println(((Category)cateList.get(i)).getName());
// }
}
public void testGetStudentsForItem() throws Exception
{
try
{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
Course courseSite = integrationSupport.createCourse("test site", "test site", false, true, true);
User student1 = userManager.createUser("studentId1", "studentId1", "studentId1-last, studentId1-first", "studentId1");
User student2 = userManager.createUser("studentId2", "studentId2", "studentId2-last, studentId2-first", "studentId2");
User student3 = userManager.createUser("studentId3", "studentId3", "studentId3-last, studentId3-first", "studentId3");
integrationSupport.addSiteMembership(student1.getUserUid(), courseSite.getSiteContext(), Role.STUDENT);
integrationSupport.addSiteMembership(student2.getUserUid(), courseSite.getSiteContext(), Role.STUDENT);
integrationSupport.addSiteMembership(student3.getUserUid(), courseSite.getSiteContext(), Role.STUDENT);
List sectionCategories = sectionAwareness.getSectionCategories(courseSite.getSiteContext());
String catId = (String)sectionCategories.get(1);
CourseSection grp1 = integrationSupport.createSection(courseSite.getUuid(), "grp1", catId, new Integer(40), "Room 2", null, null, true, false, true, false, false, false, false);
CourseSection grp2 = integrationSupport.createSection(courseSite.getUuid(),"grp2", catId, new Integer(40), "Room 2", null, null, true, false, true, false, false, false, false);
integrationSupport.addSectionMembership(student1.getUserUid(), grp1.getUuid(), Role.STUDENT);
integrationSupport.addSectionMembership("studentId2", grp1.getUuid(), Role.STUDENT);
integrationSupport.addSectionMembership("studentId1", grp2.getUuid(), Role.STUDENT);
integrationSupport.addSectionMembership("studentId2", grp2.getUuid(), Role.STUDENT);
integrationSupport.addSectionMembership("studentId3", grp2.getUuid(), Role.STUDENT);
Long permId1 = gradebookManager.addPermission(persistentGradebook.getId(), "grader1", GradebookService.gradePermission, cate1Long,grp1.getUuid());
permId1 = gradebookManager.addPermission(persistentGradebook.getId(), "grader2", GradebookService.viewPermission, cate1Long, grp1.getUuid());
gradebookManager.addPermission(persistentGradebook.getId(), "grader2", GradebookService.gradePermission, null, null);
Long permId2 = gradebookManager.addPermission(persistentGradebook.getId(), "grader3", GradebookService.viewPermission, cate1Long, null);
Long permId3 = gradebookManager.addPermission(persistentGradebook.getId(), "grader1", GradebookService.viewPermission, cate1Long,null);
Long permId5 = gradebookManager.addPermission(persistentGradebook.getId(), "grader1", GradebookService.viewPermission, null,grp2.getUuid());
gradebookManager.addPermission(persistentGradebook.getId(), "grader5", GradebookService.viewPermission, null, grp1.getUuid());
gradebookManager.addPermission(persistentGradebook.getId(), "grader5", GradebookService.gradePermission, cate1Long, grp2.getUuid());
List grps = new ArrayList();
grps.add(grp1);
grps.add(grp2);
List studentIds = new ArrayList();
studentIds.add("studentId1");
studentIds.add("studentId2");
studentIds.add("studentId3");
Map permMap = gradebookPermissionService.getStudentsForItem(persistentGradebook.getId(), "grader1", studentIds, GradebookService.CATEGORY_TYPE_NO_CATEGORY, null, grps);
Map permMap1 = gradebookPermissionService.getStudentsForItem(persistentGradebook.getId(), "grader2", studentIds, GradebookService.CATEGORY_TYPE_NO_CATEGORY, null, grps);
// for(Iterator iter = permMap.keySet().iterator(); iter.hasNext();)
// {
// String key = (String)iter.next();
// String value = (String)permMap.get(key);
// System.out.println(key + "---" + value);
// }
// System.out.println("++++++++++");
// for(Iterator iter = permMap1.keySet().iterator(); iter.hasNext();)
// {
// String key = (String)iter.next();
// String value = (String)permMap1.get(key);
// System.out.println(key + "---" + value);
// }
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
permMap = gradebookPermissionService.getStudentsForItem(persistentGradebook.getId(), "grader1", studentIds, GradebookService.CATEGORY_TYPE_ONLY_CATEGORY, cate1Long, grps);
permMap1 = gradebookPermissionService.getStudentsForItem(persistentGradebook.getId(), "grader2", studentIds, GradebookService.CATEGORY_TYPE_ONLY_CATEGORY, cate1Long, grps);
// System.out.println("------with category-------");
// for(Iterator iter = permMap.keySet().iterator(); iter.hasNext();)
// {
// String key = (String)iter.next();
// String value = (String)permMap.get(key);
// System.out.println(key + "---" + value);
// }
// System.out.println("++++++++++");
// for(Iterator iter = permMap1.keySet().iterator(); iter.hasNext();)
// {
// String key = (String)iter.next();
// String value = (String)permMap1.get(key);
// System.out.println(key + "---" + value);
// }
Map grader5Map = gradebookPermissionService.getStudentsForItem(persistentGradebook.getId(), "grader5", studentIds, GradebookService.CATEGORY_TYPE_ONLY_CATEGORY, null, grps);
Map grader5Map1 = gradebookPermissionService.getStudentsForItem(persistentGradebook.getId(), "grader5", studentIds, GradebookService.CATEGORY_TYPE_ONLY_CATEGORY, cate1Long, grps);
// for(Iterator iter = grader5Map.keySet().iterator(); iter.hasNext();)
// {
// String key = (String)iter.next();
// String value = (String)grader5Map.get(key);
// System.out.println(key + "---" + value);
// }
// for(Iterator iter = grader5Map1.keySet().iterator(); iter.hasNext();)
// {
// String key = (String)iter.next();
// String value = (String)grader5Map1.get(key);
// System.out.println(key + "---" + value);
// }
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void testGtetAvailableItemsForStudent() throws Exception
{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
Course courseSite = integrationSupport.createCourse("test site", "test site", false, true, true);
User student1 = userManager.createUser("studentId1", "studentId1", "studentId1-last, studentId1-first", "studentId1");
User student2 = userManager.createUser("studentId2", "studentId2", "studentId2-last, studentId2-first", "studentId2");
User student3 = userManager.createUser("studentId3", "studentId3", "studentId3-last, studentId3-first", "studentId3");
integrationSupport.addSiteMembership(student1.getUserUid(), courseSite.getSiteContext(), Role.STUDENT);
integrationSupport.addSiteMembership(student2.getUserUid(), courseSite.getSiteContext(), Role.STUDENT);
integrationSupport.addSiteMembership(student3.getUserUid(), courseSite.getSiteContext(), Role.STUDENT);
List sectionCategories = sectionAwareness.getSectionCategories(courseSite.getSiteContext());
String catId = (String)sectionCategories.get(1);
CourseSection grp1 = integrationSupport.createSection(courseSite.getUuid(), "grp1", catId, new Integer(40), "Room 2", null, null, true, false, true, false, false, false, false);
CourseSection grp2 = integrationSupport.createSection(courseSite.getUuid(),"grp2", catId, new Integer(40), "Room 2", null, null, true, false, true, false, false, false, false);
integrationSupport.addSectionMembership(student1.getUserUid(), grp1.getUuid(), Role.STUDENT);
integrationSupport.addSectionMembership("studentId2", grp1.getUuid(), Role.STUDENT);
integrationSupport.addSectionMembership("studentId1", grp2.getUuid(), Role.STUDENT);
integrationSupport.addSectionMembership("studentId2", grp2.getUuid(), Role.STUDENT);
integrationSupport.addSectionMembership("studentId3", grp2.getUuid(), Role.STUDENT);
Long permId1 = gradebookManager.addPermission(persistentGradebook.getId(), "grader1", GradebookService.gradePermission, cate1Long,grp1.getUuid());
permId1 = gradebookManager.addPermission(persistentGradebook.getId(), "grader2", GradebookService.viewPermission, cate1Long, grp1.getUuid());
gradebookManager.addPermission(persistentGradebook.getId(), "grader2", GradebookService.gradePermission, null, null);
Long permId2 = gradebookManager.addPermission(persistentGradebook.getId(), "grader3", GradebookService.viewPermission, cate1Long, null);
Long permId3 = gradebookManager.addPermission(persistentGradebook.getId(), "grader1", GradebookService.viewPermission, cate1Long,null);
Long permId5 = gradebookManager.addPermission(persistentGradebook.getId(), "grader1", GradebookService.viewPermission, null,grp2.getUuid());
gradebookManager.addPermission(persistentGradebook.getId(), "grader5", GradebookService.viewPermission, null, grp1.getUuid());
gradebookManager.addPermission(persistentGradebook.getId(), "grader5", GradebookService.gradePermission, cate1Long, grp2.getUuid());
List grps = new ArrayList();
grps.add(grp1);
grps.add(grp2);
List studentIds = new ArrayList();
studentIds.add("studentId1");
studentIds.add("studentId2");
studentIds.add("studentId3");
Map assignMap = gradebookPermissionService.getAvailableItemsForStudent(persistentGradebook.getId(), "grader1", "studentId1", grps);
// System.out.println("grader1" + "---" + "student1");
// for(Iterator iter = assignMap.keySet().iterator(); iter.hasNext();)
// {
// Long key = (Long)iter.next();
// String value = (String)assignMap.get(key);
// System.out.println(key + "---" + value);
// }
// assignMap = gradebookPermissionService.getAvailableItemsForStudent(persistentGradebook.getId(), "grader1", "studentId2", grps);
// System.out.println("grader1" + "---" + "student2");
// for(Iterator iter = assignMap.keySet().iterator(); iter.hasNext();)
// {
// Long key = (Long)iter.next();
// String value = (String)assignMap.get(key);
// System.out.println(key + "---" + value);
// }
// assignMap = gradebookPermissionService.getAvailableItemsForStudent(persistentGradebook.getId(), "grader1", "studentId3", grps);
// System.out.println("grader1" + "---" + "student3");
// for(Iterator iter = assignMap.keySet().iterator(); iter.hasNext();)
// {
// Long key = (Long)iter.next();
// String value = (String)assignMap.get(key);
// System.out.println(key + "---" + value);
// }
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
// assignMap = gradebookPermissionService.getAvailableItemsForStudent(persistentGradebook.getId(), "grader1", "studentId1", grps);
// System.out.println("grader1" + "---" + "student1");
// for(Iterator iter = assignMap.keySet().iterator(); iter.hasNext();)
// {
// Long key = (Long)iter.next();
// String value = (String)assignMap.get(key);
// System.out.println(key + "---" + value);
// }
// assignMap = gradebookPermissionService.getAvailableItemsForStudent(persistentGradebook.getId(), "grader1", "studentId2", grps);
// System.out.println("grader1" + "---" + "student2");
// for(Iterator iter = assignMap.keySet().iterator(); iter.hasNext();)
// {
// Long key = (Long)iter.next();
// String value = (String)assignMap.get(key);
// System.out.println(key + "---" + value);
// }
// assignMap = gradebookPermissionService.getAvailableItemsForStudent(persistentGradebook.getId(), "grader1", "studentId3", grps);
// System.out.println("grader1" + "---" + "student3");
// for(Iterator iter = assignMap.keySet().iterator(); iter.hasNext();)
// {
// Long key = (Long)iter.next();
// String value = (String)assignMap.get(key);
// System.out.println(key + "---" + value);
// }
assignMap = gradebookPermissionService.getAvailableItemsForStudent(persistentGradebook.getId(), "grader2", "studentId1", grps);
// System.out.println("grader2" + "---" + "student1");
// for(Iterator iter = assignMap.keySet().iterator(); iter.hasNext();)
// {
// Long key = (Long)iter.next();
// String value = (String)assignMap.get(key);
// System.out.println(key + "---" + value);
// }
assignMap = gradebookPermissionService.getAvailableItemsForStudent(persistentGradebook.getId(), "grader2", "studentId2", grps);
// System.out.println("grader2" + "---" + "student2");
// for(Iterator iter = assignMap.keySet().iterator(); iter.hasNext();)
// {
// Long key = (Long)iter.next();
// String value = (String)assignMap.get(key);
// System.out.println(key + "---" + value);
// }
assignMap = gradebookPermissionService.getAvailableItemsForStudent(persistentGradebook.getId(), "grader2", "studentId3", grps);
// System.out.println("grader2" + "---" + "student3");
// for(Iterator iter = assignMap.keySet().iterator(); iter.hasNext();)
// {
// Long key = (Long)iter.next();
// String value = (String)assignMap.get(key);
// System.out.println(key + "---" + value);
// }
Map studentMap = gradebookPermissionService.getAvailableItemsForStudents(persistentGradebook.getId(), "grader2", studentIds, grps);
// for(Iterator iter = studentMap.keySet().iterator(); iter.hasNext();)
// {
// String studentKey = (String)(iter.next());
// Map assignmentMap = (Map) studentMap.get(studentKey);
// System.out.println("--------" + studentKey);
// for(Iterator assignIter = assignmentMap.keySet().iterator(); assignIter.hasNext();)
// {
// Long key = (Long)assignIter.next();
// System.out.println(key + "--" + assignmentMap.get(key));
// }
// }
}
public void testGetCourseGradePermission() throws Exception
{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
Course courseSite = integrationSupport.createCourse("test site", "test site", false, true, true);
User student1 = userManager.createUser("studentId1", "studentId1", "studentId1-last, studentId1-first", "studentId1");
User student2 = userManager.createUser("studentId2", "studentId2", "studentId2-last, studentId2-first", "studentId2");
User student3 = userManager.createUser("studentId3", "studentId3", "studentId3-last, studentId3-first", "studentId3");
integrationSupport.addSiteMembership(student1.getUserUid(), courseSite.getSiteContext(), Role.STUDENT);
integrationSupport.addSiteMembership(student2.getUserUid(), courseSite.getSiteContext(), Role.STUDENT);
integrationSupport.addSiteMembership(student3.getUserUid(), courseSite.getSiteContext(), Role.STUDENT);
List sectionCategories = sectionAwareness.getSectionCategories(courseSite.getSiteContext());
String catId = (String)sectionCategories.get(1);
CourseSection grp1 = integrationSupport.createSection(courseSite.getUuid(), "grp1", catId, new Integer(40), "Room 2", null, null, true, false, true, false, false, false, false);
CourseSection grp2 = integrationSupport.createSection(courseSite.getUuid(),"grp2", catId, new Integer(40), "Room 2", null, null, true, false, true, false, false, false, false);
integrationSupport.addSectionMembership(student1.getUserUid(), grp1.getUuid(), Role.STUDENT);
integrationSupport.addSectionMembership("studentId2", grp1.getUuid(), Role.STUDENT);
integrationSupport.addSectionMembership("studentId1", grp2.getUuid(), Role.STUDENT);
integrationSupport.addSectionMembership("studentId2", grp2.getUuid(), Role.STUDENT);
integrationSupport.addSectionMembership("studentId3", grp2.getUuid(), Role.STUDENT);
Long permId1 = gradebookManager.addPermission(persistentGradebook.getId(), "grader1", GradebookService.gradePermission, cate1Long,grp1.getUuid());
permId1 = gradebookManager.addPermission(persistentGradebook.getId(), "grader2", GradebookService.viewPermission, cate1Long, grp1.getUuid());
gradebookManager.addPermission(persistentGradebook.getId(), "grader2", GradebookService.gradePermission, null, null);
Long permId2 = gradebookManager.addPermission(persistentGradebook.getId(), "grader3", GradebookService.viewPermission, cate1Long, null);
Long permId3 = gradebookManager.addPermission(persistentGradebook.getId(), "grader1", GradebookService.viewPermission, cate1Long,null);
Long permId5 = gradebookManager.addPermission(persistentGradebook.getId(), "grader1", GradebookService.viewPermission, null,grp2.getUuid());
gradebookManager.addPermission(persistentGradebook.getId(), "grader5", GradebookService.viewPermission, null, grp1.getUuid());
gradebookManager.addPermission(persistentGradebook.getId(), "grader5", GradebookService.gradePermission, cate1Long, grp2.getUuid());
List grps = new ArrayList();
grps.add(grp1);
grps.add(grp2);
List studentIds = new ArrayList();
studentIds.add("studentId1");
studentIds.add("studentId2");
studentIds.add("studentId3");
studentIds.add("studentId4");
Map courseGradePermMap = gradebookPermissionService.getCourseGradePermission(persistentGradebook.getId(), "grader1", studentIds, grps);
// for(Iterator iter = courseGradePermMap.keySet().iterator(); iter.hasNext();)
// {
// String studentKey = (String)(iter.next());
// System.out.println("--------" + studentKey + "--" + courseGradePermMap.get(studentKey));
// }
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
courseGradePermMap = gradebookPermissionService.getCourseGradePermission(persistentGradebook.getId(), "grader1", studentIds, grps);
// for(Iterator iter = courseGradePermMap.keySet().iterator(); iter.hasNext();)
// {
// String studentKey = (String)(iter.next());
// System.out.println("--------" + studentKey + "--" + courseGradePermMap.get(studentKey));
// }
courseGradePermMap = gradebookPermissionService.getCourseGradePermission(persistentGradebook.getId(), "grader2", studentIds, grps);
// for(Iterator iter = courseGradePermMap.keySet().iterator(); iter.hasNext();)
// {
// String studentKey = (String)(iter.next());
// System.out.println("--------" + studentKey + "--" + courseGradePermMap.get(studentKey));
// }
}
public void testCreateAssignment() throws Exception
{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
String A1_NAME = "test testCreateAssignment1";
String A2_NAME = "test testCreateAssignment2";
gradebookManager.createAssignment(persistentGradebook.getId(), A1_NAME, 10D,
null, true, true, false);
gradebookManager.createAssignment(persistentGradebook.getId(), A2_NAME, 10D,
null, true, true, false);
// now try to create another assignment with the same name
try {
gradebookManager.createAssignment(persistentGradebook.getId(), A1_NAME, 10D,
null, true, true, false);
fail("Did not catch attempt to create assignments with the same name");
} catch (ConflictingAssignmentNameException cane) {}
// try to create an assignment with the same name but with trailing spaces
try {
gradebookManager.createAssignment(persistentGradebook.getId(), " " + A1_NAME + " ", 10D,
null, true, true, false);
fail("Did not catch attempt to create assignments with the same name with trailing spaces");
} catch (ConflictingAssignmentNameException cane) {}
}
public void testCreateAssignmentForCategory() throws Exception
{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
String A1_NAME = "test testCreateAssignment1";
String A2_NAME = "test testCreateAssignment2";
gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cate1Long,
A1_NAME, 10D, null, true, true,false);
gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cate1Long,
A2_NAME, 10D, null, true, true,false);
// now try to create another assignment with the same name
try {
gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cate1Long,
A1_NAME, 10D, null, true, true,false);
fail("Did not catch attempt to create assignments with the same name");
} catch (ConflictingAssignmentNameException cane) {}
// try to create an assignment with the same name but with trailing spaces
try {
gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cate1Long,
" " + A1_NAME + " ", 10D, null, true, true,false);
fail("Did not catch attempt to create assignments with the same name with trailing spaces");
} catch (ConflictingAssignmentNameException cane) {}
}
public void testCreateAssignments() throws Exception
{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
int originalSize = gradebookManager.getAssignments(persistentGradebook.getId()).size();
try
{
Assignment assignment1 = new Assignment();
assignment1.setGradebook(persistentGradebook);
assignment1.setName("test testCreateAssignments1");
assignment1.setPointsPossible(new Double(10.0));
assignment1.setDueDate(new Date());
assignment1.setUngraded(false);
Assignment assignment2 = new Assignment();
assignment2.setGradebook(persistentGradebook);
assignment2.setName("test testCreateAssignments2");
assignment2.setPointsPossible(new Double(10.0));
assignment2.setDueDate(new Date());
assignment2.setUngraded(false);
Assignment assignment3 = new Assignment();
assignment3.setGradebook(persistentGradebook);
assignment3.setName("test testCreateAssignments1");
assignment3.setPointsPossible(new Double(10.0));
assignment3.setDueDate(new Date());
assignment3.setUngraded(false);
List assignments = new ArrayList();
assignments.add(assignment1);
assignments.add(assignment2);
assignments.add(assignment3);
Assert.assertTrue(gradebookManager.checkValidName(persistentGradebook.getId(), assignment1));
Assert.assertTrue(gradebookManager.checkValidName(persistentGradebook.getId(), assignment2));
Assert.assertTrue(gradebookManager.checkValidName(persistentGradebook.getId(), assignment3));
gradebookManager.createAssignments(persistentGradebook.getId(), assignments);
}
catch(Exception e)
{
Assert.assertTrue(originalSize == gradebookManager.getAssignments(persistentGradebook.getId()).size());
}
finally
{
Assert.assertTrue(originalSize == gradebookManager.getAssignments(persistentGradebook.getId()).size());
}
}
public void testGetFixedGrade() throws Exception
{
try
{
List uid = new ArrayList();
uid.add("studentId1");
uid.add("studentId2");
uid.add("studentId3");
uid.add("studentId4");
uid.add("studentId5");
Map studentIdMap = new HashMap();
studentIdMap.put("studentId1", new Double(1.0));
studentIdMap.put("studentId2", new Double(2.0));
studentIdMap.put("studentId3", new Double(3.0));
studentIdMap.put("studentId4", new Double(4.0));
studentIdMap.put("studentId5", new Double(5.0));
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
Course courseSite = integrationSupport.createCourse(persistentGradebook.getUid(), "test site", false, true, true);
User student1 = userManager.createUser("studentId1", "studentId1", "studentId1-last, studentId1-first", "studentId1");
User student2 = userManager.createUser("studentId2", "studentId2", "studentId2-last, studentId2-first", "studentId2");
User student3 = userManager.createUser("studentId3", "studentId3", "studentId3-last, studentId3-first", "studentId3");
User student4 = userManager.createUser("studentId4", "studentId4", "studentId4-last, studentId4-first", "studentId4");
User student5 = userManager.createUser("studentId5", "studentId5", "studentId5-last, studentId5-first", "studentId5");
integrationSupport.addSiteMembership(student1.getUserUid(), courseSite.getSiteContext(), Role.STUDENT);
integrationSupport.addSiteMembership(student2.getUserUid(), courseSite.getSiteContext(), Role.STUDENT);
integrationSupport.addSiteMembership(student3.getUserUid(), courseSite.getSiteContext(), Role.STUDENT);
integrationSupport.addSiteMembership(student4.getUserUid(), courseSite.getSiteContext(), Role.STUDENT);
integrationSupport.addSiteMembership(student5.getUserUid(), courseSite.getSiteContext(), Role.STUDENT);
userManager.createUser("instructor", null, null, null);
integrationSupport.addSiteMembership("instructor", persistentGradebook.getUid(), Role.INSTRUCTOR);
setAuthnId("instructor");
gradebookManager.updateGradebook(persistentGradebook);
Assignment assign = gradebookManager.getAssignment(assgn1Long);
persistentGradebook.setGrade_type(GradebookService.GRADE_TYPE_LETTER);
gradebookManager.updateGradebook(persistentGradebook);
assign.setPointsPossible(new Double(5));
gradebookManager.updateAssignment(assign);
List gradeRecords = generateGradeRecords(assign, 5);
//get course grade scale with +/- and change them and set it as the seleted mapping for this gradebook
Set gradeScaleSet = persistentGradebook.getGradeMappings();
Iterator iter = gradeScaleSet.iterator();
GradeMapping gradeMap = null;
GradingScale scale;
if(iter != null)
{
for(; iter.hasNext();)
{
GradeMapping mapping = (GradeMapping)iter.next();
if(mapping.getGradingScale().getUid().equalsIgnoreCase("LetterGradePlusMinusMapping"))
{
gradeMap = mapping;
gradeMap.setGradingScale(mapping.getGradingScale());
gradeScaleSet.remove(mapping);
Map percentMap = gradeMap.getGradeMap();
percentMap.put("A", new Double("97.0"));
gradeMap.setGradeMap(percentMap);
gradeScaleSet.add(gradeMap);
persistentGradebook.setGradeMappings(gradeScaleSet);
gradebookManager.updateGradebook(persistentGradebook);
break;
}
}
}
Set afterChange = persistentGradebook.getGradeMappings();
for(Iterator iterator = afterChange.iterator(); iterator.hasNext();)
{
GradeMapping mapping = (GradeMapping)iterator.next();
//System.out.println("=======" + mapping.getGradingScale().getUid());
Map mm = mapping.getGradeMap();
for(Iterator ii = mm.keySet().iterator(); ii.hasNext();)
{
String key = (String)ii.next();
Double value = (Double)mm.get(key);
//System.out.println("-----scale::--" + key + ":::" + value);
}
}
//System.out.println("++++++current scale:" + persistentGradebook.getSelectedGradeMapping().getGradingScale().getUid());
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
agr.setLetterEarned("A");
}
gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_LETTER);
Map courseRecords = gradebookService.getImportCourseGrade(persistentGradebook.getUid());
for(Iterator iterator = courseRecords.keySet().iterator(); iterator.hasNext();)
{
String key = (String)iterator.next();
String value= (String)courseRecords.get(key);
Assert.assertTrue(value.endsWith("A-"));
//System.out.println("---------------" + key + ":::" + value);
}
Map courseRecordsFixed = gradebookService.getFixedGrade(persistentGradebook.getUid());
for(Iterator iterator = courseRecordsFixed.keySet().iterator(); iterator.hasNext();)
{
String key = (String)iterator.next();
String value= (String)courseRecordsFixed.get(key);
Assert.assertTrue(value.endsWith("A"));
//System.out.println("---------------" + key + ":::" + value);
}
//test for weighted category type
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
Assignment assign2 = gradebookManager.getAssignment(assgn3Long);
List gradeRecords1 = generateGradeRecords(assign2, 5);
for(int i=0; i<gradeRecords1.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords1.get(i);
agr.setLetterEarned("A");
}
gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords1, GradebookService.GRADE_TYPE_LETTER);
courseRecords = gradebookService.getImportCourseGrade(persistentGradebook.getUid());
for(Iterator iterator = courseRecords.keySet().iterator(); iterator.hasNext();)
{
String key = (String)iterator.next();
String value= (String)courseRecords.get(key);
Assert.assertTrue(value.endsWith("A-"));
}
courseRecordsFixed = gradebookService.getFixedGrade(persistentGradebook.getUid());
for(Iterator iterator = courseRecordsFixed.keySet().iterator(); iterator.hasNext();)
{
String key = (String)iterator.next();
String value= (String)courseRecordsFixed.get(key);
Assert.assertTrue(value.endsWith("A"));
}
//test for weighted category and change the scale for B too:
gradeScaleSet = persistentGradebook.getGradeMappings();
iter = gradeScaleSet.iterator();
gradeMap = null;
if(iter != null)
{
for(; iter.hasNext();)
{
GradeMapping mapping = (GradeMapping)iter.next();
if(mapping.getGradingScale().getUid().equalsIgnoreCase("LetterGradePlusMinusMapping"))
{
gradeMap = mapping;
gradeMap.setGradingScale(mapping.getGradingScale());
gradeScaleSet.remove(mapping);
Map percentMap = gradeMap.getGradeMap();
percentMap.put("B", new Double("86.5"));
gradeMap.setGradeMap(percentMap);
gradeScaleSet.add(gradeMap);
persistentGradebook.setGradeMappings(gradeScaleSet);
gradebookManager.updateGradebook(persistentGradebook);
break;
}
}
}
for(int i=0; i<gradeRecords1.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords1.get(i);
agr.setLetterEarned("B");
}
gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords1, GradebookService.GRADE_TYPE_LETTER);
courseRecords = gradebookService.getImportCourseGrade(persistentGradebook.getUid());
for(Iterator iterator = courseRecords.keySet().iterator(); iterator.hasNext();)
{
String key = (String)iterator.next();
String value= (String)courseRecords.get(key);
Assert.assertTrue(value.endsWith("B+"));
}
courseRecordsFixed = gradebookService.getFixedGrade(persistentGradebook.getUid());
for(Iterator iterator = courseRecordsFixed.keySet().iterator(); iterator.hasNext();)
{
String key = (String)iterator.next();
String value= (String)courseRecordsFixed.get(key);
Assert.assertTrue(value.endsWith("A-"));
}
Map pointMap = gradebookService.getOldPoint(persistentGradebook.getUid());
for(Iterator iterator = pointMap.keySet().iterator(); iterator.hasNext();)
{
String key = (String)iterator.next();
String value= (String)pointMap.get(key);
//System.out.println("+++++++++++" + key + ":::" + value);
Assert.assertTrue(new BigDecimal(new Double(value).toString(), GradebookService.MATH_CONTEXT).equals(new BigDecimal("87.8", GradebookService.MATH_CONTEXT)));
}
pointMap = gradebookService.getFixedPoint(persistentGradebook.getUid());
for(Iterator iterator = pointMap.keySet().iterator(); iterator.hasNext();)
{
String key = (String)iterator.next();
String value= (String)pointMap.get(key);
//System.out.println("+++++++++++" + key + ":::" + value);
Assert.assertTrue(new BigDecimal(new Double(value).toString(), GradebookService.MATH_CONTEXT).equals(new BigDecimal("90.7", GradebookService.MATH_CONTEXT)));
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void testGetAssignmentsCategoriesAndCourseGradeWithStats() throws Exception{
Gradebook persistentGradebook = gradebookManager.getGradebook(this.getClass().getName());
Assignment assign = gradebookManager.getAssignment(assgn1Long);
Assignment assign2 = gradebookManager.getAssignment(assgn3Long);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
integrationSupport.createCourse(persistentGradebook.getUid(), persistentGradebook.getUid(), false, false, false);
gradebookManager.updateGradebook(persistentGradebook);
assign.setPointsPossible(new Double(5));
assign.setExtraCredit(false);
assign2.setExtraCredit(false);
gradebookManager.updateAssignment(assign);
List categories = gradebookManager.getCategories(persistentGradebook.getId());
Category cate = gradebookManager.getCategory(assign.getCategory().getId());
List assignments = gradebookManager.getAssignments(persistentGradebook.getId());
List gradeRecords = generateGradeRecords(assign, 5);
List gradeRecords2 = generateGradeRecords(assign2, 5);
for(int i=0; i<gradeRecords2.size(); i++)
{
gradeRecords.add(gradeRecords2.get(i));
}
List uid = new ArrayList();
uid.add("studentId1");
uid.add("studentId2");
uid.add("studentId3");
uid.add("studentId4");
uid.add("studentId5");
Map studentIdMap = new HashMap();
studentIdMap.put("studentId1", new Double(1.0));
studentIdMap.put("studentId2", new Double(2.0));
studentIdMap.put("studentId3", new Double(3.0));
studentIdMap.put("studentId4", new Double(4.0));
studentIdMap.put("studentId5", new Double(5.0));
addUsersEnrollments(persistentGradebook, uid);
List catsAssignsAndCG = gradebookManager.getAssignmentsCategoriesAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_NAME, true);
// there should be 4 assignments, 2 categories, then 1 CG
// Check the assignments
for(int i=0; i<4; i++)
{
Assignment as = (Assignment) catsAssignsAndCG.get(i);
if(as.getMean() != null)
{
Assert.assertTrue(new BigDecimal(as.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0 + 2 + 3 + 4 + 5) / as.getPointsPossible().doubleValue() / 5.0) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(as.getAverageTotal()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2 + 3 + 4 + 5) / 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
// check the categories
Category cat0 = (Category)catsAssignsAndCG.get(4);
Assert.assertTrue(new BigDecimal(cat0.getAverageTotalPoints()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat0.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2 + 3 + 4 + 5) / 5.0 ).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat0.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0+ 2 + 3+ 4 +5.0) / 5.0 / 5.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Category cat1 = (Category)catsAssignsAndCG.get(5);
Assert.assertTrue(new BigDecimal(cat1.getAverageTotalPoints()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(10.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat1.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2 + 3 + 4 + 5) / 5.0 ).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat1.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0+ 2 + 3+ 4 +5.0) / 5.0 / 10.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
CourseGrade cg = (CourseGrade) catsAssignsAndCG.get(catsAssignsAndCG.size() - 1);
Assert.assertTrue(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0 + 2 + 3 + 4 + 5) * 0.4 / 5.0 / 5.0 + (1.0 + 2 + 3 + 4 + 5) * 0.6 / 10.0 / 5.0 ) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cg.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0 + 2 + 3 + 4 + 5 + 1.0 + 2 + 3 + 4 + 5) / 5.0 )).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
catsAssignsAndCG = gradebookManager.getAssignmentsCategoriesAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_NAME, true);
cg = (CourseGrade) catsAssignsAndCG.get(catsAssignsAndCG.size() - 1);
Assert.assertTrue(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0 + 2 + 3 + 4 + 5 + 1.0 + 2 + 3 + 4 + 5) / 15.0 / 5.0 ) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
catsAssignsAndCG = gradebookManager.getAssignmentsCategoriesAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_NAME, true);
cg = (CourseGrade) catsAssignsAndCG.get(catsAssignsAndCG.size() - 1);
Assert.assertTrue(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0 + 2 + 3 + 4 + 5 + 1.0 + 2 + 3 + 4 + 5) / 15.0 / 5.0 ) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//test for setting studentId1's assignment1 to null
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assgn1Long) && agr.getStudentId().equals("studentId1"))
agr.setPointsEarned(null);
}
gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
catsAssignsAndCG = gradebookManager.getAssignmentsCategoriesAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_NAME, true);
// assignments
for(int i=0; i<4; i++)
{
Assignment as = (Assignment) catsAssignsAndCG.get(i);
if(as.getMean() != null && !as.getId().equals(assgn1Long))
{
Assert.assertTrue(new BigDecimal(as.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0 + 2 + 3 + 4 + 5) / as.getPointsPossible().doubleValue() / 5.0) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(as.getAverageTotal()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2 + 3 + 4 + 5) / 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
else if(as.getMean() != null)
{
Assert.assertTrue(new BigDecimal(as.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((2.0 + 3 + 4 + 5) / as.getPointsPossible().doubleValue() / 4.0) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(as.getAverageTotal()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((2.0 + 3 + 4 + 5) / 4.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
// categories
cat0 = (Category)catsAssignsAndCG.get(4);
Assert.assertEquals(new BigDecimal(cat0.getAverageTotalPoints()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(),
new BigDecimal(5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertEquals(new BigDecimal(cat0.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(),
new BigDecimal((2.0 + 3 + 4 + 5) / 4.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertEquals(new BigDecimal(cat0.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(),
new BigDecimal((2 + 3+ 4 +5.0) / 5.0 / 4.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
cat1 = (Category)catsAssignsAndCG.get(5);
Assert.assertTrue(new BigDecimal(cat1.getAverageTotalPoints()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(10.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat1.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2.0 + 3 + 4 + 5) / 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat1.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0+ 2 + 3+ 4 +5.0) / 5.0 / 10.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
cg = (CourseGrade) catsAssignsAndCG.get(catsAssignsAndCG.size() - 1);
Assert.assertTrue(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0/10.0) + (2.0/5.0*0.4 + 2.0/10.0*0.6) + (3.0/5.0*0.4 + 3.0/10.0*0.6) + (4.0/5.0*0.4 + 4.0/10.0*0.6) + (5.0/5.0*0.4 + 5.0/10.0*0.6)) *100.0/ 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
catsAssignsAndCG = gradebookManager.getAssignmentsCategoriesAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_NAME, true);
cg = (CourseGrade) catsAssignsAndCG.get(catsAssignsAndCG.size() - 1);
Assert.assertTrue(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0/10.0) + (4.0/15.0) + (6.0/15.0) + (8.0/15.0) + (10.0/15.0)) *100.0/ 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cg.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((2 + 3 + 4 + 5 + 1.0 + 2 + 3 + 4 + 5) / 5.0 )).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
catsAssignsAndCG = gradebookManager.getAssignmentsCategoriesAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_NAME, true);
cg = (CourseGrade) catsAssignsAndCG.get(catsAssignsAndCG.size() - 1);
Assert.assertEquals(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(),
new BigDecimal(((1.0/10.0) + (4.0/15.0) + (6.0/15.0) + (8.0/15.0) + (10.0/15.0)) *100.0/ 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertEquals(new BigDecimal(cg.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(),
new BigDecimal(((2 + 3 + 4 + 5 + 1.0 + 2 + 3 + 4 + 5) / 5.0 )).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//test for setting studentId1's assignment3 to null - studentId1 doesn't have any scores now
for(int i=0; i<gradeRecords.size(); i++)
{
AssignmentGradeRecord agr = (AssignmentGradeRecord)gradeRecords.get(i);
if(agr.getAssignment().getId().equals(assgn3Long) && agr.getStudentId().equals("studentId1"))
agr.setPointsEarned(null);
}
gradebookManager.updateAssignmentGradeRecords(assign, gradeRecords, GradebookService.GRADE_TYPE_POINTS);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
catsAssignsAndCG = gradebookManager.getAssignmentsCategoriesAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_NAME, true);
// Assignments
for(int i=0; i<4; i++)
{
Assignment as = (Assignment) catsAssignsAndCG.get(i);
if(as.getMean() != null && !as.getId().equals(assgn1Long) && !as.getId().equals(assgn3Long))
{
Assert.assertTrue(new BigDecimal(as.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((1.0 + 2 + 3 + 4 + 5) / as.getPointsPossible().doubleValue() / 5.0) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(as.getAverageTotal()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2 + 3 + 4 + 5) / 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
else if(as.getMean() != null)
{
Assert.assertTrue(new BigDecimal(as.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((2.0 + 3 + 4 + 5) / as.getPointsPossible().doubleValue() / 4.0) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(as.getAverageTotal()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((2.0 + 3 + 4 + 5) / 4.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}
// Categories
cat0 = (Category)catsAssignsAndCG.get(4);
Assert.assertEquals(new BigDecimal(cat0.getAverageTotalPoints()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(),
new BigDecimal(5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertEquals(new BigDecimal(cat0.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(),
new BigDecimal((2.0 + 3 + 4 + 5) / 4.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertEquals(new BigDecimal(cat0.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(),
new BigDecimal((2 + 3+ 4 +5.0) / 5.0 / 4.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
cat1 = (Category)catsAssignsAndCG.get(5);
Assert.assertEquals(new BigDecimal(cat1.getAverageTotalPoints()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(),
new BigDecimal(10.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertEquals(new BigDecimal(cat1.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(),
new BigDecimal((2.0 + 3 + 4 + 5) / 4.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertEquals(new BigDecimal(cat1.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(),
new BigDecimal((2 + 3+ 4 +5.0) / 4.0 / 10.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
// Course Grade
cg = (CourseGrade) catsAssignsAndCG.get(catsAssignsAndCG.size() - 1);
Assert.assertTrue(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((2.0/5.0*0.4 + 2.0/10.0*0.6) + (3.0/5.0*0.4 + 3.0/10.0*0.6) + (4.0/5.0*0.4 + 4.0/10.0*0.6) + (5.0/5.0*0.4 + 5.0/10.0*0.6)) *100.0/ 4.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cg.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((2 + 3 + 4 + 5 + 2.0 + 3 + 4 + 5) / 4.0 )).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_NO_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
catsAssignsAndCG = gradebookManager.getAssignmentsCategoriesAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_NAME, true);
cg = (CourseGrade) catsAssignsAndCG.get(catsAssignsAndCG.size() - 1);
Assert.assertTrue(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((4.0/15.0) + (6.0/15.0) + (8.0/15.0) + (10.0/15.0)) *100.0/ 4.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cg.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((2 + 3 + 4 + 5 + 2.0 + 3 + 4 + 5) / 4.0 )).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_ONLY_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
catsAssignsAndCG = gradebookManager.getAssignmentsCategoriesAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_NAME, true);
cg = (CourseGrade) catsAssignsAndCG.get(catsAssignsAndCG.size() - 1);
Assert.assertTrue(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((4.0/15.0) + (6.0/15.0) + (8.0/15.0) + (10.0/15.0)) *100.0/ 4.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cg.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(((2 + 3 + 4 + 5 + 2.0 + 3 + 4 + 5) / 4.0 )).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//test for non-released assignment
Category cateWithNonRleased = (Category)catsAssignsAndCG.get(4);
gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cateWithNonRleased.getId(),
cateWithNonRleased.getName() + "_assignment_non_released", new Double(10.0), new Date(), new Boolean(false), new Boolean(false), new Boolean(false));
catsAssignsAndCG = gradebookManager.getAssignmentsCategoriesAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_NAME, true);
cg = (CourseGrade) catsAssignsAndCG.get(catsAssignsAndCG.size() - 1);
Assert.assertEquals(new BigDecimal(cg.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(),
new BigDecimal(((4.0/15.0) + (6.0/15.0) + (8.0/15.0) + (10.0/15.0)) *100.0/ 4.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertEquals(new BigDecimal(cg.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(),
new BigDecimal(((2 + 3 + 4 + 5 + 2.0 + 3 + 4 + 5) / 4.0 )).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//test for setting one assignment to be not included in course grade
assign.setNotCounted(true);
gradebookManager.updateAssignment(assign);
persistentGradebook.setCategory_type(GradebookService.CATEGORY_TYPE_WEIGHTED_CATEGORY);
gradebookManager.updateGradebook(persistentGradebook);
catsAssignsAndCG = gradebookManager.getAssignmentsCategoriesAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_NAME, true);
cat0 = (Category) catsAssignsAndCG.get(5);
Assert.assertTrue(cat0.getAverageTotalPoints() == null);
Assert.assertTrue(cat0.getAverageScore() == null);
Assert.assertTrue(cat0.getMean() == null);
cat1 = (Category) catsAssignsAndCG.get(6);
Assert.assertEquals(new BigDecimal(cat1.getAverageTotalPoints()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(),
new BigDecimal(10.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertEquals(new BigDecimal(cat1.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(),
new BigDecimal((2.0 + 3 + 4 + 5) / 4.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertEquals(new BigDecimal(cat1.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(),
new BigDecimal((2 + 3+ 4 +5.0) / 4.0 / 10.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
//add another assignment to cat0 for test
Long assignAddedId = gradebookManager.createAssignmentForCategory(persistentGradebook.getId(), cat0.getId(),
cat0.getName() + "_assignment_added", new Double(10.0), new Date(), new Boolean(false), new Boolean(true), new Boolean(false));
generateGradeRecords(gradebookManager.getAssignment(assignAddedId), 5);
catsAssignsAndCG = gradebookManager.getAssignmentsCategoriesAndCourseGradeWithStats(persistentGradebook.getId(), Assignment.DEFAULT_SORT, true, Category.SORT_BY_NAME, true);
cat0 = (Category) catsAssignsAndCG.get(6);
Assert.assertTrue(new BigDecimal(cat0.getAverageTotalPoints()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(10.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat0.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2.0 + 3 + 4 + 5) / 5.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat0.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((1.0 + 2 + 3+ 4 +5.0) / 10.0 / 5.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
cat1 = (Category) catsAssignsAndCG.get(7);
Assert.assertTrue(new BigDecimal(cat1.getAverageTotalPoints()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal(10.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat1.getAverageScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((2.0 + 3 + 4 + 5) / 4.0).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
Assert.assertTrue(new BigDecimal(cat1.getMean()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue() ==
new BigDecimal((2 + 3+ 4 +5.0) / 4.0 / 10.0 * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
}
}