Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class UObject : UObjectInterface { // Что будем сериализовать
- private val map = mutableMapOf<String, Any>()
- override fun set(key: String, value: Any) {
- map[key] = value
- }
- override fun get(key: String): Any {
- return map.getOrElse(key, { throw UObjectException("Property doesn't exist") })
- }
- override fun remove(key: String) {
- if (map.containsKey(key))
- map.remove(key)
- else
- throw UObjectException("Trying to remove nonexistent property")
- }
- }
- interface UObjectInterface { // Его интерфейс
- operator fun set(key: String, value: Any)
- operator fun get(key: String): Any
- fun remove(key: String)
- }
- class UObjectException(message: String) : Exception(message) // Его исключение
- import com.google.gson.Gson
- class FileJSON { // Класс для сериализации и 2 функции(Возвратить стринг при сериализации и объект при десериализации)
- fun serializeIObjectToJsonString(obj: UObject): String {
- val gson = Gson()
- return gson.toJson(obj)
- }
- fun deserializeIObjectFromJsonString(json: String): UObject {
- val gson = Gson()
- return gson.fromJson(json, UObject::class.java)
- }
- }
- class FileJSONTest { // Тест (То что между комментариями нужно запихнуть в инициализацию)
- lateinit var objToWrite: UObject
- lateinit var objToRead: UObject
- @Test
- fun test1() {
- // 15 - 23 v Before
- objToWrite = UObject()
- objToRead = UObject()
- objToWrite.set("speed", 20.5)
- objToWrite.set("direction", 4.0)
- objToWrite.set("xCoordinate", 50.0)
- objToWrite.set("yCoordinate", 105.0)
- objToWrite.set("Color", "Black")
- objToWrite.set("freezeStatus", false)
- objToWrite.set("fuel", 15.0)
- // up
- val json = FileJSON().serializeIObjectToJsonString(objToWrite)
- objToRead = FileJSON().deserializeIObjectFromJsonString(json)
- assertEquals(objToWrite.get("speed"), objToRead.get("speed"))
- assertEquals(objToWrite.get("direction"), objToRead.get("direction"))
- assertEquals(objToWrite.get("xCoordinate"), objToRead.get("xCoordinate"))
- assertEquals(objToWrite.get("yCoordinate"), objToRead.get("yCoordinate"))
- assertEquals(objToWrite.get("Color"), objToRead.get("Color"))
- assertEquals(objToWrite.get("freezeStatus"), objToRead.get("freezeStatus"))
- assertEquals(objToWrite.get("fuel"), objToRead.get("fuel"))
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement