import { describe, it, expect } from 'vitest' import * as stringUtils from '../src/string' describe('字符串处理工具函数测试', () => { describe('urlToObject', () => { it('应当正确解析URL参数', () => { const url = 'https://example.com/path?name=test&age=25&type=user' const result = stringUtils.urlToObject(url) expect(result).toEqual({ name: 'test', age: '25', type: 'user', }) }) it('应当正确处理空参数', () => { const url = 'https://example.com/path' const result = stringUtils.urlToObject(url) expect(result).toEqual({}) }) it('应当正确处理特殊字符', () => { const url = 'https://example.com/path?name=test%20name&email=test%40example.com' const result = stringUtils.urlToObject(url) expect(result).toEqual({ name: 'test name', email: 'test@example.com', }) }) }) describe('htmlEscape', () => { it('应当正确转义HTML字符', () => { const html = '
Hello & World
' const escaped = stringUtils.htmlEscape(html) expect(escaped).toBe('<div class="test">Hello & World</div>') }) it('应当正确反转义HTML字符', () => { const escaped = '<div class="test">Hello & World</div>' const unescaped = stringUtils.htmlEscape(escaped, true) expect(unescaped).toBe('
Hello & World
') }) }) describe('驼峰和下划线转换', () => { describe('camelToUnderline', () => { it('应当正确将小驼峰转换为下划线', () => { expect(stringUtils.camelToUnderline('userName')).toBe('user_name') expect(stringUtils.camelToUnderline('userFirstName')).toBe('user_first_name') }) }) describe('underlineToCamel', () => { it('应当正确将下划线转换为小驼峰', () => { expect(stringUtils.underlineToCamel('user_name')).toBe('userName') expect(stringUtils.underlineToCamel('user_first_name')).toBe('userFirstName') }) }) describe('underlineToBigCamel', () => { it('应当正确将下划线转换为大驼峰', () => { expect(stringUtils.underlineToBigCamel('user_name')).toBe('userName') expect(stringUtils.underlineToBigCamel('user_first_name')).toBe('userFirstName') }) }) describe('bigCamelToUnderline', () => { it('应当正确将大驼峰转换为下划线', () => { expect(stringUtils.bigCamelToUnderline('UserName')).toBe('_user_name') expect(stringUtils.bigCamelToUnderline('UserFirstName')).toBe('_user_first_name') }) }) }) })