@@ -20,10 +20,14 @@ import {
2020 compareByContestIdAndTaskId ,
2121 removeTaskIndexFromTitle ,
2222 getTaskTableHeaderName ,
23+ toChangeTextColorIfNeeds ,
24+ getTaskGradeLabel ,
25+ toChangeBorderColorIfNeeds ,
2326} from '$lib/utils/task' ;
2427import type { WorkBookTaskBase } from '$lib/types/workbook' ;
2528import { ContestType } from '$lib/types/contest' ;
2629import { type TaskResult , type TaskResults } from '$lib/types/task' ;
30+ import { TaskGrade } from '@prisma/client' ;
2731
2832type TestCaseForTaskResults = {
2933 taskResults : TaskResults ;
@@ -64,6 +68,13 @@ type TestCaseForTaskTableHeaderName = {
6468
6569type TestCasesForTaskTableHeaderName = TestCaseForTaskTableHeaderName [ ] ;
6670
71+ type TestCaseForTaskGrade = {
72+ taskGrade : TaskGrade ;
73+ expected : string ;
74+ } ;
75+
76+ type TestCasesForTaskGrade = TestCaseForTaskGrade [ ] ;
77+
6778describe ( 'Task' , ( ) => {
6879 describe ( 'task url' , ( ) => {
6980 describe ( 'when contest ids and task ids for AtCoder are given' , ( ) => {
@@ -688,4 +699,96 @@ describe('Task', () => {
688699 ) ;
689700 } ) ;
690701 } ) ;
702+
703+ describe ( 'to change text color if needs' , ( ) => {
704+ describe ( 'when task grades from 11Q to 1Q are given ' , ( ) => {
705+ const testCases : TestCasesForTaskGrade = [
706+ { taskGrade : TaskGrade . Q11 , expected : 'text-black' } ,
707+ { taskGrade : TaskGrade . Q10 , expected : 'text-black' } ,
708+ { taskGrade : TaskGrade . Q6 , expected : 'text-black' } ,
709+ { taskGrade : TaskGrade . Q5 , expected : 'text-black' } ,
710+ { taskGrade : TaskGrade . Q2 , expected : 'text-black' } ,
711+ { taskGrade : TaskGrade . Q1 , expected : 'text-black' } ,
712+ ] ;
713+
714+ runTests (
715+ 'toChangeTextColorIfNeeds' ,
716+ testCases ,
717+ ( { taskGrade, expected } : TestCaseForTaskGrade ) => {
718+ expect ( toChangeTextColorIfNeeds ( getTaskGradeLabel ( taskGrade ) ) ) . toBe ( expected ) ;
719+ } ,
720+ ) ;
721+ } ) ;
722+
723+ describe ( 'when task grades from 1D to 5D are given' , ( ) => {
724+ const testCases : TestCasesForTaskGrade = [
725+ { taskGrade : TaskGrade . D1 , expected : 'text-white' } ,
726+ { taskGrade : TaskGrade . D2 , expected : 'text-white' } ,
727+ { taskGrade : TaskGrade . D3 , expected : 'text-white' } ,
728+ { taskGrade : TaskGrade . D4 , expected : 'text-white' } ,
729+ { taskGrade : TaskGrade . D5 , expected : 'text-white' } ,
730+ ] ;
731+
732+ runTests (
733+ 'toChangeTextColorIfNeeds' ,
734+ testCases ,
735+ ( { taskGrade, expected } : TestCaseForTaskGrade ) => {
736+ expect ( toChangeTextColorIfNeeds ( getTaskGradeLabel ( taskGrade ) ) ) . toBe ( expected ) ;
737+ } ,
738+ ) ;
739+ } ) ;
740+
741+ describe ( 'when task grades 6D is given' , ( ) => {
742+ const testCases : TestCasesForTaskGrade = [
743+ { taskGrade : TaskGrade . D6 , expected : 'text-atcoder-bronze' } ,
744+ ] ;
745+
746+ runTests (
747+ 'toChangeTextColorIfNeeds' ,
748+ testCases ,
749+ ( { taskGrade, expected } : TestCaseForTaskGrade ) => {
750+ expect ( toChangeTextColorIfNeeds ( getTaskGradeLabel ( taskGrade ) ) ) . toBe ( expected ) ;
751+ } ,
752+ ) ;
753+ } ) ;
754+ } ) ;
755+
756+ describe ( 'to change border color if needs' , ( ) => {
757+ describe ( 'when task grades from 11Q to 5D are given' , ( ) => {
758+ const testCases : TestCasesForTaskGrade = [
759+ { taskGrade : TaskGrade . Q11 , expected : 'border-white' } ,
760+ { taskGrade : TaskGrade . Q10 , expected : 'border-white' } ,
761+ { taskGrade : TaskGrade . Q7 , expected : 'border-white' } ,
762+ { taskGrade : TaskGrade . Q6 , expected : 'border-white' } ,
763+ { taskGrade : TaskGrade . Q2 , expected : 'border-white' } ,
764+ { taskGrade : TaskGrade . Q1 , expected : 'border-white' } ,
765+ { taskGrade : TaskGrade . D1 , expected : 'border-white' } ,
766+ { taskGrade : TaskGrade . D2 , expected : 'border-white' } ,
767+ { taskGrade : TaskGrade . D4 , expected : 'border-white' } ,
768+ { taskGrade : TaskGrade . D5 , expected : 'border-white' } ,
769+ ] ;
770+
771+ runTests (
772+ 'toChangeBorderColorIfNeeds' ,
773+ testCases ,
774+ ( { taskGrade, expected } : TestCaseForTaskGrade ) => {
775+ expect ( toChangeBorderColorIfNeeds ( getTaskGradeLabel ( taskGrade ) ) ) . toBe ( expected ) ;
776+ } ,
777+ ) ;
778+ } ) ;
779+
780+ describe ( 'when task grade 6D is given ' , ( ) => {
781+ const testCases : TestCasesForTaskGrade = [
782+ { taskGrade : TaskGrade . D6 , expected : 'border-atcoder-bronze' } ,
783+ ] ;
784+
785+ runTests (
786+ 'toChangeBorderColorIfNeeds' ,
787+ testCases ,
788+ ( { taskGrade, expected } : TestCaseForTaskGrade ) => {
789+ expect ( toChangeBorderColorIfNeeds ( getTaskGradeLabel ( taskGrade ) ) ) . toBe ( expected ) ;
790+ } ,
791+ ) ;
792+ } ) ;
793+ } ) ;
691794} ) ;
0 commit comments