test: 新增三级继承用例(三层全标 @SerializerParent)

- threeLevelAllMacro:爷/父/子 每层字段都导出、反序列化全部回填
- threeLevelFieldSeparation:三层字段互不遮蔽、互不覆盖
- 新增模型 GrandAll → MidAll → LeafAll(每层标宏)
- 18 用例全绿
This commit is contained in:
2026-08-17 14:12:07 +08:00
parent f66b7805ab
commit b7301f9fa8
+56
View File
@@ -70,6 +70,22 @@ class LeafChild <: MidParent {
public init() {} public init() {}
} }
// 三级继承(全标宏):爷 → 父 → 子 每层都标注 @SerializerParent
@SerializerParent
open class GrandAll {
public var _ga: String = ""
}
@SerializerParent
open class MidAll <: GrandAll {
public var _ma: String = ""
}
class LeafAll <: MidAll {
public var _la: String = ""
public init() {}
}
func makeUser(): User { func makeUser(): User {
let u = User() let u = User()
u._id = "u-1" u._id = "u-1"
@@ -374,4 +390,44 @@ public class JsonSerializerTests {
let json = JsonSerializer.Serialize(leaf) let json = JsonSerializer.Serialize(leaf)
@Expect(json.contains("\"_gp\": \"auto\""), true) @Expect(json.contains("\"_gp\": \"auto\""), true)
} }
/// 三级继承(全标宏):爷/父/子 每层字段都导出、反序列化全部回填
@TestCase
public func threeLevelAllMacro() {
let leaf = LeafAll()
leaf._ga = "ga-v"
leaf._ma = "ma-v"
leaf._la = "la-v"
let json = JsonSerializer.Serialize(leaf)
@Expect(json.contains("\"_ga\": \"ga-v\""), true) // 爷字段(宏)导出
@Expect(json.contains("\"_ma\": \"ma-v\""), true) // 父字段(宏)导出
@Expect(json.contains("\"_la\": \"la-v\""), true) // 子字段(反射)导出
let back = JsonSerializer.Deserialize<LeafAll>(json)
@Expect(back._ga, "ga-v")
@Expect(back._ma, "ma-v")
@Expect(back._la, "la-v")
}
/// 三级继承:每层字段互不遮蔽(字段名不同),导出顺序无关,值各自正确
@TestCase
public func threeLevelFieldSeparation() {
let leaf = LeafAll()
leaf._ga = "G"
leaf._ma = "M"
leaf._la = "L"
let json = JsonSerializer.Serialize(leaf)
// 三个字段值互不串
@Expect(json.contains("\"_ga\": \"G\""), true)
@Expect(json.contains("\"_ma\": \"M\""), true)
@Expect(json.contains("\"_la\": \"L\""), true)
// 反序列化后互不覆盖
let back = JsonSerializer.Deserialize<LeafAll>(json)
@Expect(back._ga, "G")
@Expect(back._ma, "M")
@Expect(back._la, "L")
}
} }