Advertisement
Guest User

Untitled

a guest
Feb 17th, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.66 KB | None | 0 0
  1. class UObject : UObjectInterface { // Что будем сериализовать
  2.  
  3. private val map = mutableMapOf<String, Any>()
  4.  
  5. override fun set(key: String, value: Any) {
  6. map[key] = value
  7. }
  8.  
  9. override fun get(key: String): Any {
  10. return map.getOrElse(key, { throw UObjectException("Property doesn't exist") })
  11. }
  12.  
  13. override fun remove(key: String) {
  14. if (map.containsKey(key))
  15. map.remove(key)
  16. else
  17. throw UObjectException("Trying to remove nonexistent property")
  18. }
  19. }
  20.  
  21. interface UObjectInterface { // Его интерфейс
  22. operator fun set(key: String, value: Any)
  23. operator fun get(key: String): Any
  24. fun remove(key: String)
  25. }
  26.  
  27. class UObjectException(message: String) : Exception(message) // Его исключение
  28.  
  29.  
  30. import com.google.gson.Gson
  31.  
  32. class FileJSON { // Класс для сериализации и 2 функции(Возвратить стринг при сериализации и объект при десериализации)
  33. fun serializeIObjectToJsonString(obj: UObject): String {
  34. val gson = Gson()
  35. return gson.toJson(obj)
  36. }
  37.  
  38. fun deserializeIObjectFromJsonString(json: String): UObject {
  39. val gson = Gson()
  40. return gson.fromJson(json, UObject::class.java)
  41. }
  42. }
  43.  
  44. class FileJSONTest { // Тест (То что между комментариями нужно запихнуть в инициализацию)
  45. lateinit var objToWrite: UObject
  46. lateinit var objToRead: UObject
  47.  
  48. @Test
  49. fun test1() {
  50. // 15 - 23 v Before
  51. objToWrite = UObject()
  52. objToRead = UObject()
  53. objToWrite.set("speed", 20.5)
  54. objToWrite.set("direction", 4.0)
  55. objToWrite.set("xCoordinate", 50.0)
  56. objToWrite.set("yCoordinate", 105.0)
  57. objToWrite.set("Color", "Black")
  58. objToWrite.set("freezeStatus", false)
  59. objToWrite.set("fuel", 15.0)
  60. // up
  61. val json = FileJSON().serializeIObjectToJsonString(objToWrite)
  62. objToRead = FileJSON().deserializeIObjectFromJsonString(json)
  63. assertEquals(objToWrite.get("speed"), objToRead.get("speed"))
  64. assertEquals(objToWrite.get("direction"), objToRead.get("direction"))
  65. assertEquals(objToWrite.get("xCoordinate"), objToRead.get("xCoordinate"))
  66. assertEquals(objToWrite.get("yCoordinate"), objToRead.get("yCoordinate"))
  67. assertEquals(objToWrite.get("Color"), objToRead.get("Color"))
  68. assertEquals(objToWrite.get("freezeStatus"), objToRead.get("freezeStatus"))
  69. assertEquals(objToWrite.get("fuel"), objToRead.get("fuel"))
  70.  
  71. }
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement