import test from 'node:test'; import assert from 'node:assert/strict'; import {readFileSync} from 'node:fs'; import {runInNewContext} from 'node:vm'; import {validateProfileAuth} from '../../YouleNexus/assets/framework/presentation/profile-auth.ts'; const root=new URL('../../../projects/Game_Surface_3/js/00_Surface/',import.meta.url); const source=readFileSync(new URL('05_Func.js',root),'utf8'); const districts=readFileSync(new URL('03_Banwords.js',root),'utf8'); const context:any={}; runInNewContext(districts.slice(districts.indexOf('var GB2260 ='),districts.indexOf(';',districts.indexOf('var GB2260 ='))+1) +source.slice(source.indexOf('var IDValidator ='),source.indexOf('Func.subString ='))+';validator=new IDValidator();',context); test('auth follows source name check and known checksum outcomes',()=>{ assert.equal(validateProfileAuth('张','11010519491231002X'),'name'); assert.equal(validateProfileAuth('测试','11010519491231002X'),null); assert.equal(validateProfileAuth('测试','11010519491231002x'),null); assert.equal(validateProfileAuth('测试','110105194912310020'),'id'); assert.equal(validateProfileAuth('测试',''),'id'); assert.equal(validateProfileAuth('测试','110105491231002'),null); }); test('ID validation matches the original validator including legacy date and address semantics',()=>{ const ids=['','11010519491231002X','110105194912310020','110105491231002','110105491332002','999999491231002', '110199491231002','110105490231002','110105490000002','11010549aa31abc',' 11010519491231002X','11010519491231002X ']; for(const base of ['11010519491231002X','110105491231002'])for(let i=0;i