package csv4cj
import std.unittest.*
import std.unittest.testmacro.*
import stdx.serialization.serialization.*
import stdx.encoding.json.*
import std.io.*
import std.collection.*
@Test
public class CSVRecordTest {
@TestCase
func testInit(): Unit {
var csvRecord = CSVRecord()
@Expect(csvRecord.getValues().size,0)
let values = ["1", "a", "cangjie", "开发"]
csvRecord = CSVRecord(values)
@Expect(csvRecord.size(),4)
let valueList = ArrayList<String>(values)
csvRecord = CSVRecord(valueList)
@Expect(csvRecord.get(0),"1")
csvRecord = CSVRecord(1, values, "注释")
@Expect(csvRecord.getComment().getOrThrow(),"注释")
}
@TestCase
func testSerializeDeserialize(): Unit {
var csvRecord = CSVRecord(1, ["1", "a", "cangjie", "开发"], "注释")
let josnValue = csvRecord.serialize().toJson()
@Expect(josnValue.asObject().get("recordNumber").getOrThrow().asInt().getValue(),1)
@Expect(josnValue.asObject().get("comment").getOrThrow().asString().getValue(),"注释")
@Expect(josnValue.asObject().get("values").getOrThrow().asArray().get(2).getOrThrow().asString().getValue(),"cangjie")
let newRecord = CSVRecord.deserialize(DataModel.fromJson(josnValue))
@Expect(newRecord.getComment().getOrThrow(),"注释")
@Expect(newRecord.get(2),"cangjie")
@Expect(newRecord.getRecordNumber(),1)
}
}