Files
akmon/pages/info/test-utils.uts
2026-01-20 08:04:15 +08:00

259 lines
7.9 KiB
Plaintext

// 测试工具函数 - 验证多语言AI资讯系统各组件功能
// 严格遵循 UTS Android 开发规范
import type {
InfoContent,
TranslationData,
CategoryData,
ChatMessageData,
UserSettingsData,
PageState
} from './types.uts'
import {
getContentId,
getContentTitle,
getContentSummary,
getContentContent,
getContentAuthor,
getContentPublishedAt,
getContentQualityScore,
getContentViewCount,
getContentLikeCount,
getContentShareCount,
getContentOriginalLanguage,
getContentSourceUrl,
getContentTags,
formatDateTime,
formatRelativeTime,
getQualityScoreText,
getQualityScoreColor,
CATEGORIES,
LANGUAGES,
SORT_OPTIONS,
DEFAULT_PAGE_SIZE
} from './types.uts'
// 测试数据生成器
export const createMockContent = (): InfoContent => {
const content: InfoContent = {}
content.set('id', `content_${Date.now()}`)
content.set('title', 'AI技术发展趋势分析')
content.set('content', '人工智能技术正在快速发展...')
content.set('summary', '本文分析了AI技术的最新发展趋势')
content.set('author', 'AI研究院')
content.set('published_at', new Date().toISOString())
content.set('quality_score', 0.85)
content.set('view_count', 1250)
content.set('like_count', 89)
content.set('share_count', 23)
content.set('original_language', 'zh-CN')
content.set('source_url', 'https://example.com/ai-trends')
content.set('tags', ['人工智能', '机器学习', '深度学习'])
return content
}
export const createMockTranslation = (): TranslationData => {
const translation: TranslationData = {}
translation.set('id', `trans_${Date.now()}`)
translation.set('content_id', 'content_123')
translation.set('language_id', 'en-US')
translation.set('title', 'AI Technology Development Trends Analysis')
translation.set('content', 'Artificial intelligence technology is rapidly developing...')
translation.set('summary', 'This article analyzes the latest AI development trends')
translation.set('human_verified', true)
translation.set('quality_score', 0.82)
translation.set('created_at', new Date().toISOString())
return translation
}
export const createMockCategory = (): CategoryData => {
const category: CategoryData = {}
category.set('id', `cat_${Date.now()}`)
category.set('name_key', 'technology')
category.set('display_order', 1)
category.set('is_active', true)
category.set('icon', '')
category.set('color', '#3b82f6')
return category
}
export const createMockChatMessage = (type: string): ChatMessageData => {
const message: ChatMessageData = {}
message.set('id', `msg_${Date.now()}`)
message.set('session_id', 'session_123')
message.set('type', type) // 'user' | 'assistant'
message.set('content', type === 'user' ? '请推荐一些AI相关的资讯' : '为您推荐以下AI相关资讯...')
message.set('created_at', new Date().toISOString())
message.set('metadata', {})
return message
}
export const createMockUserSettings = (): UserSettingsData => {
const settings: UserSettingsData = {}
settings.set('user_id', 'user_123')
settings.set('interface_language', 'zh-CN')
settings.set('preferred_languages', ['zh-CN', 'en-US'])
settings.set('preferred_categories', ['technology', 'science'])
settings.set('auto_translate', true)
settings.set('notification_enabled', true)
settings.set('reading_mode', 'normal')
settings.set('font_size', 'medium')
settings.set('theme', 'light')
return settings
}
// 验证函数
export const validateContentData = (content: InfoContent): boolean => {
try {
// 验证必需字段
const id = getContentId(content)
const title = getContentTitle(content)
const contentText = getContentContent(content)
const author = getContentAuthor(content)
const publishedAt = getContentPublishedAt(content)
if (id === '' || title === '' || contentText === '' || author === '' || publishedAt === '') {
console.error('Content validation failed: missing required fields')
return false
}
// 验证数值字段
const qualityScore = getContentQualityScore(content)
const viewCount = getContentViewCount(content)
const likeCount = getContentLikeCount(content)
const shareCount = getContentShareCount(content)
if (qualityScore < 0 || qualityScore > 1) {
console.error('Content validation failed: invalid quality_score')
return false
}
if (viewCount < 0 || likeCount < 0 || shareCount < 0) {
console.error('Content validation failed: invalid count values')
return false
}
// 验证标签数组
const tags = getContentTags(content)
if (tags.length > 10) {
console.error('Content validation failed: too many tags')
return false
}
return true
} catch (error) {
console.error('Content validation error:', error)
return false
}
}
export const validateTranslationData = (translation: TranslationData): boolean => {
try {
const id = translation.get('id') as string
const contentId = translation.get('content_id') as string
const languageId = translation.get('language_id') as string
const title = translation.get('title') as string
const content = translation.get('content') as string
if (id === '' || contentId === '' || languageId === '' || title === '' || content === '') {
console.error('Translation validation failed: missing required fields')
return false
}
return true
} catch (error) {
console.error('Translation validation error:', error)
return false
}
}
// 性能测试函数
export const performanceTest = () => {
console.log('开始性能测试...')
const startTime = Date.now()
// 创建大量测试数据
const contents: Array<InfoContent> = []
for (let i: Int = 0; i < 1000; i++) {
contents.push(createMockContent())
}
// 测试数据处理速度
let validCount: Int = 0
for (let i: Int = 0; i < contents.length; i++) {
const content = contents[i]
if (validateContentData(content)) {
validCount++
}
}
const endTime = Date.now()
const duration = endTime - startTime
console.log(`性能测试完成:`)
console.log(`- 处理数据量: ${contents.length}`)
console.log(`- 有效数据: ${validCount}`)
console.log(`- 耗时: ${duration}ms`)
console.log(`- 平均处理速度: ${contents.length / duration * 1000}条/秒`)
}
// 功能测试函数
export const functionalTest = () => {
console.log('开始功能测试...')
// 测试内容数据处理
const mockContent = createMockContent()
console.log('✓ 内容数据创建成功')
const isValidContent = validateContentData(mockContent)
console.log(`✓ 内容数据验证: ${isValidContent ? '通过' : '失败'}`)
// 测试翻译数据处理
const mockTranslation = createMockTranslation()
console.log('✓ 翻译数据创建成功')
const isValidTranslation = validateTranslationData(mockTranslation)
console.log(`✓ 翻译数据验证: ${isValidTranslation ? '通过' : '失败'}`)
// 测试分类数据处理
const mockCategory = createMockCategory()
console.log('✓ 分类数据创建成功')
// 测试聊天消息处理
const mockUserMessage = createMockChatMessage('user')
const mockAssistantMessage = createMockChatMessage('assistant')
console.log('✓ 聊天消息创建成功')
// 测试用户设置处理
const mockSettings = createMockUserSettings()
console.log('✓ 用户设置创建成功')
// 测试工具函数
const testDateTime = new Date().toISOString()
const formattedDateTime = formatDateTime(testDateTime)
const relativeTime = formatRelativeTime(testDateTime)
console.log(`✓ 时间格式化测试: ${formattedDateTime}, ${relativeTime}`)
const qualityScore = 0.85
const qualityText = getQualityScoreText(qualityScore)
const qualityColor = getQualityScoreColor(qualityScore)
console.log(`✓ 质量分数测试: ${qualityText}, ${qualityColor}`)
console.log('功能测试完成!')
}
// 集成测试函数
export const runAllTests = () => {
console.log('=== 多语言AI资讯系统测试开始 ===')
try {
functionalTest()
performanceTest()
console.log('=== 所有测试通过 ===')
} catch (error) {
console.error('=== 测试失败 ===', error)
}
}