Initial commit of akmon project
This commit is contained in:
258
pages/info/test-utils.uts
Normal file
258
pages/info/test-utils.uts
Normal file
@@ -0,0 +1,258 @@
|
||||
// 测试工具函数 - 验证多语言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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user