SwiftTestObjects.swift 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. ////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright 2014 Realm Inc.
  4. //
  5. // Licensed under the Apache License, Version 2.0 (the "License");
  6. // you may not use this file except in compliance with the License.
  7. // You may obtain a copy of the License at
  8. //
  9. // http://www.apache.org/licenses/LICENSE-2.0
  10. //
  11. // Unless required by applicable law or agreed to in writing, software
  12. // distributed under the License is distributed on an "AS IS" BASIS,
  13. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. // See the License for the specific language governing permissions and
  15. // limitations under the License.
  16. //
  17. ////////////////////////////////////////////////////////////////////////////
  18. import Realm
  19. import RealmTestSupport
  20. class SwiftRLMStringObject: RLMObject {
  21. @objc dynamic var stringCol = ""
  22. }
  23. class SwiftRLMBoolObject: RLMObject {
  24. @objc dynamic var boolCol = false
  25. }
  26. class SwiftRLMIntObject: RLMObject {
  27. @objc dynamic var intCol = 0
  28. }
  29. class SwiftRLMLongObject: RLMObject {
  30. @objc dynamic var longCol: Int64 = 0
  31. }
  32. class SwiftRLMObject: RLMObject {
  33. @objc dynamic var boolCol = false
  34. @objc dynamic var intCol = 123
  35. @objc dynamic var floatCol = 1.23 as Float
  36. @objc dynamic var doubleCol = 12.3
  37. @objc dynamic var stringCol = "a"
  38. @objc dynamic var binaryCol = "a".data(using: String.Encoding.utf8)
  39. @objc dynamic var dateCol = Date(timeIntervalSince1970: 1)
  40. #if SWIFT_PACKAGE
  41. // FIXME: we fail to check if an object property is actually optional unless
  42. // RealmSwift happens to be loaded in the process
  43. @objc dynamic var objectCol: SwiftRLMBoolObject! = SwiftRLMBoolObject()
  44. #else
  45. @objc dynamic var objectCol = SwiftRLMBoolObject()
  46. #endif
  47. @objc dynamic var arrayCol = RLMArray<SwiftRLMBoolObject>(objectClassName: SwiftRLMBoolObject.className())
  48. }
  49. class SwiftRLMOptionalObject: RLMObject {
  50. @objc dynamic var optStringCol: String?
  51. @objc dynamic var optNSStringCol: NSString?
  52. @objc dynamic var optBinaryCol: Data?
  53. @objc dynamic var optDateCol: Date?
  54. @objc dynamic var optObjectCol: SwiftRLMBoolObject?
  55. }
  56. class SwiftRLMPrimitiveArrayObject: RLMObject {
  57. @objc dynamic var stringCol = RLMArray<NSString>(objectType: .string, optional: false)
  58. @objc dynamic var optStringCol = RLMArray<NSObject>(objectType: .string, optional: true)
  59. @objc dynamic var dataCol = RLMArray<NSData>(objectType: .data, optional: false)
  60. @objc dynamic var optDataCol = RLMArray<NSObject>(objectType: .data, optional: true)
  61. @objc dynamic var dateCol = RLMArray<NSDate>(objectType: .date, optional: false)
  62. @objc dynamic var optDateCol = RLMArray<NSObject>(objectType: .date, optional: true)
  63. }
  64. class SwiftRLMDogObject: RLMObject {
  65. @objc dynamic var dogName = ""
  66. }
  67. class SwiftRLMOwnerObject: RLMObject {
  68. @objc dynamic var name = ""
  69. @objc dynamic var dog: SwiftRLMDogObject? = SwiftRLMDogObject()
  70. }
  71. class SwiftRLMAggregateObject: RLMObject {
  72. @objc dynamic var intCol = 0
  73. @objc dynamic var floatCol = 0 as Float
  74. @objc dynamic var doubleCol = 0.0
  75. @objc dynamic var boolCol = false
  76. @objc dynamic var dateCol = Date()
  77. }
  78. class SwiftRLMAllIntSizesObject: RLMObject {
  79. @objc dynamic var int8: Int8 = 0
  80. @objc dynamic var int16: Int16 = 0
  81. @objc dynamic var int32: Int32 = 0
  82. @objc dynamic var int64: Int64 = 0
  83. }
  84. class SwiftRLMEmployeeObject: RLMObject {
  85. @objc dynamic var name = ""
  86. @objc dynamic var age = 0
  87. @objc dynamic var hired = false
  88. }
  89. class SwiftRLMCompanyObject: RLMObject {
  90. @objc dynamic var employees = RLMArray<SwiftRLMEmployeeObject>(objectClassName: SwiftRLMEmployeeObject.className())
  91. }
  92. class SwiftRLMArrayPropertyObject: RLMObject {
  93. @objc dynamic var name = ""
  94. @objc dynamic var array = RLMArray<SwiftRLMStringObject>(objectClassName: SwiftRLMStringObject.className())
  95. @objc dynamic var intArray = RLMArray<SwiftRLMIntObject>(objectClassName: SwiftRLMIntObject.className())
  96. }
  97. class SwiftRLMDynamicObject: RLMObject {
  98. @objc dynamic var stringCol = "a"
  99. @objc dynamic var intCol = 0
  100. }
  101. class SwiftRLMUTF8Object: RLMObject {
  102. @objc dynamic var 柱колоéнǢкƱаم👍 = "值значен™👍☞⎠‱௹♣︎☐▼❒∑⨌⧭иеمرحبا"
  103. }
  104. class SwiftRLMIgnoredPropertiesObject: RLMObject {
  105. @objc dynamic var name = ""
  106. @objc dynamic var age = 0
  107. @objc dynamic var runtimeProperty: AnyObject?
  108. @objc dynamic var readOnlyProperty: Int { return 0 }
  109. override class func ignoredProperties() -> [String]? {
  110. return ["runtimeProperty"]
  111. }
  112. }
  113. class SwiftRLMPrimaryStringObject: RLMObject {
  114. @objc dynamic var stringCol = ""
  115. @objc dynamic var intCol = 0
  116. override class func primaryKey() -> String {
  117. return "stringCol"
  118. }
  119. }
  120. class SwiftRLMLinkSourceObject: RLMObject {
  121. @objc dynamic var id = 0
  122. @objc dynamic var link: SwiftRLMLinkTargetObject?
  123. }
  124. class SwiftRLMLinkTargetObject: RLMObject {
  125. @objc dynamic var id = 0
  126. @objc dynamic var backlinks: RLMLinkingObjects<SwiftRLMLinkSourceObject>?
  127. override class func linkingObjectsProperties() -> [String : RLMPropertyDescriptor] {
  128. return ["backlinks": RLMPropertyDescriptor(with: SwiftRLMLinkSourceObject.self, propertyName: "link")]
  129. }
  130. }
  131. class SwiftRLMLazyVarObject: RLMObject {
  132. @objc dynamic lazy var lazyProperty: String = "hello world"
  133. }
  134. class SwiftRLMIgnoredLazyVarObject: RLMObject {
  135. @objc dynamic var id = 0
  136. @objc dynamic lazy var ignoredVar: String = "hello world"
  137. override class func ignoredProperties() -> [String] { return ["ignoredVar"] }
  138. }
  139. class SwiftRLMObjectiveCTypesObject: RLMObject {
  140. @objc dynamic var stringCol: NSString?
  141. @objc dynamic var dateCol: NSDate?
  142. @objc dynamic var dataCol: NSData?
  143. @objc dynamic var numCol: NSNumber? = 0
  144. }