diff --git a/src/lib/contests/fixtures/contest_name_and_task_index.ts b/src/lib/contests/fixtures/contest_name_and_task_index.ts index 51e81dcfd..1dcbfd0a2 100644 --- a/src/lib/contests/fixtures/contest_name_and_task_index.ts +++ b/src/lib/contests/fixtures/contest_name_and_task_index.ts @@ -3,9 +3,7 @@ import { getPastContestLabel, getJoiContestLabel, getAtCoderUniversityContestLabel, - getAojContestLabel, PAST_TRANSLATIONS, - AOJ_COURSES, } from '#lib/contests/index.js'; export type TestCaseForContestNameAndTaskIndex = { @@ -633,6 +631,18 @@ const AOJ_COURSES_TEST_DATA = { }, }; +// Literal labels so the expected values do not depend on getAojContestLabel. +const AOJ_COURSE_LABELS: Record = { + ITP1: 'プログラミング入門', + ALDS1: 'アルゴリズムとデータ構造入門', + ITP2: 'プログラミング応用', + DPL: '組み合わせ最適化', + GRL: 'グラフ', + DSL: 'データ構造', + CGL: '計算幾何学', + NTL: '整数論', +}; + const generateAojCoursesTestCases = ( contestIds: string[], taskIndices: string[], @@ -643,7 +653,7 @@ const generateAojCoursesTestCases = ( )({ contestId: `${contestId}`, taskTableIndex: `${contestId}_${taskIndex}`, - expected: `AOJ ${contestId}_${taskIndex}${getAojContestLabel(AOJ_COURSES, contestId)}`, + expected: `${AOJ_COURSE_LABELS[contestId]} - ${contestId}_${taskIndex}(AOJ)`, }); return testCase; @@ -709,7 +719,7 @@ const generateAojPckTestCases = ( )({ contestId: `PCK${contestId}`, taskTableIndex: taskIndex, - expected: `AOJ ${taskIndex}(パソコン甲子園${contestId.replace('Prelim', ' 予選 ').replace('Final', ' 本選 ')})`, + expected: `パソコン甲子園${contestId.replace('Prelim', ' 予選 ').replace('Final', ' 本選 ')} - ${taskIndex}(AOJ)`, }); return testCase; @@ -801,7 +811,7 @@ const generateAojJagTestCases = (contestIds: JagContestIds, taskIndices: string[ taskIndices, (contestId, taskIndex) => `AOJ, JAG${contestId} - ${taskIndex}`, (contestId, taskIndex) => - `AOJ ${taskIndex}(JAG${contestId.replace('Prelim', ' 模擬国内 ').replace('Regional', ' 模擬地区 ')})`, + `JAG${contestId.replace('Prelim', ' 模擬国内 ').replace('Regional', ' 模擬地区 ')} - ${taskIndex}(AOJ)`, ); const generateAojJagCampTestCases = (contestIds: string[], taskIndices: string[]) => @@ -810,11 +820,11 @@ const generateAojJagCampTestCases = (contestIds: string[], taskIndices: string[] taskIndices, (contestId, taskIndex) => `AOJ, JAG${contestId} - ${taskIndex}`, (contestId, taskIndex) => - `AOJ ${taskIndex}(JAG${contestId + `JAG${contestId .replace('Summer', ' 夏合宿 ') .replace('Winter', ' 冬合宿 ') .replace('Spring', ' 春合宿 ') - .replace('-day', ' Day')})`, + .replace('-day', ' Day')} - ${taskIndex}(AOJ)`, ); const AOJ_JAG_CAMP_TEST_DATA: Record = { @@ -870,7 +880,7 @@ const generateAojIcpcTestCases = ( return createTestCaseForContestNameAndTaskIndex(`AOJ, ICPC${contestId} - ${taskIndex}`)({ contestId: `ICPC${contestId}`, taskTableIndex: taskIndex, - expected: `AOJ ${taskIndex}(ICPC${contestId.replace('Prelim', ' 国内予選 ').replace('Regional', ' アジア地区 ')})`, + expected: `ICPC${contestId.replace('Prelim', ' 国内予選 ').replace('Regional', ' アジア地区 ')} - ${taskIndex}(AOJ)`, }); }); }; @@ -883,97 +893,97 @@ const AOJ_UNIVERSITY_TEST_DATA = [ { contestId: 'AOJ-RUPC2018-in-ACPC2018-day1', taskTableIndex: '2903', - expected: 'AOJ 2903(RUPC 2018 in ACPC 2018 Day1)', + expected: 'RUPC 2018 in ACPC 2018 Day1 - 2903(AOJ)', }, { contestId: 'AOJ-UAPC2019-in-RUPC2019-day2', taskTableIndex: '3058', - expected: 'AOJ 3058(ACPC 2019 in RUPC 2019 Day2)', + expected: 'ACPC 2019 in RUPC 2019 Day2 - 3058(AOJ)', }, { contestId: 'AOJ-HUPC2020-in-HUPC2020-day1', taskTableIndex: '3171', - expected: 'AOJ 3171(HUPC 2020 in HUPC 2020 Day1)', + expected: 'HUPC 2020 in HUPC 2020 Day1 - 3171(AOJ)', }, - { contestId: 'AOJ-UAPC2003', taskTableIndex: '1000', expected: 'AOJ 1000(ACPC 2003)' }, + { contestId: 'AOJ-UAPC2003', taskTableIndex: '1000', expected: 'ACPC 2003 - 1000(AOJ)' }, { contestId: 'AOJ-UAPC2011-summer', taskTableIndex: '1001', - expected: 'AOJ 1001(ACPC 2011 Summer)', + expected: 'ACPC 2011 Summer - 1001(AOJ)', }, { contestId: 'AOJ-UAPC2012-day1', taskTableIndex: '1002', - expected: 'AOJ 1002(ACPC 2012 Day1)', + expected: 'ACPC 2012 Day1 - 1002(AOJ)', }, { contestId: 'AOJ-OUPC2012-in-RUPC2012-day2', taskTableIndex: '2352', - expected: 'AOJ 2352(OUPC 2012 in RUPC 2012 Day2)', + expected: 'OUPC 2012 in RUPC 2012 Day2 - 2352(AOJ)', }, { contestId: 'AOJ-HUPC2014-in-RUPC2014-day3', taskTableIndex: '2581', - expected: 'AOJ 2581(HUPC 2014 in RUPC 2014 Day3)', + expected: 'HUPC 2014 in RUPC 2014 Day3 - 2581(AOJ)', }, { contestId: 'AOJ-RUPC2018-in-RUPC2018-day1', taskTableIndex: '2880', - expected: 'AOJ 2880(RUPC 2018 in RUPC 2018 Day1)', + expected: 'RUPC 2018 in RUPC 2018 Day1 - 2880(AOJ)', }, { contestId: 'AOJ-HUPC2023-in-OUPC2023-day2', taskTableIndex: '3369', - expected: 'AOJ 3369(HUPC 2023 in OUPC 2023 Day2)', + expected: 'HUPC 2023 in OUPC 2023 Day2 - 3369(AOJ)', }, { contestId: 'AOJ-UAPC2015-in-ACPC2015-day2', taskTableIndex: '1566', - expected: 'AOJ 1566(ACPC 2015 in ACPC 2015 Day2)', + expected: 'ACPC 2015 in ACPC 2015 Day2 - 1566(AOJ)', }, { contestId: 'AOJ-UAPC2017-in-ACPC2017-day2', taskTableIndex: '3022', - expected: 'AOJ 3022(ACPC 2017 in ACPC 2017 Day2)', + expected: 'ACPC 2017 in ACPC 2017 Day2 - 3022(AOJ)', }, { contestId: 'AOJ-RUPC2025-in-ACPC2025-day1', taskTableIndex: '3426', - expected: 'AOJ 3426(RUPC 2025 in ACPC 2025 Day1)', + expected: 'RUPC 2025 in ACPC 2025 Day1 - 3426(AOJ)', }, { contestId: 'AOJ-HUPC2018-in-ACPC2018-day3', taskTableIndex: '2893', - expected: 'AOJ 2893(HUPC 2018 in ACPC 2018 Day3)', + expected: 'HUPC 2018 in ACPC 2018 Day3 - 2893(AOJ)', }, { contestId: 'AOJ-UAPC2018-in-RUPC2018-day2', taskTableIndex: '3032', - expected: 'AOJ 3032(ACPC 2018 in RUPC 2018 Day2)', + expected: 'ACPC 2018 in RUPC 2018 Day2 - 3032(AOJ)', }, { contestId: 'AOJ-RUPC2017-in-ACPC2017-day1', taskTableIndex: '2835', - expected: 'AOJ 2835(RUPC 2017 in ACPC 2017 Day1)', + expected: 'RUPC 2017 in ACPC 2017 Day1 - 2835(AOJ)', }, { contestId: 'AOJ-HUPC2019-in-HUPC2019-day2', taskTableIndex: '2959', - expected: 'AOJ 2959(HUPC 2019 in HUPC 2019 Day2)', + expected: 'HUPC 2019 in HUPC 2019 Day2 - 2959(AOJ)', }, - { contestId: 'AOJ-OUPC2020', taskTableIndex: '3215', expected: 'AOJ 3215(OUPC 2020)' }, + { contestId: 'AOJ-OUPC2020', taskTableIndex: '3215', expected: 'OUPC 2020 - 3215(AOJ)' }, { contestId: 'AOJ-OUPC2024-day1', taskTableIndex: '3412', - expected: 'AOJ 3412(OUPC 2024 Day1)', + expected: 'OUPC 2024 Day1 - 3412(AOJ)', }, { contestId: 'AOJ-HUPC2020-in-HUPC2020-day3', taskTableIndex: '3183', - expected: 'AOJ 3183(HUPC 2020 in HUPC 2020 Day3)', + expected: 'HUPC 2020 in HUPC 2020 Day3 - 3183(AOJ)', }, - { contestId: 'AOJ-UTPC2010', taskTableIndex: '2207', expected: 'AOJ 2207(UTPC 2010)' }, - { contestId: 'AOJ-KUPC2011', taskTableIndex: 'I', expected: 'AOJ I(KUPC 2011)' }, + { contestId: 'AOJ-UTPC2010', taskTableIndex: '2207', expected: 'UTPC 2010 - 2207(AOJ)' }, + { contestId: 'AOJ-KUPC2011', taskTableIndex: 'I', expected: 'KUPC 2011 - I(AOJ)' }, ]; export const aojUniversity = AOJ_UNIVERSITY_TEST_DATA.map( diff --git a/src/lib/contests/fixtures/contest_name_labels.ts b/src/lib/contests/fixtures/contest_name_labels.ts index 4c60e9368..82be1f032 100644 --- a/src/lib/contests/fixtures/contest_name_labels.ts +++ b/src/lib/contests/fixtures/contest_name_labels.ts @@ -160,190 +160,190 @@ export const aalc001 = [ export const aojCourses = [ createTestCaseForContestNameLabel('AOJ, ITP1')({ contestId: 'ITP1', - expected: '(プログラミング入門)', + expected: 'プログラミング入門', }), createTestCaseForContestNameLabel('AOJ, ALDS1')({ contestId: 'ALDS1', - expected: '(アルゴリズムとデータ構造入門)', + expected: 'アルゴリズムとデータ構造入門', }), createTestCaseForContestNameLabel('AOJ, ITP2')({ contestId: 'ITP2', - expected: '(プログラミング応用)', + expected: 'プログラミング応用', }), createTestCaseForContestNameLabel('AOJ, DPL')({ contestId: 'DPL', - expected: '(組み合わせ最適化)', + expected: '組み合わせ最適化', }), createTestCaseForContestNameLabel('AOJ, GRL')({ contestId: 'GRL', - expected: '(グラフ)', + expected: 'グラフ', }), createTestCaseForContestNameLabel('AOJ, DSL')({ contestId: 'DSL', - expected: '(データ構造)', + expected: 'データ構造', }), createTestCaseForContestNameLabel('AOJ, CGL')({ contestId: 'CGL', - expected: '(計算幾何学)', + expected: '計算幾何学', }), createTestCaseForContestNameLabel('AOJ, NTL')({ contestId: 'NTL', - expected: '(整数論)', + expected: '整数論', }), ]; export const aojPck = [ createTestCaseForContestNameLabel('AOJ, PCK Prelim 2024')({ contestId: 'PCKPrelim2024', - expected: '(パソコン甲子園 予選 2024)', + expected: 'パソコン甲子園 予選 2024', }), createTestCaseForContestNameLabel('AOJ, PCK Final 2023')({ contestId: 'PCKFinal2023', - expected: '(パソコン甲子園 本選 2023)', + expected: 'パソコン甲子園 本選 2023', }), createTestCaseForContestNameLabel('AOJ, PCK Prelim 2005')({ contestId: 'PCKPrelim2005', - expected: '(パソコン甲子園 予選 2005)', + expected: 'パソコン甲子園 予選 2005', }), createTestCaseForContestNameLabel('AOJ, PCK Final 2004')({ contestId: 'PCKFinal2004', - expected: '(パソコン甲子園 本選 2004)', + expected: 'パソコン甲子園 本選 2004', }), ]; export const aojJag = [ createTestCaseForContestNameLabel('AOJ, JAG Prelim 2016 A')({ contestId: 'JAGPrelim2016A', - expected: '(JAG 模擬国内 2016A)', + expected: 'JAG 模擬国内 2016A', }), createTestCaseForContestNameLabel('AOJ, JAG Prelim 2016 B')({ contestId: 'JAGPrelim2016B', - expected: '(JAG 模擬国内 2016B)', + expected: 'JAG 模擬国内 2016B', }), createTestCaseForContestNameLabel('AOJ, JAG Summer 2024 day2')({ contestId: 'JAGSummer2024-day2', - expected: '(JAG 夏合宿 2024 Day2)', + expected: 'JAG 夏合宿 2024 Day2', }), createTestCaseForContestNameLabel('AOJ, JAG Winter 2009')({ contestId: 'JAGWinter2009', - expected: '(JAG 冬合宿 2009)', + expected: 'JAG 冬合宿 2009', }), createTestCaseForContestNameLabel('AOJ, JAG Spring 2012')({ contestId: 'JAGSpring2012', - expected: '(JAG 春合宿 2012)', + expected: 'JAG 春合宿 2012', }), createTestCaseForContestNameLabel('AOJ, JAG Summer 2012 day3A')({ contestId: 'JAGSummer2012-day3A', - expected: '(JAG 夏合宿 2012 Day3A)', + expected: 'JAG 夏合宿 2012 Day3A', }), ]; export const aojIcpc = [ createTestCaseForContestNameLabel('ICPC Prelim 2024')({ contestId: 'ICPCPrelim2024', - expected: '(ICPC 国内予選 2024)', + expected: 'ICPC 国内予選 2024', }), createTestCaseForContestNameLabel('ICPC Regional 2024')({ contestId: 'ICPCRegional2024', - expected: '(ICPC アジア地区 2024)', + expected: 'ICPC アジア地区 2024', }), createTestCaseForContestNameLabel('ICPC Prelim 2023')({ contestId: 'ICPCPrelim2023', - expected: '(ICPC 国内予選 2023)', + expected: 'ICPC 国内予選 2023', }), createTestCaseForContestNameLabel('ICPC Regional 2023')({ contestId: 'ICPCRegional2023', - expected: '(ICPC アジア地区 2023)', + expected: 'ICPC アジア地区 2023', }), ]; export const aojUniversity = [ createTestCaseForContestNameLabel('AOJ, RUPC 2018 in ACPC 2018 Day1')({ contestId: 'AOJ-RUPC2018-in-ACPC2018-day1', - expected: '(RUPC 2018 in ACPC 2018 Day1)', + expected: 'RUPC 2018 in ACPC 2018 Day1', }), createTestCaseForContestNameLabel('AOJ, HUPC 2020 in HUPC 2020 Day1')({ contestId: 'AOJ-HUPC2020-in-HUPC2020-day1', - expected: '(HUPC 2020 in HUPC 2020 Day1)', + expected: 'HUPC 2020 in HUPC 2020 Day1', }), createTestCaseForContestNameLabel('AOJ, UAPC 2019 in RUPC 2019 Day2')({ contestId: 'AOJ-UAPC2019-in-RUPC2019-day2', - expected: '(ACPC 2019 in RUPC 2019 Day2)', + expected: 'ACPC 2019 in RUPC 2019 Day2', }), createTestCaseForContestNameLabel('AOJ, UAPC 2003')({ contestId: 'AOJ-UAPC2003', - expected: '(ACPC 2003)', + expected: 'ACPC 2003', }), createTestCaseForContestNameLabel('AOJ, UAPC 2011 Summer')({ contestId: 'AOJ-UAPC2011-summer', - expected: '(ACPC 2011 Summer)', + expected: 'ACPC 2011 Summer', }), createTestCaseForContestNameLabel('AOJ, UAPC 2012 Day1')({ contestId: 'AOJ-UAPC2012-day1', - expected: '(ACPC 2012 Day1)', + expected: 'ACPC 2012 Day1', }), createTestCaseForContestNameLabel('AOJ, OUPC 2012 in RUPC 2012 Day2')({ contestId: 'AOJ-OUPC2012-in-RUPC2012-day2', - expected: '(OUPC 2012 in RUPC 2012 Day2)', + expected: 'OUPC 2012 in RUPC 2012 Day2', }), createTestCaseForContestNameLabel('AOJ, HUPC 2014 in RUPC 2014 Day3')({ contestId: 'AOJ-HUPC2014-in-RUPC2014-day3', - expected: '(HUPC 2014 in RUPC 2014 Day3)', + expected: 'HUPC 2014 in RUPC 2014 Day3', }), createTestCaseForContestNameLabel('AOJ, RUPC 2018 in RUPC 2018 Day1')({ contestId: 'AOJ-RUPC2018-in-RUPC2018-day1', - expected: '(RUPC 2018 in RUPC 2018 Day1)', + expected: 'RUPC 2018 in RUPC 2018 Day1', }), createTestCaseForContestNameLabel('AOJ, HUPC 2023 in OUPC 2023 Day2')({ contestId: 'AOJ-HUPC2023-in-OUPC2023-day2', - expected: '(HUPC 2023 in OUPC 2023 Day2)', + expected: 'HUPC 2023 in OUPC 2023 Day2', }), createTestCaseForContestNameLabel('AOJ, UAPC 2015 in ACPC 2015 Day2')({ contestId: 'AOJ-UAPC2015-in-ACPC2015-day2', - expected: '(ACPC 2015 in ACPC 2015 Day2)', + expected: 'ACPC 2015 in ACPC 2015 Day2', }), createTestCaseForContestNameLabel('AOJ, UAPC 2017 in ACPC 2017 Day2')({ contestId: 'AOJ-UAPC2017-in-ACPC2017-day2', - expected: '(ACPC 2017 in ACPC 2017 Day2)', + expected: 'ACPC 2017 in ACPC 2017 Day2', }), createTestCaseForContestNameLabel('AOJ, RUPC 2025 in ACPC 2025 Day1')({ contestId: 'AOJ-RUPC2025-in-ACPC2025-day1', - expected: '(RUPC 2025 in ACPC 2025 Day1)', + expected: 'RUPC 2025 in ACPC 2025 Day1', }), createTestCaseForContestNameLabel('AOJ, HUPC 2018 in ACPC 2018 Day3')({ contestId: 'AOJ-HUPC2018-in-ACPC2018-day3', - expected: '(HUPC 2018 in ACPC 2018 Day3)', + expected: 'HUPC 2018 in ACPC 2018 Day3', }), createTestCaseForContestNameLabel('AOJ, UAPC 2018 in RUPC 2018 Day2')({ contestId: 'AOJ-UAPC2018-in-RUPC2018-day2', - expected: '(ACPC 2018 in RUPC 2018 Day2)', + expected: 'ACPC 2018 in RUPC 2018 Day2', }), createTestCaseForContestNameLabel('AOJ, RUPC 2017 in ACPC 2017 Day1')({ contestId: 'AOJ-RUPC2017-in-ACPC2017-day1', - expected: '(RUPC 2017 in ACPC 2017 Day1)', + expected: 'RUPC 2017 in ACPC 2017 Day1', }), createTestCaseForContestNameLabel('AOJ, HUPC 2019 in HUPC 2019 Day2')({ contestId: 'AOJ-HUPC2019-in-HUPC2019-day2', - expected: '(HUPC 2019 in HUPC 2019 Day2)', + expected: 'HUPC 2019 in HUPC 2019 Day2', }), createTestCaseForContestNameLabel('AOJ, HUPC 2020 in HUPC 2020 Day3')({ contestId: 'AOJ-HUPC2020-in-HUPC2020-day3', - expected: '(HUPC 2020 in HUPC 2020 Day3)', + expected: 'HUPC 2020 in HUPC 2020 Day3', }), createTestCaseForContestNameLabel('AOJ, OUPC 2020')({ contestId: 'AOJ-OUPC2020', - expected: '(OUPC 2020)', + expected: 'OUPC 2020', }), createTestCaseForContestNameLabel('AOJ, OUPC 2024 Day1')({ contestId: 'AOJ-OUPC2024-day1', - expected: '(OUPC 2024 Day1)', + expected: 'OUPC 2024 Day1', }), createTestCaseForContestNameLabel('AOJ, UTPC 2010')({ contestId: 'AOJ-UTPC2010', - expected: '(UTPC 2010)', + expected: 'UTPC 2010', }), createTestCaseForContestNameLabel('AOJ, KUPC 2011')({ contestId: 'AOJ-KUPC2011', - expected: '(KUPC 2011)', + expected: 'KUPC 2011', }), ]; diff --git a/src/lib/contests/utils/labels/aoj.test.ts b/src/lib/contests/utils/labels/aoj.test.ts index 424443233..2f9ce6ec0 100644 --- a/src/lib/contests/utils/labels/aoj.test.ts +++ b/src/lib/contests/utils/labels/aoj.test.ts @@ -12,9 +12,9 @@ import { describe('get AOJ contest label', () => { describe('AOJ courses', () => { test.each([ - ['ITP1', '(プログラミング入門)'], - ['ALDS1', '(アルゴリズムとデータ構造入門)'], - ['NTL', '(整数論)'], + ['ITP1', 'プログラミング入門'], + ['ALDS1', 'アルゴリズムとデータ構造入門'], + ['NTL', '整数論'], ])('converts %s to %s', (contestId, expected) => { expect(getAojContestLabel(AOJ_COURSES, contestId)).toBe(expected); }); @@ -22,8 +22,8 @@ describe('get AOJ contest label', () => { describe('PCK', () => { test.each([ - ['PCKPrelim2024', '(パソコン甲子園 予選 2024)'], - ['PCKFinal2023', '(パソコン甲子園 本選 2023)'], + ['PCKPrelim2024', 'パソコン甲子園 予選 2024'], + ['PCKFinal2023', 'パソコン甲子園 本選 2023'], ])('converts %s to %s', (contestId, expected) => { expect(getAojContestLabel(PCK_TRANSLATIONS, contestId)).toBe(expected); }); @@ -31,8 +31,8 @@ describe('get AOJ contest label', () => { describe('ICPC', () => { test.each([ - ['ICPCPrelim2024', '(ICPC 国内予選 2024)'], - ['ICPCRegional2023', '(ICPC アジア地区 2023)'], + ['ICPCPrelim2024', 'ICPC 国内予選 2024'], + ['ICPCRegional2023', 'ICPC アジア地区 2023'], ])('converts %s to %s', (contestId, expected) => { expect(getAojContestLabel(ICPC_TRANSLATIONS, contestId)).toBe(expected); }); @@ -40,19 +40,19 @@ describe('get AOJ contest label', () => { describe('JAG', () => { test.each([ - ['JAGPrelim2024', '(JAG 模擬国内 2024)'], - ['JAGRegional2022', '(JAG 模擬地区 2022)'], - ['JAGSummer2019-day2', '(JAG 夏合宿 2019 Day2)'], - ['JAGWinter2020', '(JAG 冬合宿 2020)'], - ['JAGSpring2018', '(JAG 春合宿 2018)'], + ['JAGPrelim2024', 'JAG 模擬国内 2024'], + ['JAGRegional2022', 'JAG 模擬地区 2022'], + ['JAGSummer2019-day2', 'JAG 夏合宿 2019 Day2'], + ['JAGWinter2020', 'JAG 冬合宿 2020'], + ['JAGSpring2018', 'JAG 春合宿 2018'], ])('converts %s to %s', (contestId, expected) => { expect(getAojContestLabel(JAG_TRANSLATIONS, contestId)).toBe(expected); }); }); describe('when the contest_id contains no translatable token', () => { - test('wraps the contest_id in parentheses unchanged', () => { - expect(getAojContestLabel(PCK_TRANSLATIONS, 'unknown2024')).toBe('(unknown2024)'); + test('returns the contest_id unchanged', () => { + expect(getAojContestLabel(PCK_TRANSLATIONS, 'unknown2024')).toBe('unknown2024'); }); }); }); @@ -60,9 +60,9 @@ describe('get AOJ contest label', () => { describe('get AOJ university contest label', () => { describe('when the contest_id has a joint-contest venue', () => { test.each([ - ['AOJ-RUPC2018-in-ACPC2018-day1', '(RUPC 2018 in ACPC 2018 Day1)'], - ['AOJ-HUPC2020-in-HUPC2020-day1', '(HUPC 2020 in HUPC 2020 Day1)'], - ['AOJ-OUPC2012-in-RUPC2012-day2', '(OUPC 2012 in RUPC 2012 Day2)'], + ['AOJ-RUPC2018-in-ACPC2018-day1', 'RUPC 2018 in ACPC 2018 Day1'], + ['AOJ-HUPC2020-in-HUPC2020-day1', 'HUPC 2020 in HUPC 2020 Day1'], + ['AOJ-OUPC2012-in-RUPC2012-day2', 'OUPC 2012 in RUPC 2012 Day2'], ])('converts %s to %s', (contestId, expected) => { expect(getAojUniversityContestLabel(contestId)).toBe(expected); }); @@ -71,10 +71,10 @@ describe('get AOJ university contest label', () => { describe('when the contest_id is UAPC', () => { // UAPC was renamed to ACPC, so the label uses the current name. test.each([ - ['AOJ-UAPC2003', '(ACPC 2003)'], - ['AOJ-UAPC2012-day1', '(ACPC 2012 Day1)'], - ['AOJ-UAPC2011-summer', '(ACPC 2011 Summer)'], - ['AOJ-UAPC2019-in-RUPC2019-day2', '(ACPC 2019 in RUPC 2019 Day2)'], + ['AOJ-UAPC2003', 'ACPC 2003'], + ['AOJ-UAPC2012-day1', 'ACPC 2012 Day1'], + ['AOJ-UAPC2011-summer', 'ACPC 2011 Summer'], + ['AOJ-UAPC2019-in-RUPC2019-day2', 'ACPC 2019 in RUPC 2019 Day2'], ])('converts %s to %s', (contestId, expected) => { expect(getAojUniversityContestLabel(contestId)).toBe(expected); }); diff --git a/src/lib/contests/utils/labels/aoj.ts b/src/lib/contests/utils/labels/aoj.ts index e2dc22fe7..b5b2f7fc7 100644 --- a/src/lib/contests/utils/labels/aoj.ts +++ b/src/lib/contests/utils/labels/aoj.ts @@ -49,16 +49,15 @@ export function getAojContestLabel( label = label.replace(abbrEnglish, japanese); }); - return '(' + label + ')'; + return label; } export function getAojUniversityContestLabel(contestId: string): string { - const label = contestId + return contestId .replace(/^AOJ-/, '') .replace(/UAPC/g, 'ACPC') .replace(/([A-Z]{2,})(\d{4})/g, '$1 $2') .replace(/-in-/, ' in ') .replace(/-day(\d+)/, ' Day$1') .replace(/-summer/, ' Summer'); - return '(' + label + ')'; } diff --git a/src/lib/contests/utils/task_index_label.test.ts b/src/lib/contests/utils/task_index_label.test.ts index d690ac565..cf2244eb8 100644 --- a/src/lib/contests/utils/task_index_label.test.ts +++ b/src/lib/contests/utils/task_index_label.test.ts @@ -181,7 +181,7 @@ describe('add contest name to task index', () => { test.each(['JAGSummer-day2', 'JAGPrelim', 'JAGRegional-day1'])( 'does not produce AOJ format for %s', (contestId) => { - expect(addContestNameToTaskIndex(contestId, '1')).not.toMatch(/^AOJ /); + expect(addContestNameToTaskIndex(contestId, '1')).not.toMatch(/(AOJ)$/); }, ); }); diff --git a/src/lib/contests/utils/task_index_label.ts b/src/lib/contests/utils/task_index_label.ts index 0b4d8fc48..1eb26ddd7 100644 --- a/src/lib/contests/utils/task_index_label.ts +++ b/src/lib/contests/utils/task_index_label.ts @@ -5,7 +5,7 @@ export const addContestNameToTaskIndex = (contestId: string, taskTableIndex: str const contestName = getContestNameLabel(contestId); if (isAojContest(contestId)) { - return `AOJ ${taskTableIndex}${contestName}`; + return `${contestName} - ${taskTableIndex}(AOJ)`; } return `${contestName} - ${taskTableIndex}`;