11import { expect , test } from 'vitest' ;
22
3+ import { runTests } from '../common/test_helpers' ;
34import {
45 getGradeOrder ,
56 taskGradeOrderInfinity ,
67 calcGradeMode ,
78 getTaskGradeLabel ,
9+ toChangeTextColorIfNeeds ,
10+ toChangeBorderColorIfNeeds ,
811} from '$lib/utils/task' ;
912
1013import { TaskGrade , type TaskGrades } from '$lib/types/task' ;
@@ -30,6 +33,13 @@ type TestCaseForTaskGradeLabel = {
3033
3134type TestCasesForTaskGradeLabel = TestCaseForTaskGradeLabel [ ] ;
3235
36+ type TestCaseForTaskGrade = {
37+ taskGrade : TaskGrade ;
38+ expected : string ;
39+ } ;
40+
41+ type TestCasesForTaskGrade = TestCaseForTaskGrade [ ] ;
42+
3343// See: src/lib/utils/task.ts
3444//
3545// Note: We split the test file by task and task grade because there are more test cases.
@@ -463,4 +473,99 @@ describe('Task grade', () => {
463473 test . each ( testCases ) ( `${ testName } (taskGrade: $taskGrade)` , testFunction ) ;
464474 }
465475 } ) ;
476+
477+ describe ( 'to change text color if needs' , ( ) => {
478+ describe ( 'when task grades from 11Q to 1Q are given ' , ( ) => {
479+ const testCases : TestCasesForTaskGrade = [
480+ { taskGrade : TaskGrade . Q11 , expected : 'text-black' } ,
481+ { taskGrade : TaskGrade . Q10 , expected : 'text-black' } ,
482+ { taskGrade : TaskGrade . Q6 , expected : 'text-black' } ,
483+ { taskGrade : TaskGrade . Q5 , expected : 'text-black' } ,
484+ { taskGrade : TaskGrade . Q2 , expected : 'text-black' } ,
485+ { taskGrade : TaskGrade . Q1 , expected : 'text-black' } ,
486+ ] ;
487+
488+ runTests (
489+ 'toChangeTextColorIfNeeds' ,
490+ testCases ,
491+ ( { taskGrade, expected } : TestCaseForTaskGrade ) => {
492+ expect ( toChangeTextColorIfNeeds ( getTaskGradeLabel ( taskGrade ) ) ) . toBe ( expected ) ;
493+ } ,
494+ ) ;
495+ } ) ;
496+
497+ describe ( 'when task grades from 1D to 5D are given' , ( ) => {
498+ const testCases : TestCasesForTaskGrade = [
499+ { taskGrade : TaskGrade . D1 , expected : 'text-white' } ,
500+ { taskGrade : TaskGrade . D2 , expected : 'text-white' } ,
501+ { taskGrade : TaskGrade . D3 , expected : 'text-white' } ,
502+ { taskGrade : TaskGrade . D4 , expected : 'text-white' } ,
503+ { taskGrade : TaskGrade . D5 , expected : 'text-white' } ,
504+ ] ;
505+
506+ runTests (
507+ 'toChangeTextColorIfNeeds' ,
508+ testCases ,
509+ ( { taskGrade, expected } : TestCaseForTaskGrade ) => {
510+ expect ( toChangeTextColorIfNeeds ( getTaskGradeLabel ( taskGrade ) ) ) . toBe ( expected ) ;
511+ } ,
512+ ) ;
513+ } ) ;
514+
515+ describe ( 'when task grades 6D is given' , ( ) => {
516+ const testCases : TestCasesForTaskGrade = [
517+ { taskGrade : TaskGrade . D6 , expected : 'text-atcoder-bronze' } ,
518+ ] ;
519+
520+ runTests (
521+ 'toChangeTextColorIfNeeds' ,
522+ testCases ,
523+ ( { taskGrade, expected } : TestCaseForTaskGrade ) => {
524+ expect ( toChangeTextColorIfNeeds ( getTaskGradeLabel ( taskGrade ) ) ) . toBe ( expected ) ;
525+ } ,
526+ ) ;
527+ } ) ;
528+ } ) ;
529+
530+ describe ( 'to change border color if needs' , ( ) => {
531+ describe ( 'when task grades from 11Q to 5D are given' , ( ) => {
532+ const testCasesForQGrades = [
533+ { taskGrade : TaskGrade . Q11 , expected : 'border-white' } ,
534+ { taskGrade : TaskGrade . Q10 , expected : 'border-white' } ,
535+ { taskGrade : TaskGrade . Q7 , expected : 'border-white' } ,
536+ { taskGrade : TaskGrade . Q6 , expected : 'border-white' } ,
537+ { taskGrade : TaskGrade . Q2 , expected : 'border-white' } ,
538+ { taskGrade : TaskGrade . Q1 , expected : 'border-white' } ,
539+ ] ;
540+ const testCasesForDGrades = [
541+ { taskGrade : TaskGrade . D1 , expected : 'border-white' } ,
542+ { taskGrade : TaskGrade . D2 , expected : 'border-white' } ,
543+ { taskGrade : TaskGrade . D4 , expected : 'border-white' } ,
544+ { taskGrade : TaskGrade . D5 , expected : 'border-white' } ,
545+ ] ;
546+ const testCases : TestCasesForTaskGrade = [ ...testCasesForQGrades , ...testCasesForDGrades ] ;
547+
548+ runTests (
549+ 'toChangeBorderColorIfNeeds' ,
550+ testCases ,
551+ ( { taskGrade, expected } : TestCaseForTaskGrade ) => {
552+ expect ( toChangeBorderColorIfNeeds ( getTaskGradeLabel ( taskGrade ) ) ) . toBe ( expected ) ;
553+ } ,
554+ ) ;
555+ } ) ;
556+
557+ describe ( 'when task grade 6D is given ' , ( ) => {
558+ const testCases : TestCasesForTaskGrade = [
559+ { taskGrade : TaskGrade . D6 , expected : 'border-atcoder-bronze' } ,
560+ ] ;
561+
562+ runTests (
563+ 'toChangeBorderColorIfNeeds' ,
564+ testCases ,
565+ ( { taskGrade, expected } : TestCaseForTaskGrade ) => {
566+ expect ( toChangeBorderColorIfNeeds ( getTaskGradeLabel ( taskGrade ) ) ) . toBe ( expected ) ;
567+ } ,
568+ ) ;
569+ } ) ;
570+ } ) ;
466571} ) ;
0 commit comments