test: 新增三级继承用例(三层全标 @SerializerParent)
- threeLevelAllMacro:爷/父/子 每层字段都导出、反序列化全部回填 - threeLevelFieldSeparation:三层字段互不遮蔽、互不覆盖 - 新增模型 GrandAll → MidAll → LeafAll(每层标宏) - 18 用例全绿
This commit is contained in:
@@ -70,6 +70,22 @@ class LeafChild <: MidParent {
|
||||
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 {
|
||||
let u = User()
|
||||
u._id = "u-1"
|
||||
@@ -374,4 +390,44 @@ public class JsonSerializerTests {
|
||||
let json = JsonSerializer.Serialize(leaf)
|
||||
@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")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user