/*
* test_entity.cj - 实体映射测试
*/
package tybb2026::tycj_orm
import std.unittest.*
// ============================================================================
// 实体元数据测试
// ============================================================================
@test
func testEntityMetadataBasic(): Unit {
let metadata = EntityMetadata(tableName: "users")
assert(metadata.tableName == "users")
assert(metadata.fieldMappings.isEmpty())
assert(metadata.idField == "")
}
@test
func testAddFieldMapping(): Unit {
let metadata = EntityMetadata(tableName: "users")
metadata.addFieldMapping("userName", "user_name")
metadata.addFieldMapping("email", "email_address")
assert(metadata.fieldMappings.size == 2)
}
@test
func testGetColumnName(): Unit {
let metadata = EntityMetadata(tableName: "users")
metadata.addFieldMapping("userName", "user_name")
let colOpt = metadata.getColumnName("userName")
assert(colOpt.isSome())
match (colOpt) {
case Some(col) => assert(col == "user_name")
case None => assert(false)
}
let notFoundOpt = metadata.getColumnName("nonExistent")
assert(notFoundOpt.isNone())
}
@test
func testGetFieldNames(): Unit {
let metadata = EntityMetadata(tableName: "users")
metadata.addFieldMapping("userName", "user_name")
metadata.addFieldMapping("email", "email_address")
let fields = metadata.getFieldNames()
assert(fields.size == 2)
}
@test
func testGetColumnNames(): Unit {
let metadata = EntityMetadata(tableName: "users")
metadata.addFieldMapping("userName", "user_name")
metadata.addFieldMapping("email", "email_address")
let columns = metadata.getColumnNames()
assert(columns.size == 2)
}
// ============================================================================
// 注解测试
// ============================================================================
@test
func testEntityAnnotation(): Unit {
// Entity 是一个抽象类,用于标记实体
// 这里主要验证类存在且可以实例化(虽然不能直接实例化抽象类)
assert(true) // 如果能编译通过,说明注解定义正确
}
@test
func testTableAnnotation(): Unit {
let table = Table(name: "users")
assert(table.name == "users")
}
@test
func testColumnAnnotation(): Unit {
let column = Column(name: "user_name")
assert(column.name == "user_name")
}
@test
func testIdAnnotation(): Unit {
// Id 是一个抽象类,用于标记主键
assert(true) // 如果能编译通过,说明注解定义正确
}
@test
func testTransientAnnotation(): Unit {
// Transient 是一个抽象类,用于标记非持久化字段
assert(true) // 如果能编译通过,说明注解定义正确
}