eSIM RSP 测试用例对比站

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

源码对照:5.2.4.2.1

默认文件系统 / TC_eUICC_Default_FileSystem

左侧为人工切片入口(-man,来自 原料/切片 的最小可执行脚本),右侧为 Cas 盲生成入口(-cas,仅依据规范生成)。文件按原始编码(多为 GBK)解码为 UTF-8 显示,行号自 1 起;字节级原文与 sha256 见两侧脚本包。完整 unified diff 见本页底部折叠区,以及 报告原文 §4。
-man 入口
Import/TestCase_SGP_23.js
23 行 / 676 字符 / gb18030
-cas 入口
TC_eUICC_Default_FileSystem/Import/TC_eUICC_Default_FileSystem.js
49 行 / 3665 字符 / gb18030
默认折行显示长行;取消勾选可横向滚动查看原始行宽
-man 人工切片Import/TestCase_SGP_23.js23 行 / 676 字符 / gb18030入口函数 @L3
1// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_Default_FileSystem_01_Nominal_Default_file_system_available (extracted verbatim)
2
3function TC_eUICC_Default_FileSystem_01_Nominal_Default_file_system_available()
4{
5	
6	tracenamestr = "验证卡内没有profile时,存在默认文件系统的测试";
7	curDis.TraceStart(sno++,tracenamestr);
8	
9	curLogicChannel = 0;
10	curDis.TestStepStart2(stno++,"复位;");
11	ResetCard();
12	
13	curDis.TestStepStart2(stno++,"选择MF;");
14	check_eUICC_support_TERMINAL_CAPABILITY_cmd();
15	
16	curDis.TestStepStart2(stno++,"发送TERMINAL CAPABILITY命令;");
17	TS_TERMINAL_CAPABILITY_cmd();
18	
19	curDis.TestStepStart2(stno++,"发送TERMINAL PROFILE命令;");
20	IniCard_SetUpMenu("",1);
21	
22}
23
-cas 盲生成TC_eUICC_Default_FileSystem/Import/TC_eUICC_Default_FileSystem.js49 行 / 3665 字符 / gb18030入口函数 @L12
1// Author: 卡思Cas智能体
2// Date: 20261004-022947
3// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_Default_FileSystem,Test Sequence #01 Nominal: Default file system available(本 TC 单条 Test Sequence),适用性 M。
4// Test points: S1-C1 ATR_present;S1-C1 T15_present;S1-C1 first_tB_after_T15;S1-C2 tB_b2
5//   S2-C1 FCP_Template;S2-C2 tag_87_in_A5;S2-C2 87_low_byte;S2-C3 SW;S3-C1 SW;S4-C3 final SW
6//   S4-C2 refresh_uicc_reset_mode
7// 本函数由 CaseIR 5.2.4.2.1 编译生成(5.2.4.2.1-TC_eUICC_Default_FileSystem-20261004_022947,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
8// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
9// 适用性 M:编译期门,运行时由 harness 环境前置承担。
10// PRECONDITION (declared, NOT compiled): initial_conditions 缺语料过程体(Annex C.2 absent from input package, corpus vacuum): IC 序列属测试工具/卡态编排责任,本脚本不虚构初始化步骤;语义影响见 CaseIR open_items。
11// IC1 卡态声明(E 段 General Initial Conditions,编排责任):There is no Profile installed in the eUICC.: declared unexpanded (no fabricated bytes; provenance = expansion_source).
12function TC_eUICC_Default_FileSystem_01_merged() {
13    var bind = curBind;
14
15    // 步骤 1:RESET(tc_step;REQ: RQ34_003, RQ34_004_1)
16    var s1 = bind.resetAndAtr();
17    bind.checkData("S1-C1 ATR_present", "1", s1.atr_hex !== "" ? "1" : "0");
18    bind.checkData("S1-C1 T15_present", "present", s1.atr_parse.t15_round !== null ? "present" : "absent");
19    bind.checkData("S1-C1 first_tB_after_T15", "present", s1.atr_parse.first_tbi_after_t15 !== null ? "present" : "absent");
20    bind.checkData("S1-C2 tB_b2", "1", s1.atr_parse.euicc_b2.present ? String(s1.atr_parse.euicc_b2.b2) : "absent:" + s1.atr_parse.euicc_b2.reason);
21
22    // 步骤 2:SELECT_MF(tc_step;REQ: RQ34_010, RQ34_011, RQ34_005_1, RQ34_003, RQ34_004_1)
23    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
24    var s2 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
25    bind.checkData("S2-C1 FCP_Template", "1", s2.resp.length > 0 ? "1" : "0");
26    var a5p2S2C2 = s2.resp.indexOf("A5");
27    var t872S2C2 = a5p2S2C2 >= 0 ? s2.resp.substring(a5p2S2C2).indexOf("870101") : -1;
28    bind.checkData("S2-C2 tag_87_in_A5", "present", t872S2C2 >= 0 ? "present" : "absent");
29    bind.checkData("S2-C2 87_low_byte", "01", t872S2C2 >= 0 ? s2.resp.substring(a5p2S2C2 + t872S2C2 + 4, a5p2S2C2 + t872S2C2 + 6) : "absent");
30    bind.checkData("S2-C3 SW", "9000", s2.sw);
31
32    // 步骤 3:TERMINAL_CAPABILITY_LPAd(tc_step;REQ: RQ34_005_1, RQ34_003, RQ34_004_1)
33    var s3 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
34    bind.checkData("S3-C1 SW", "9000", s3.sw);
35
36    // 步骤 4:TERMINAL_PROFILE(tc_step;REQ: RQ34_003, RQ34_004_1)
37    var tp4 = null;
38    var steady4 = bind.runToSteadyState(function () {
39        tp4 = bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000/91XX");
40        return tp4;
41    });
42    bind.checkData("S4-C3 final SW", "9000", steady4.final.sw);
43    bind.checkData("S4-C2 refresh_uicc_reset_mode", "supported", tp4.cmd.substring(14, 16) == "FF" ? "supported" : "absent");
44    // S4-C1: 'interim_SW' structurally guaranteed by runToSteadyState (binding layer unit 4, chaining rule).
45    // S4-C1: 'fetch_issued' structurally guaranteed by runToSteadyState (binding layer unit 4, chaining rule).
46    // S4-C1: 'terminal_response' structurally guaranteed by runToSteadyState (binding layer unit 4, chaining rule).
47    // S4-C1: binding:runToSteadyState_structural(chaining-rule) (check_attestation)
48}
49

完整 unified diff

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

展开 diff(72 行)
--- -man
+++ -cas
@@ -1,23 +1,49 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_Default_FileSystem_01_Nominal_Default_file_system_available (extracted verbatim)
+// Author: 卡思Cas智能体
+// Date: 20261004-022947
+// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_Default_FileSystem,Test Sequence #01 Nominal: Default file system available(本 TC 单条 Test Sequence),适用性 M。
+// Test points: S1-C1 ATR_present;S1-C1 T15_present;S1-C1 first_tB_after_T15;S1-C2 tB_b2
+//   S2-C1 FCP_Template;S2-C2 tag_87_in_A5;S2-C2 87_low_byte;S2-C3 SW;S3-C1 SW;S4-C3 final SW
+//   S4-C2 refresh_uicc_reset_mode
+// 本函数由 CaseIR 5.2.4.2.1 编译生成(5.2.4.2.1-TC_eUICC_Default_FileSystem-20261004_022947,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:编译期门,运行时由 harness 环境前置承担。
+// PRECONDITION (declared, NOT compiled): initial_conditions 缺语料过程体(Annex C.2 absent from input package, corpus vacuum): IC 序列属测试工具/卡态编排责任,本脚本不虚构初始化步骤;语义影响见 CaseIR open_items。
+// IC1 卡态声明(E 段 General Initial Conditions,编排责任):There is no Profile installed in the eUICC.: declared unexpanded (no fabricated bytes; provenance = expansion_source).
+function TC_eUICC_Default_FileSystem_01_merged() {
+    var bind = curBind;
 
-function TC_eUICC_Default_FileSystem_01_Nominal_Default_file_system_available()
-{
-	
-	tracenamestr = "验证卡内没有profile时,存在默认文件系统的测试";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"复位;");
-	ResetCard();
-	
-	curDis.TestStepStart2(stno++,"选择MF;");
-	check_eUICC_support_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart2(stno++,"发送TERMINAL CAPABILITY命令;");
-	TS_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart2(stno++,"发送TERMINAL PROFILE命令;");
-	IniCard_SetUpMenu("",1);
-	
+    // 步骤 1:RESET(tc_step;REQ: RQ34_003, RQ34_004_1)
+    var s1 = bind.resetAndAtr();
+    bind.checkData("S1-C1 ATR_present", "1", s1.atr_hex !== "" ? "1" : "0");
+    bind.checkData("S1-C1 T15_present", "present", s1.atr_parse.t15_round !== null ? "present" : "absent");
+    bind.checkData("S1-C1 first_tB_after_T15", "present", s1.atr_parse.first_tbi_after_t15 !== null ? "present" : "absent");
+    bind.checkData("S1-C2 tB_b2", "1", s1.atr_parse.euicc_b2.present ? String(s1.atr_parse.euicc_b2.b2) : "absent:" + s1.atr_parse.euicc_b2.reason);
+
+    // 步骤 2:SELECT_MF(tc_step;REQ: RQ34_010, RQ34_011, RQ34_005_1, RQ34_003, RQ34_004_1)
+    // 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 s2 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("S2-C1 FCP_Template", "1", s2.resp.length > 0 ? "1" : "0");
+    var a5p2S2C2 = s2.resp.indexOf("A5");
+    var t872S2C2 = a5p2S2C2 >= 0 ? s2.resp.substring(a5p2S2C2).indexOf("870101") : -1;
+    bind.checkData("S2-C2 tag_87_in_A5", "present", t872S2C2 >= 0 ? "present" : "absent");
+    bind.checkData("S2-C2 87_low_byte", "01", t872S2C2 >= 0 ? s2.resp.substring(a5p2S2C2 + t872S2C2 + 4, a5p2S2C2 + t872S2C2 + 6) : "absent");
+    bind.checkData("S2-C3 SW", "9000", s2.sw);
+
+    // 步骤 3:TERMINAL_CAPABILITY_LPAd(tc_step;REQ: RQ34_005_1, RQ34_003, RQ34_004_1)
+    var s3 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("S3-C1 SW", "9000", s3.sw);
+
+    // 步骤 4:TERMINAL_PROFILE(tc_step;REQ: RQ34_003, RQ34_004_1)
+    var tp4 = null;
+    var steady4 = bind.runToSteadyState(function () {
+        tp4 = bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000/91XX");
+        return tp4;
+    });
+    bind.checkData("S4-C3 final SW", "9000", steady4.final.sw);
+    bind.checkData("S4-C2 refresh_uicc_reset_mode", "supported", tp4.cmd.substring(14, 16) == "FF" ? "supported" : "absent");
+    // S4-C1: 'interim_SW' structurally guaranteed by runToSteadyState (binding layer unit 4, chaining rule).
+    // S4-C1: 'fetch_issued' structurally guaranteed by runToSteadyState (binding layer unit 4, chaining rule).
+    // S4-C1: 'terminal_response' structurally guaranteed by runToSteadyState (binding layer unit 4, chaining rule).
+    // S4-C1: binding:runToSteadyState_structural(chaining-rule) (check_attestation)
 }