vbv/client/src/services/__tests__/assignmentService.spec.ts

89 lines
4.3 KiB
TypeScript

import { describe, it } from "vitest";
import { percentToRoundedGrade, pointsToGrade } from "../assignmentService";
describe("assignmentService", () => {
it("pointsToGrade", () => {
expect(pointsToGrade(24, 24)).toBe(6);
expect(pointsToGrade(23, 24)).toBe(6);
expect(pointsToGrade(22, 24)).toBe(5.5);
expect(pointsToGrade(21, 24)).toBe(5.5);
expect(pointsToGrade(20, 24)).toBe(5);
expect(pointsToGrade(19, 24)).toBe(5);
expect(pointsToGrade(18, 24)).toBe(5);
expect(pointsToGrade(17, 24)).toBe(4.5);
expect(pointsToGrade(16, 24)).toBe(4.5);
expect(pointsToGrade(15, 24)).toBe(4);
expect(pointsToGrade(14, 24)).toBe(4);
expect(pointsToGrade(13, 24)).toBe(3.5);
expect(pointsToGrade(12, 24)).toBe(3.5);
expect(pointsToGrade(11, 24)).toBe(3.5);
expect(pointsToGrade(10, 24)).toBe(3);
expect(pointsToGrade(9, 24)).toBe(3);
expect(pointsToGrade(8, 24)).toBe(2.5);
expect(pointsToGrade(7, 24)).toBe(2.5);
expect(pointsToGrade(6, 24)).toBe(2.5);
expect(pointsToGrade(5, 24)).toBe(2);
expect(pointsToGrade(4, 24)).toBe(2);
expect(pointsToGrade(3, 24)).toBe(1.5);
expect(pointsToGrade(2, 24)).toBe(1.5);
expect(pointsToGrade(1, 24)).toBe(1);
expect(pointsToGrade(0, 24)).toBe(1);
});
it("percentToRoundedGrade with half grades", () => {
expect(percentToRoundedGrade(24 / 24)).toBe(6);
expect(percentToRoundedGrade(23 / 24)).toBe(6);
expect(percentToRoundedGrade(22 / 24)).toBe(5.5);
expect(percentToRoundedGrade(21 / 24)).toBe(5.5);
expect(percentToRoundedGrade(20 / 24)).toBe(5);
expect(percentToRoundedGrade(19 / 24)).toBe(5);
expect(percentToRoundedGrade(18 / 24)).toBe(5);
expect(percentToRoundedGrade(17 / 24)).toBe(4.5);
expect(percentToRoundedGrade(16 / 24)).toBe(4.5);
expect(percentToRoundedGrade(15 / 24)).toBe(4);
expect(percentToRoundedGrade(14 / 24)).toBe(4);
expect(percentToRoundedGrade(13 / 24)).toBe(3.5);
expect(percentToRoundedGrade(12 / 24)).toBe(3.5);
expect(percentToRoundedGrade(11 / 24)).toBe(3.5);
expect(percentToRoundedGrade(10 / 24)).toBe(3);
expect(percentToRoundedGrade(9 / 24)).toBe(3);
expect(percentToRoundedGrade(8 / 24)).toBe(2.5);
expect(percentToRoundedGrade(7 / 24)).toBe(2.5);
expect(percentToRoundedGrade(6 / 24)).toBe(2.5);
expect(percentToRoundedGrade(5 / 24)).toBe(2);
expect(percentToRoundedGrade(4 / 24)).toBe(2);
expect(percentToRoundedGrade(3 / 24)).toBe(1.5);
expect(percentToRoundedGrade(2 / 24)).toBe(1.5);
expect(percentToRoundedGrade(1 / 24)).toBe(1);
expect(percentToRoundedGrade(0 / 24)).toBe(1);
});
it("percentToRoundedGrade with 2 decimal places", () => {
expect(percentToRoundedGrade(24 / 24, false)).toBeCloseTo(6);
expect(percentToRoundedGrade(23 / 24, false)).toBeCloseTo(5.79);
expect(percentToRoundedGrade(22 / 24, false)).toBeCloseTo(5.58);
expect(percentToRoundedGrade(21 / 24, false)).toBeCloseTo(5.38);
expect(percentToRoundedGrade(20 / 24, false)).toBeCloseTo(5.17);
expect(percentToRoundedGrade(19 / 24, false)).toBeCloseTo(4.96);
expect(percentToRoundedGrade(18 / 24, false)).toBeCloseTo(4.75);
expect(percentToRoundedGrade(17 / 24, false)).toBeCloseTo(4.54);
expect(percentToRoundedGrade(16 / 24, false)).toBeCloseTo(4.33);
expect(percentToRoundedGrade(15 / 24, false)).toBeCloseTo(4.13);
expect(percentToRoundedGrade(14 / 24, false)).toBeCloseTo(3.92);
expect(percentToRoundedGrade(13 / 24, false)).toBeCloseTo(3.71);
expect(percentToRoundedGrade(12 / 24, false)).toBeCloseTo(3.5);
expect(percentToRoundedGrade(11 / 24, false)).toBeCloseTo(3.29);
expect(percentToRoundedGrade(10 / 24, false)).toBeCloseTo(3.08);
expect(percentToRoundedGrade(9 / 24, false)).toBeCloseTo(2.88);
expect(percentToRoundedGrade(8 / 24, false)).toBeCloseTo(2.67);
expect(percentToRoundedGrade(7 / 24, false)).toBeCloseTo(2.46);
expect(percentToRoundedGrade(6 / 24, false)).toBeCloseTo(2.25);
expect(percentToRoundedGrade(5 / 24, false)).toBeCloseTo(2.04);
expect(percentToRoundedGrade(4 / 24, false)).toBeCloseTo(1.83);
expect(percentToRoundedGrade(3 / 24, false)).toBeCloseTo(1.63);
expect(percentToRoundedGrade(2 / 24, false)).toBeCloseTo(1.42);
expect(percentToRoundedGrade(1 / 24, false)).toBeCloseTo(1.21);
expect(percentToRoundedGrade(0 / 24, false)).toBeCloseTo(1);
});
});