eSIM RSP 测试用例对比站

人工切片(-man) ↔ Cas 盲生成(-cas)· 真机真卡执行证据对照

源码对照:4.2.24.2.2

ES10c eUICC 存储复位异常用例 / TC_eUICC_ES10c.eUICCMemoryReset_ErrorCases

左侧为人工切片入口(-man,来自 原料/切片 的最小可执行脚本),右侧为 Cas 盲生成入口(-cas,仅依据规范生成)。文件按原始编码(多为 GBK)解码为 UTF-8 显示,行号自 1 起;字节级原文与 sha256 见两侧脚本包。完整 unified diff 见本页底部折叠区,以及 报告原文 §4。
-man 入口
Import/TestCase_SGP_23.js
111 行 / 3762 字符 / gb18030
-cas 入口
TC_eUICC_ES10c_eUICCMemoryReset_ErrorCases/Import/TC_eUICC_ES10c_eUICCMemoryReset_ErrorCases.js
154 行 / 11407 字符 / gb18030
默认折行显示长行;取消勾选可横向滚动查看原始行宽
-man 人工切片Import/TestCase_SGP_23.js111 行 / 3762 字符 / gb18030入口函数 @L78
1// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_eUICCMemoryReset_01_Error_eUICC_Memory_Reset_while_proactive_session_is_ongoing + TC_eUICC_ES10c_eUICCMemoryReset_02_Error_Nothing_to_delete (extracted verbatim)
2
3function TC_eUICC_ES10c_eUICCMemoryReset_01_Error_eUICC_Memory_Reset_while_proactive_session_is_ongoing()
4{
5	initial_condition_Start();
6	
7	initial_condition_Install_PROFILE_OPERATIONAL1();
8	initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1);
9	initial_condition_Install_PROFILE_OPERATIONAL2();
10	
11	tracenamestr = "测试目的:eUICC支持catBusy,主动式会话进行中时,执行eUICCMemoryReset";
12	curDis.TraceStart(sno++,tracenamestr);
13	
14	curLogicChannel = 0;
15	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
16	Ini_powerOn_eUICC_LPAe_not_activate();
17	
18	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
19	TS_MANAGE_CHANNEL_OPEN();
20	
21	curLogicChannel = 1;
22	
23	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
24	TS_SELECT("Select ISD",ISD_R_AID,"9000");
25		
26	curLogicChannel = 0;
27	var sSendType = SendTypeByOTA.SMS;
28	KIC = MNO_SCP80_ENC_KEY;
29	KID = MNO_SCP80_AUTH_KEY;
30	KIK = MNO_SCP80_DATA_ENC_KEY;
31	curDis.TestStepStart2(stno++,"SCP80,发送get status命令,使用MNO-SD的tar");
32	sAPDU = "80F28002024F0000";
33	SendMessageToCard_GP(sSendType,"91XX",0,"B20100","12210015",sAPDU);
34	HaveReEntry91XX = true;
35	var ss = obj.GetState();
36	ReEntry91XXLength = ss.substr(2,2);
37	
38	curLogicChannel = 1;
39	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Reset All Operational Profiles");
40	var euiMemoryResetRequest = new EuiccMemoryResetRequest();
41	euiMemoryResetRequest.resetOptions = "0780";
42	euiMemoryResetRequest.GenHexData();
43	var respData = LPAd_Transport_data_to_eUICC(euiMemoryResetRequest.hexData, "91", "00", "9000/91XX");
44	
45	curStrHandle.CheckData("BF3403800105", respData, "EuiccMemoryResetResponse");
46	
47	
48	curDis.TestStepStart2(stno++,"SCP80,发送Fetch命令,检查por");
49	curLogicChannel = 0;
50	CardSendMessageToServer(sSendType,1,"0161XX","00");
51
52	curDis.TestStepStart2(stno++,"SCP80,发送Terminal Response");
53	TerminalResponse("00","9000");
54	HaveReEntry91XX = false;
55	
56	curLogicChannel = 1;
57	
58	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILES_INFO_ALL;");
59	
60	var respData = LPAd_Transport_data_to_eUICC(RetrieveProfileInfoAll);
61	var resObj = new ProfileInfoListResponse();
62	resObj.checkCardResDataFormat(respData);
63	
64	var num = resObj.profileInfoListOk.arrOfElement.length;
65	
66	curStrHandle.CheckData("2", num.toString(), "ProfileInfo Num");
67	
68	if (num == 2)
69	{
70		check_PROFILE_INFO1(resObj.profileInfoListOk.arrOfElement[0]);
71		check_PROFILE_INFO2(resObj.profileInfoListOk.arrOfElement[1]);
72	}
73	
74	
75	RecoverCard();
76}
77
78function TC_eUICC_ES10c_eUICCMemoryReset_02_Error_Nothing_to_delete()
79{
80	initial_condition_Start();
81	
82	initial_condition_Set_SMDP_Address(TEST_DP_ADDRESS1);
83	
84	
85	tracenamestr = "测试目的:eUICC上没有下载profile,重置所有Operational Profile";
86	curDis.TraceStart(sno++,tracenamestr);
87	
88	curLogicChannel = 0;
89	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
90	Ini_powerOn_eUICC_LPAe_not_activate();
91	
92	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
93	TS_MANAGE_CHANNEL_OPEN();
94	
95	curLogicChannel = 1;
96	
97	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
98	TS_SELECT("Select ISD",ISD_R_AID,"9000");
99	
100	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Reset All Operational Profiles;");
101	var euiMemoryResetRequest = new EuiccMemoryResetRequest();
102	euiMemoryResetRequest.resetOptions = "0780";
103	euiMemoryResetRequest.GenHexData();
104	var respData = LPAd_Transport_data_to_eUICC(euiMemoryResetRequest.hexData);
105	
106	curStrHandle.CheckData("BF3403800101", respData, "EuiccMemoryResetResponse");
107	
108	
109	RecoverCard();
110}
111
-cas 盲生成TC_eUICC_ES10c_eUICCMemoryReset_ErrorCases/Import/TC_eUICC_ES10c_eUICCMemoryReset_ErrorCases.js154 行 / 11407 字符 / gb18030入口函数 @L14
1// Author: 卡思Cas智能体
2// Date: 20261004-143902
3// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10c.eUICCMemoryReset_ErrorCases,Test Sequence #01-#02 (Error: catBusy supported / Error: Nothing to delete),适用性 M/C038 (序列#01) / M (序列#02)。
4// Test points: IC1-IC1-K1-C1 ATR_present;IC1-IC1-K2-C2 FCP_Template;IC1-IC1-K2-C4 SW
5//   IC1-IC1-K3-C4 SW;IC1-IC1-K4-C4 final SW;IC2-IC2-K1-C4 SW;IC2-IC2-K1-C3 CHANNEL_NUMBER extracted
6//   IC2-IC2-K2-C4 SW;S3-C1 SW1 91;S5-C1 SW in 9000/91XX;S5-C2 resetResult catBusy;S7-C1 SW;S8-C1 SW
7//   S8-C2 contains PROFILE_INFO1;S8-C2 contains PROFILE_INFO2;IC9-IC1-K1-C1 ATR_present
8//   IC9-IC1-K2-C2 FCP_Template;IC9-IC1-K2-C4 SW;IC9-IC1-K3-C4 SW;IC9-IC1-K4-C4 final SW
9//   IC10-IC2-K1-C4 SW;IC10-IC2-K1-C3 CHANNEL_NUMBER extracted;IC10-IC2-K2-C4 SW;S11-C1 SW
10//   S11-C2 resetResult nothingToDelete
11// 本函数由 CaseIR 4.2.24.2.2 编译生成(fullwave-blindgen-live-70-W1-laneA5,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
12// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
13// 适用性 M/C038 (序列#01) / M (序列#02):编译期门,运行时由 harness 环境前置承担。
14function TC_eUICC_ES10c_eUICCMemoryReset_ErrorCases_01_02_merged() {
15    var bind = curBind;
16    // S1-IC 卡态编排:PROFILE_OPERATIONAL1 已安装且 Enabled;PROFILE_OPERATIONAL2 已安装且 Disabled: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
17    // S2-IC 卡态编排:eUICC 上未装载任何 Profile: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
18
19    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
20    var s12 = bind.resetAndAtr();
21    bind.checkData("IC1-IC1-K1-C1 ATR_present", "1", s12.atr_hex !== "" ? "1" : "0");
22
23    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
24    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
25    var s13 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
26    bind.checkData("IC1-IC1-K2-C2 FCP_Template", "1", s13.resp.length > 0 ? "1" : "0");
27    bind.checkData("IC1-IC1-K2-C4 SW", "9000", s13.sw);
28
29    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
30    var s14 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
31    bind.checkData("IC1-IC1-K3-C4 SW", "9000", s14.sw);
32
33    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
34    var steady15 = bind.runToSteadyState(function () {
35        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
36    });
37    bind.checkData("IC1-IC1-K4-C4 final SW", "9000", steady15.final.sw);
38
39    // IC ref inline @E 步骤 2(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
40    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
41    var s16 = bind.manageChannelOpen("9000");
42    bind.checkData("IC2-IC2-K1-C4 SW", "9000", s16.sw);
43    bind.checkData("IC2-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s16.chan !== null ? "1" : "0");
44
45    // IC ref inline @E 步骤 2(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
46    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
47    var s17 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
48    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
49    bind.checkData("IC2-IC2-K2-C4 SW", "9000", s17.sw);
50
51    // 步骤 3:IC3: MTD_SEND_SMS_PP(tc_step)
52    // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
53    // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
54    // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
55    var s3 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
56    bind.checkData("S3-C1 SW1 91", "91", s3.sw.substring(0, 2));
57
58    // 步骤 4:IC4: Do not send FETCH command(序列#01:保持 proactive session 挂起)(tc_step)
59    // FETCH header literals follow the golden wire evidence 8012 (same
60    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
61    // gives mechanism only). Le = pending length from the last 91XX
62    // (chain rule, binding-internal state).
63    var s4 = bind.fetchPending("80", "12", "00", "00", null);
64    // S4:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
65    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
66    var s4tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
67
68    // 步骤 5:MTD_STORE_DATA(tc_step;REQ: RQ57_165_1)
69    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
70    var sdCla5 = s16.chan !== null ? (s16.chan <= 3 ? 128 + s16.chan : 188 + s16.chan).toString(16).toUpperCase() : null;
71    var s5 = bind.sendApdu(sdCla5, "E2", "91", "00", "BF340482020780", "00", "9000/91XX");
72    bind.checkData("S5-C1 SW in 9000/91XX", "1", (s5.sw === "9000" || (s5.sw.substring(0, 2) === "91")) ? "1" : "0");
73    // es10x-proc-profile 响应面(TC_eUICC_ES10c.eUICCMemoryReset_ErrorCases,SGP.22 §5.7.15 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
74    var pw5 = BindEs10xProcProfile.walkChoiceList(s5.resp, {respTag: "BF34", okTag: "A0", errTag: "81"});
75    var r2w5 = BindGecaProc.parseGecaResponse(s5.resp, {outer: "BF34", required: ["02"]});
76    bind.checkData("S5-C2 resetResult catBusy", "05", (r2w5.ok && r2w5.fields["02"] === "05") ? "05" : (r2w5.fields["02"] || "absent"));
77
78    // 步骤 6:FETCH 'XX'(序列#01 步2:取回挂起的 proactive 命令)(tc_step)
79    // FETCH header literals follow the golden wire evidence 8012 (same
80    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
81    // gives mechanism only). Le = pending length from the last 91XX
82    // (chain rule, binding-internal state).
83    var s6 = bind.fetchPending("80", "12", "00", "00", null);
84    // S6-C1: binding:fetch_sms_por_runtime_parse(MTD_CHECK_SMS_POR;H-annexC1) (check_attestation)
85
86    // 步骤 7:TERMINAL RESPONSE(序列#01 步3)(tc_step)
87    // TERMINAL RESPONSE data is dynamically built by the binding from the
88    // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
89    // Header literals follow the golden wire evidence 8014.
90    var s7 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
91    bind.checkData("S7-C1 SW", "9000", s7.sw);
92
93    // 步骤 8:MTD_STORE_DATA(tc_step;REQ: RQ57_165)
94    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
95    var sdCla8 = s16.chan !== null ? (s16.chan <= 3 ? 128 + s16.chan : 188 + s16.chan).toString(16).toUpperCase() : null;
96    var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF2D00", "00", "9000");
97    bind.checkData("S8-C1 SW", "9000", s8.sw);
98    var r2p8 = BindEs10xProcProfile.walkChoiceList(s8.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
99    var r2has8_0 = false;
100    for (var r2i8_0 = 0; r2i8_0 < r2p8.elements.length; r2i8_0++) {
101        var f = r2p8.elements[r2i8_0].fields;
102        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has8_0 = true; break; }
103    }
104    bind.checkData("S8-C2 contains PROFILE_INFO1", "1", (r2p8.branch_tag === "A0" && r2has8_0) ? "1" : "0");
105    var r2has8_1 = false;
106    for (var r2i8_1 = 0; r2i8_1 < r2p8.elements.length; r2i8_1++) {
107        var f = r2p8.elements[r2i8_1].fields;
108        if (f["5A"] === "989209013254769810F9" && f["9F70"] === "00") { r2has8_1 = true; break; }
109    }
110    bind.checkData("S8-C2 contains PROFILE_INFO2", "1", (r2p8.branch_tag === "A0" && r2has8_1) ? "1" : "0");
111
112    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
113    var s18 = bind.resetAndAtr();
114    bind.checkData("IC9-IC1-K1-C1 ATR_present", "1", s18.atr_hex !== "" ? "1" : "0");
115
116    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
117    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
118    var s19 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
119    bind.checkData("IC9-IC1-K2-C2 FCP_Template", "1", s19.resp.length > 0 ? "1" : "0");
120    bind.checkData("IC9-IC1-K2-C4 SW", "9000", s19.sw);
121
122    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
123    var s20 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
124    bind.checkData("IC9-IC1-K3-C4 SW", "9000", s20.sw);
125
126    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
127    var steady21 = bind.runToSteadyState(function () {
128        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
129    });
130    bind.checkData("IC9-IC1-K4-C4 final SW", "9000", steady21.final.sw);
131
132    // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
133    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
134    var s22 = bind.manageChannelOpen("9000");
135    bind.checkData("IC10-IC2-K1-C4 SW", "9000", s22.sw);
136    bind.checkData("IC10-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s22.chan !== null ? "1" : "0");
137
138    // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
139    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
140    var s23 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
141    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
142    bind.checkData("IC10-IC2-K2-C4 SW", "9000", s23.sw);
143
144    // 步骤 11:MTD_STORE_DATA(tc_step;REQ: RQ57_163)
145    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
146    var sdCla11 = s22.chan !== null ? (s22.chan <= 3 ? 128 + s22.chan : 188 + s22.chan).toString(16).toUpperCase() : null;
147    var s11 = bind.sendApdu(sdCla11, "E2", "91", "00", "BF340482020780", "00", "9000");
148    bind.checkData("S11-C1 SW", "9000", s11.sw);
149    // es10x-proc-profile 响应面(TC_eUICC_ES10c.eUICCMemoryReset_ErrorCases,SGP.22 §5.7.15 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
150    var pw11 = BindEs10xProcProfile.walkChoiceList(s11.resp, {respTag: "BF34", okTag: "A0", errTag: "81"});
151    var r2w11 = BindGecaProc.parseGecaResponse(s11.resp, {outer: "BF34", required: ["02"]});
152    bind.checkData("S11-C2 resetResult nothingToDelete", "01", (r2w11.ok && r2w11.fields["02"] === "01") ? "01" : (r2w11.fields["02"] || "absent"));
153}
154

完整 unified diff

行级差异:新增 149 行 / 删除 106 行(以 -man 为基准,unified 上下文 3 行)。

展开 diff(263 行)
--- -man
+++ -cas
@@ -1,111 +1,154 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_eUICCMemoryReset_01_Error_eUICC_Memory_Reset_while_proactive_session_is_ongoing + TC_eUICC_ES10c_eUICCMemoryReset_02_Error_Nothing_to_delete (extracted verbatim)
+// Author: 卡思Cas智能体
+// Date: 20261004-143902
+// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10c.eUICCMemoryReset_ErrorCases,Test Sequence #01-#02 (Error: catBusy supported / Error: Nothing to delete),适用性 M/C038 (序列#01) / M (序列#02)。
+// Test points: IC1-IC1-K1-C1 ATR_present;IC1-IC1-K2-C2 FCP_Template;IC1-IC1-K2-C4 SW
+//   IC1-IC1-K3-C4 SW;IC1-IC1-K4-C4 final SW;IC2-IC2-K1-C4 SW;IC2-IC2-K1-C3 CHANNEL_NUMBER extracted
+//   IC2-IC2-K2-C4 SW;S3-C1 SW1 91;S5-C1 SW in 9000/91XX;S5-C2 resetResult catBusy;S7-C1 SW;S8-C1 SW
+//   S8-C2 contains PROFILE_INFO1;S8-C2 contains PROFILE_INFO2;IC9-IC1-K1-C1 ATR_present
+//   IC9-IC1-K2-C2 FCP_Template;IC9-IC1-K2-C4 SW;IC9-IC1-K3-C4 SW;IC9-IC1-K4-C4 final SW
+//   IC10-IC2-K1-C4 SW;IC10-IC2-K1-C3 CHANNEL_NUMBER extracted;IC10-IC2-K2-C4 SW;S11-C1 SW
+//   S11-C2 resetResult nothingToDelete
+// 本函数由 CaseIR 4.2.24.2.2 编译生成(fullwave-blindgen-live-70-W1-laneA5,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
+// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
+// 适用性 M/C038 (序列#01) / M (序列#02):编译期门,运行时由 harness 环境前置承担。
+function TC_eUICC_ES10c_eUICCMemoryReset_ErrorCases_01_02_merged() {
+    var bind = curBind;
+    // S1-IC 卡态编排:PROFILE_OPERATIONAL1 已安装且 Enabled;PROFILE_OPERATIONAL2 已安装且 Disabled: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // S2-IC 卡态编排:eUICC 上未装载任何 Profile: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
 
-function TC_eUICC_ES10c_eUICCMemoryReset_01_Error_eUICC_Memory_Reset_while_proactive_session_is_ongoing()
-{
-	initial_condition_Start();
-	
-	initial_condition_Install_PROFILE_OPERATIONAL1();
-	initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1);
-	initial_condition_Install_PROFILE_OPERATIONAL2();
-	
-	tracenamestr = "测试目的:eUICC支持catBusy,主动式会话进行中时,执行eUICCMemoryReset";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-		
-	curLogicChannel = 0;
-	var sSendType = SendTypeByOTA.SMS;
-	KIC = MNO_SCP80_ENC_KEY;
-	KID = MNO_SCP80_AUTH_KEY;
-	KIK = MNO_SCP80_DATA_ENC_KEY;
-	curDis.TestStepStart2(stno++,"SCP80,发送get status命令,使用MNO-SD的tar");
-	sAPDU = "80F28002024F0000";
-	SendMessageToCard_GP(sSendType,"91XX",0,"B20100","12210015",sAPDU);
-	HaveReEntry91XX = true;
-	var ss = obj.GetState();
-	ReEntry91XXLength = ss.substr(2,2);
-	
-	curLogicChannel = 1;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Reset All Operational Profiles");
-	var euiMemoryResetRequest = new EuiccMemoryResetRequest();
-	euiMemoryResetRequest.resetOptions = "0780";
-	euiMemoryResetRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(euiMemoryResetRequest.hexData, "91", "00", "9000/91XX");
-	
-	curStrHandle.CheckData("BF3403800105", respData, "EuiccMemoryResetResponse");
-	
-	
-	curDis.TestStepStart2(stno++,"SCP80,发送Fetch命令,检查por");
-	curLogicChannel = 0;
-	CardSendMessageToServer(sSendType,1,"0161XX","00");
+    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s12 = bind.resetAndAtr();
+    bind.checkData("IC1-IC1-K1-C1 ATR_present", "1", s12.atr_hex !== "" ? "1" : "0");
 
-	curDis.TestStepStart2(stno++,"SCP80,发送Terminal Response");
-	TerminalResponse("00","9000");
-	HaveReEntry91XX = false;
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILES_INFO_ALL;");
-	
-	var respData = LPAd_Transport_data_to_eUICC(RetrieveProfileInfoAll);
-	var resObj = new ProfileInfoListResponse();
-	resObj.checkCardResDataFormat(respData);
-	
-	var num = resObj.profileInfoListOk.arrOfElement.length;
-	
-	curStrHandle.CheckData("2", num.toString(), "ProfileInfo Num");
-	
-	if (num == 2)
-	{
-		check_PROFILE_INFO1(resObj.profileInfoListOk.arrOfElement[0]);
-		check_PROFILE_INFO2(resObj.profileInfoListOk.arrOfElement[1]);
-	}
-	
-	
-	RecoverCard();
-}
+    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s13 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC1-IC1-K2-C2 FCP_Template", "1", s13.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC1-IC1-K2-C4 SW", "9000", s13.sw);
 
-function TC_eUICC_ES10c_eUICCMemoryReset_02_Error_Nothing_to_delete()
-{
-	initial_condition_Start();
-	
-	initial_condition_Set_SMDP_Address(TEST_DP_ADDRESS1);
-	
-	
-	tracenamestr = "测试目的:eUICC上没有下载profile,重置所有Operational Profile";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Reset All Operational Profiles;");
-	var euiMemoryResetRequest = new EuiccMemoryResetRequest();
-	euiMemoryResetRequest.resetOptions = "0780";
-	euiMemoryResetRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(euiMemoryResetRequest.hexData);
-	
-	curStrHandle.CheckData("BF3403800101", respData, "EuiccMemoryResetResponse");
-	
-	
-	RecoverCard();
+    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s14 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC1-IC1-K3-C4 SW", "9000", s14.sw);
+
+    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady15 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC1-IC1-K4-C4 final SW", "9000", steady15.final.sw);
+
+    // IC ref inline @E 步骤 2(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s16 = bind.manageChannelOpen("9000");
+    bind.checkData("IC2-IC2-K1-C4 SW", "9000", s16.sw);
+    bind.checkData("IC2-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s16.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 2(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s17 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("IC2-IC2-K2-C4 SW", "9000", s17.sw);
+
+    // 步骤 3:IC3: MTD_SEND_SMS_PP(tc_step)
+    // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
+    // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
+    // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
+    var s3 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
+    bind.checkData("S3-C1 SW1 91", "91", s3.sw.substring(0, 2));
+
+    // 步骤 4:IC4: Do not send FETCH command(序列#01:保持 proactive session 挂起)(tc_step)
+    // FETCH header literals follow the golden wire evidence 8012 (same
+    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+    // gives mechanism only). Le = pending length from the last 91XX
+    // (chain rule, binding-internal state).
+    var s4 = bind.fetchPending("80", "12", "00", "00", null);
+    // S4:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+    var s4tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+    // 步骤 5:MTD_STORE_DATA(tc_step;REQ: RQ57_165_1)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla5 = s16.chan !== null ? (s16.chan <= 3 ? 128 + s16.chan : 188 + s16.chan).toString(16).toUpperCase() : null;
+    var s5 = bind.sendApdu(sdCla5, "E2", "91", "00", "BF340482020780", "00", "9000/91XX");
+    bind.checkData("S5-C1 SW in 9000/91XX", "1", (s5.sw === "9000" || (s5.sw.substring(0, 2) === "91")) ? "1" : "0");
+    // es10x-proc-profile 响应面(TC_eUICC_ES10c.eUICCMemoryReset_ErrorCases,SGP.22 §5.7.15 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var pw5 = BindEs10xProcProfile.walkChoiceList(s5.resp, {respTag: "BF34", okTag: "A0", errTag: "81"});
+    var r2w5 = BindGecaProc.parseGecaResponse(s5.resp, {outer: "BF34", required: ["02"]});
+    bind.checkData("S5-C2 resetResult catBusy", "05", (r2w5.ok && r2w5.fields["02"] === "05") ? "05" : (r2w5.fields["02"] || "absent"));
+
+    // 步骤 6:FETCH 'XX'(序列#01 步2:取回挂起的 proactive 命令)(tc_step)
+    // FETCH header literals follow the golden wire evidence 8012 (same
+    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+    // gives mechanism only). Le = pending length from the last 91XX
+    // (chain rule, binding-internal state).
+    var s6 = bind.fetchPending("80", "12", "00", "00", null);
+    // S6-C1: binding:fetch_sms_por_runtime_parse(MTD_CHECK_SMS_POR;H-annexC1) (check_attestation)
+
+    // 步骤 7:TERMINAL RESPONSE(序列#01 步3)(tc_step)
+    // TERMINAL RESPONSE data is dynamically built by the binding from the
+    // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
+    // Header literals follow the golden wire evidence 8014.
+    var s7 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+    bind.checkData("S7-C1 SW", "9000", s7.sw);
+
+    // 步骤 8:MTD_STORE_DATA(tc_step;REQ: RQ57_165)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla8 = s16.chan !== null ? (s16.chan <= 3 ? 128 + s16.chan : 188 + s16.chan).toString(16).toUpperCase() : null;
+    var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF2D00", "00", "9000");
+    bind.checkData("S8-C1 SW", "9000", s8.sw);
+    var r2p8 = BindEs10xProcProfile.walkChoiceList(s8.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    var r2has8_0 = false;
+    for (var r2i8_0 = 0; r2i8_0 < r2p8.elements.length; r2i8_0++) {
+        var f = r2p8.elements[r2i8_0].fields;
+        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has8_0 = true; break; }
+    }
+    bind.checkData("S8-C2 contains PROFILE_INFO1", "1", (r2p8.branch_tag === "A0" && r2has8_0) ? "1" : "0");
+    var r2has8_1 = false;
+    for (var r2i8_1 = 0; r2i8_1 < r2p8.elements.length; r2i8_1++) {
+        var f = r2p8.elements[r2i8_1].fields;
+        if (f["5A"] === "989209013254769810F9" && f["9F70"] === "00") { r2has8_1 = true; break; }
+    }
+    bind.checkData("S8-C2 contains PROFILE_INFO2", "1", (r2p8.branch_tag === "A0" && r2has8_1) ? "1" : "0");
+
+    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s18 = bind.resetAndAtr();
+    bind.checkData("IC9-IC1-K1-C1 ATR_present", "1", s18.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s19 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC9-IC1-K2-C2 FCP_Template", "1", s19.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC9-IC1-K2-C4 SW", "9000", s19.sw);
+
+    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s20 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC9-IC1-K3-C4 SW", "9000", s20.sw);
+
+    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady21 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC9-IC1-K4-C4 final SW", "9000", steady21.final.sw);
+
+    // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s22 = bind.manageChannelOpen("9000");
+    bind.checkData("IC10-IC2-K1-C4 SW", "9000", s22.sw);
+    bind.checkData("IC10-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s22.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s23 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("IC10-IC2-K2-C4 SW", "9000", s23.sw);
+
+    // 步骤 11:MTD_STORE_DATA(tc_step;REQ: RQ57_163)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla11 = s22.chan !== null ? (s22.chan <= 3 ? 128 + s22.chan : 188 + s22.chan).toString(16).toUpperCase() : null;
+    var s11 = bind.sendApdu(sdCla11, "E2", "91", "00", "BF340482020780", "00", "9000");
+    bind.checkData("S11-C1 SW", "9000", s11.sw);
+    // es10x-proc-profile 响应面(TC_eUICC_ES10c.eUICCMemoryReset_ErrorCases,SGP.22 §5.7.15 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var pw11 = BindEs10xProcProfile.walkChoiceList(s11.resp, {respTag: "BF34", okTag: "A0", errTag: "81"});
+    var r2w11 = BindGecaProc.parseGecaResponse(s11.resp, {outer: "BF34", required: ["02"]});
+    bind.checkData("S11-C2 resetResult nothingToDelete", "01", (r2w11.ok && r2w11.fields["02"] === "01") ? "01" : (r2w11.fields["02"] || "absent"));
 }