diff --git a/lib/modules/scoring/controllers/scoring_controller.dart b/lib/modules/scoring/controllers/scoring_controller.dart index 80be93d..bee8a20 100644 --- a/lib/modules/scoring/controllers/scoring_controller.dart +++ b/lib/modules/scoring/controllers/scoring_controller.dart @@ -510,6 +510,9 @@ class ScoringController extends GetxController { aliases: const { 'REQUIRED_N3_PLUS': EliteScoringRuleCatalog.requiredLevel3AndAbove, 'REQUIRED_N2_MINUS': EliteScoringRuleCatalog.requiredLevel2AndBelow, + 'REQ_STRENGTH_GYMNASTICS': '力量体操', + 'REQ_MULTIPLE_ROPE': '多摇', + 'REQ_ROPE_MANIPULATION': '绳子运用', 'REQ_INTERACTION': '互动配合', }, ); diff --git a/test/competition_rule_calculator_test.dart b/test/competition_rule_calculator_test.dart index 24ff947..5698148 100644 --- a/test/competition_rule_calculator_test.dart +++ b/test/competition_rule_calculator_test.dart @@ -139,6 +139,11 @@ void main() { expect(CompetitionRuleCalculator.requiredFromMissing(2, .05), .9); }); + test('车轮跳规定元素每类最多计4个且超额不能抵消缺失', () { + expect(CompetitionRuleCalculator.wheelRequiredMissing([4, 4, 4, 4]), 0); + expect(CompetitionRuleCalculator.wheelRequiredMissing([5, 3, 0, 4]), 5); + expect(CompetitionRuleCalculator.requiredFromMissing(5, .025), .875); + }); test('个人花样规定元素分别换算n3+和n2-', () { expect( CompetitionRuleCalculator.individualRequiredCompleted( diff --git a/test/score_item_key_matcher_test.dart b/test/score_item_key_matcher_test.dart index c244b02..121699e 100644 --- a/test/score_item_key_matcher_test.dart +++ b/test/score_item_key_matcher_test.dart @@ -100,6 +100,38 @@ void main() { ); }); + test('车轮跳四类规定元素按稳定编码映射到平板控件', () { + const keys = ['力量体操', '多摇', '绳子运用', '互动配合']; + const aliases = { + 'REQ_STRENGTH_GYMNASTICS': '力量体操', + 'REQ_MULTIPLE_ROPE': '多摇', + 'REQ_ROPE_MANIPULATION': '绳子运用', + 'REQ_INTERACTION': '互动配合', + }; + const serverItems = { + 'REQ_STRENGTH_GYMNASTICS': '力量和体操', + 'REQ_MULTIPLE_ROPE': '多摇', + 'REQ_ROPE_MANIPULATION': '绳子运用', + 'REQ_INTERACTION': '互动配合', + }; + + expect( + { + for (final item in serverItems.entries) + item.key: ScoreItemKeyMatcher.match( + keys, + '${item.value}${item.key}', + aliases: aliases, + ), + }, + { + 'REQ_STRENGTH_GYMNASTICS': '力量体操', + 'REQ_MULTIPLE_ROPE': '多摇', + 'REQ_ROPE_MANIPULATION': '绳子运用', + 'REQ_INTERACTION': '互动配合', + }, + ); + }); test('同步花样互动配合按稳定编码映射到主裁控件', () { expect( ScoreItemKeyMatcher.match(