SyllabusCalc

How the calculators are tested

The suites, one row each, with the number of assertions every one of them runs.

The About page claims the arithmetic on this site is checked before it ships. This page is that claim in table form: every test suite in the build, what it re-derives, and how many separate assertions it makes. The numbers below are not typed by hand. They are written into this page by the build script from the output of the suites themselves, so a suite that shrinks, breaks, or disappears changes this table on the next release.

Last built from a full run of the suites: 8,451 assertions across 34 of them, 31 mirroring one calculator each and 3 covering the guides and the site’s own published claims.

SuiteWhat it re-derivesAssertions
tests/mirror_attendance-grade-calculator.pyAttendance Grade Calculator and the numbers printed in its guide42
tests/mirror_australian-gpa-calculator.pyAustralian GPA and WAM Calculator and the numbers printed in its guide170
tests/mirror_canadian-gpa-calculator.pyCanadian GPA Calculator (Percent to 4.0) and the numbers printed in its guide487
tests/mirror_cao-points-calculator.pyCAO Points Calculator (Leaving Cert) and the numbers printed in its guide302
tests/mirror_cgpa-to-percentage-calculator.pyCGPA to Percentage Calculator (India) and the numbers printed in its guide1,186
tests/mirror_class-rank-calculator.pyClass Rank Calculator and the numbers printed in its guide58
tests/mirror_college-gpa-calculator.pyCollege GPA Calculator and the numbers printed in its guide57
tests/mirror_cumulative-gpa-calculator.pyCumulative GPA Calculator and the numbers printed in its guide53
tests/mirror_curve-applier.pyCurve Applier and the numbers printed in its guide78
tests/mirror_ects-grade-conversion-calculator.pyECTS Grade Conversion Calculator and the numbers printed in its guide524
tests/mirror_exam-curve-calculator.pyExam Curve Calculator and the numbers printed in its guide70
tests/mirror_extra-credit-calculator.pyExtra Credit Calculator and the numbers printed in its guide77
tests/mirror_final-grade-calculator.pyFinal Grade Calculator and the numbers printed in its guide62
tests/mirror_german-grade-calculator.pyGerman Grade Calculator (Bavarian Formula) and the numbers printed in its guide2,386
tests/mirror_gpa-calculator-433.pyGPA Calculator (4.33 Scale) and the numbers printed in its guide59
tests/mirror_gpa-calculator.pyGPA Calculator and the numbers printed in its guide57
tests/mirror_grade-calculator.pyGrade Calculator and the numbers printed in its guide44
tests/mirror_grade-needed-calculator.pyGrade Needed Calculator and the numbers printed in its guide53
tests/mirror_gradebook-average-calculator.pyGradebook Average Calculator and the numbers printed in its guide61
tests/mirror_high-school-gpa-calculator.pyHigh School GPA Calculator and the numbers printed in its guide59
tests/mirror_late-penalty-calculator.pyLate Penalty Calculator and the numbers printed in its guide594
tests/mirror_letter-grade-to-gpa.pyLetter Grade to GPA and the numbers printed in its guide59
tests/mirror_pass-fail-impact-calculator.pyPass/Fail Impact Calculator and the numbers printed in its guide99
tests/mirror_percentage-to-gpa-calculator.pyPercentage to GPA and the numbers printed in its guide72
tests/mirror_percentage-to-letter-grade.pyPercentage to Letter Grade and the numbers printed in its guide58
tests/mirror_r-score-calculator.pyR Score Calculator (Quebec Cote R) and the numbers printed in its guide321
tests/mirror_raise-my-gpa-planner.pyRaise My GPA Planner and the numbers printed in its guide57
tests/mirror_semester-grade-calculator.pySemester Grade Calculator and the numbers printed in its guide52
tests/mirror_test-average-calculator.pyTest Average Calculator and the numbers printed in its guide56
tests/mirror_uk-degree-classification-calculator.pyUK Degree Classification Calculator and the numbers printed in its guide127
tests/mirror_weighted-grade-calculator.pyWeighted Grade Calculator and the numbers printed in its guide56
tests/mirror_guides.pyThe worked examples in five standalone guides: finals leverage, weighted against unweighted GPA, admissions recalculation, credit hours, and the 89.5 rounding question.64
tests/mirror_phase2_guides.pyEvery cell of the two target-grade guides - what do I need to get an A, and what do I need to pass - recomputed from the final-grade formula.88
tests/mirror_prose.pyFigures stated in sentences rather than printed by a calculator, plus the site's claims about itself: the published counts, the citations each page promises, and the fetch log behind them.863
34 suitesTotal8,451

What one assertion is

A mirror suite is a second implementation of a calculator, written in Python, that never imports the site’s JavaScript. It computes the same answer from the same inputs and compares. One assertion is one such comparison: this input, on this scale, must produce this output. A tool with 60 assertions has been asked 60 questions with known answers — ordinary cases, boundary scores, impossible targets, already-secured targets, malformed input, and the exact rounding the browser performs, which is not the rounding Python performs by default.

Where a calculator carries a published table — a letter ladder, a percentage band, a classification boundary — the mirror reads that table out of the JavaScript source and asserts it against its own copy, so a silent edit to a grading scale fails the build rather than shipping.

The suites at the foot of the table are not tied to one calculator. They re-derive the worked examples printed in the guides that have no calculator of their own, and they check the site’s own statements: that the counts on the homepage match the number of files, that the pages promising a source actually link one, and that the fetch log behind every outbound citation records a 200, from its latest check or, where the linked site’s robots.txt or bot defenses rule out a re-check, from the dated check that last confirmed it.

What this table does not prove

Two implementations that agree still rest on one reading of the source. A mirror catches arithmetic error, rounding drift, and a table edited in one place and not the other. It cannot tell you that a policy has been read correctly, that an institution has not changed its rules since the citation was checked, or that a calculator is answering the question you actually have. Those are what the sources on each page and the plain statements of limits are for, and they are why every tool says the same thing at the bottom: your syllabus wins.

The suites also run before a release, not in your browser. If you find a number here that disagrees with your own arithmetic, that is worth an email: a confirmed error becomes a failing assertion in the relevant suite first, and only then gets fixed, so the same mistake cannot return in a later change.