package CJson.test
import CJson.*
import CJson.jsonmacro.*
@JsonSerializable
class ClassWithCustomName {
public var stringVar1: String = "Value1"
@JsonName["stringVar2_alias"]
public var stringVar2: String = "Value2"
public var intVar: Int64 = 10
}
@Test
public class TestCustomName {
private let MYCLASS_JSON = "{\"stringVar1\": \"String1\",\"stringVar2_alias\": \"String2\", \"intVar\": 10}"
@TestCase
func testFromJson(): Unit {
var myClass = ClassWithCustomName()
var jsonValues = JsonValue.fromStr(MYCLASS_JSON).asObject()
myClass.stringVar1 = jsonValues.get("stringVar1").getOrThrow().asString().getValue()
myClass.stringVar2 = jsonValues.get("stringVar2_alias").getOrThrow().asString().getValue()
myClass.intVar = jsonValues.get("intVar").getOrThrow().asInt().getValue()
var myClass1 = ClassWithCustomName.fromJson(MYCLASS_JSON)
@Assert(myClass.stringVar1, myClass1.stringVar1)
@Assert(myClass.stringVar2, myClass1.stringVar2)
@Assert(myClass.intVar, myClass1.intVar)
}
@TestCase
func testToJson(): Unit {
var myClass = ClassWithCustomName()
myClass.stringVar1 = "String1"
myClass.stringVar2 = "String2"
myClass.intVar = 10
var map: HashMap<String, JsonValue> = HashMap()
map.put("stringVar1", JsonString(myClass.stringVar1))
map.put("stringVar2_alias", JsonString(myClass.stringVar2))
map.put("intVar", JsonInt(myClass.intVar))
@Assert(JsonObject(map).toString(), myClass.toJson())
}
}
main() {}