Skip to content

i1236 point scoring point display fix#1237

Open
kkarakas wants to merge 134 commits intopc2ccs:developfrom
kkarakas:i1236-point-scoring-point-display-fix
Open

i1236 point scoring point display fix#1237
kkarakas wants to merge 134 commits intopc2ccs:developfrom
kkarakas:i1236-point-scoring-point-display-fix

Conversation

@kkarakas
Copy link
Collaborator

@kkarakas kkarakas commented Mar 21, 2026

Before submitting your Pull Request, please make sure you have read the Guidelines for Submitting Pull Requests. Then please provide the following information:

Description of what the PR does

fixes_ #1236

Issue which the PR addresses

Put the Issue Number in this section.

  • If the PR actually COMPLETES an issue fix, precede the Issue number by the word "Closes" or "Fixes".
  • If the PR is a partial fix but the Issue should remain open, put the word "partial" in front of the issue number.

Environment in which the PR was developed (OS,IDE, Java version, etc.)

Precise steps for testing the PR (i.e., how to demonstrate that it works correctly)

Do a point scoring contest

johnbrvc and others added 30 commits July 8, 2025 13:24
Add basic support data structures.
Add test unit for new classes.
Changes needed to be made since ContestImportUtilities was added and the common routines moved out of ContestSnakeYAMLLoader.
Add more JUnit tests to read an entire hierarchy.
Add more test data containing a full example of a hierarchy of test data groups.
Add group to TestCaseInfo.
Commented out the printing of the flat list of test cases in the TestDataGroupTest JUnit.
Test Data for CLICS problems are no longer read in directly in ContestSnakeYamlLoader, rather, a TestDataGroup object is created representing the hiearchy of  test data, along with any present testdata.yaml files.
ProblemDataFiles now has a list of TestDataGroup's (one per test case).
Modified GUI of the problem edit, Test Data Files tab to show the Data Group each data test case is part of.
Create new package: edu.csus.ecs.pc2.graders.
Created LegacyGrader class.
Created JUnits to test grader class (need more tests).
JUnit found a bug with the way submissions are counted.  Basically, rejects count when using "avg" as the scoring mode, and so their score values.
The JUnit tests for the ContestSnakeYamlLoader made some assumptions about the locations of the secret data.  This is now handled automatically by the TestDataGroup class.  Fix the routine in ContestSnakeYamlLoader to not put the "secret" folder on the directory path for data.
Fix spelling error in JUnit print message.
Make sure the static log is created before running junits since the TestDataGroup stuff will log things.
Some JUnit tests read a CDP that contains problem datafiles.  These JUnits now make use of the newer TestDataGroups() class to read test data as a result of using ContestSnakeYamlLoader.  This class requires a valid Log object.  ContestSnakeYamlLoader uses StaticLog(), as a result, the static log must have been previously intialized.  AbstractTestCase.ensureStaticLog() does this.
Forgot to add an ensureStaticLog().
Also added missing call to base class setupUp() in LoadICPCDataTest.
…changes

i_1006 Adjust JUnits for new TestDataGroups
Changes to DSA to support both pass-fail and point scoring contests.
Update CLICS API to deal with scoring contests and only put out scoring related properties if it is a point scoring contest.
Allow "score" scoreboard type in addition to the standard "pass-fail".
Save the scoreboard type in the contest's ContestInformation.
Update CLICS contest API endpoint to use the scoreboard type defined in
ContestInformation instead of hard-coding pass-fail.
CI: ContestInformation was missing compares for many members in the
isSameAs() method, so if any of these were different, isSameAs() would
not detect that.
CI: Add string constants for contest scoreboard type.

# Conflicts(resolved):
#	samps/contests/pointscoring/config/contest.yaml
If using the LegacyGrader internally (and not as an external process), the "String gradeTestCases(ArrayList<String> testCaseResults)" may be used directly.  The bypasses the extra steps of saving the list of judgment/score tuples to a file and having the grader open and read that file.  In addition, the gradTestCases method returns the net judgment string, eg. "AC 50" on success, and null on failure.
- updating method executeAndValidateDataSet(testCaseNum) so that if the
contest is "point-scoring" then the test case score, judgement (acronym)
and TestDataGroup are stored in the RunTestCase (result) before storing
the RunTestCase in the Run.

- determining a "score" for each test case by looking for a "score.txt"
file left by the validator and using the result from that file if
present, otherwise using appropriate TestDataGroup rangeMax() or
rangeMin() value as the test case score.

- updating method execute(boolean) so that after all test cases have
been executed, if the contest is "point scoring" it invokes the
"LegacyGrader" to recursively determine the overall "score" and
"judgement" for the Run and inserts these into a new JudgementRecord in
the Run.
# Resolved Conflicts:
#	samps/contests/pointscoring/config/contest.yaml
Cherry-pick some of the commits from the combined scoreboard branch, and hand edit others.  We need combined scoreboard code to accept remote judgments as real judgments into the pc2 system for testing.
This code will probably not be in the production version, but, it should be fairly benign since it won't be used in a real contest.
Update run table to show Score in the Time column.
Add score to the JudgementRecord created by a received judgment.
Fixed event feed mistakes.
Fixed minor bugs in DSa
also: set scores based on getAcceptScore() and getRejectScore() instead of (incorrectly) basing them on getRangeMax/Min().
clevengr and others added 30 commits January 17, 2026 14:52
added additional fields isSolved and isFinal to UI-side Run class
so that these missing fields are available for future use.
additional updates including:
- unsubscribing runspage from filter changes when appropriate;
- resetting runspage filterform rather than constructing a new form
during reset();
- making console output conditional on DEBUG_MODE.
- reorganize imports by category;
- export MatToolTipModule so it is available to shared components for
future development;
- reorganize module structure to follow Angular recommended practices,
including:
    - remove "providers" which should be provided only by CoreModule
(and already are provided there).
    - remove BrowserModule import, which should only be imported by
AppModule
JSON serializers may return a single object if the SummaryRow contains
only one ProblemSummaryInfo; this breaks downstream WTI-UI (Angular)
components which expect an Iterable (even if there's only one item to
iterate over).  This avoids a problem which occurs if a contest has only
one problem.
includes:
- only display score when run judgement is "Accepted".
- suuport for animation (fade-in) of score value on alert.
- uses ScoreboardModeService.
- suppression of "Run Type" on the Alert ("Run Type" is related to
whether the submission is "Test Run" or "Judged Run", a distinction
which PC2 doesn't yet support).
I1006 Merge in i1006_update_prs branch with WTI fixes for point scoring

Note: Junits do fail since they have not been fixed yet to deal with the changes for Point Scoring.
Problems are allowed to specify the timeout limit for a problem in the limits: section as a double value (with a decimal point).  Previously, it was forced to be an Integer.
Fix EventFeedUtilities.java to ignore zip file names that are empty or are directories (end in a /).
CI: Somewhat related, but do not create a zip file for an API submission source file request with entries that have empty filenames.
Fix errant comment.
Change overrideSubmissionID to default of 0 since a submissions can not have an ID of 0.  A negative submission ID is special and will get converted to a positive number, so -1 is really submission 1.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants