An amazing project that generates micro reports from tournament results
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

597 lines
19 KiB

////////////////////////////////////////////////////////////////////////////
//
// Copyright 2014 Realm Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////
import Foundation
import RealmSwift
import Realm
class SwiftStringObject: Object {
@objc dynamic var stringCol = ""
}
class SwiftBoolObject: Object {
@objc dynamic var boolCol = false
}
class SwiftIntObject: Object {
@objc dynamic var intCol = 0
}
class SwiftLongObject: Object {
@objc dynamic var longCol: Int64 = 0
}
class SwiftObject: Object {
@objc dynamic var boolCol = false
@objc dynamic var intCol = 123
@objc dynamic var floatCol = 1.23 as Float
@objc dynamic var doubleCol = 12.3
@objc dynamic var stringCol = "a"
@objc dynamic var binaryCol = "a".data(using: String.Encoding.utf8)!
@objc dynamic var dateCol = Date(timeIntervalSince1970: 1)
@objc dynamic var objectCol: SwiftBoolObject? = SwiftBoolObject()
let arrayCol = List<SwiftBoolObject>()
class func defaultValues() -> [String: Any] {
return [
"boolCol": false,
"intCol": 123,
"floatCol": 1.23 as Float,
"doubleCol": 12.3,
"stringCol": "a",
"binaryCol": "a".data(using: String.Encoding.utf8)!,
"dateCol": Date(timeIntervalSince1970: 1),
"objectCol": [false],
"arrayCol": []
]
}
}
class SwiftOptionalObject: Object {
@objc dynamic var optNSStringCol: NSString?
@objc dynamic var optStringCol: String?
@objc dynamic var optBinaryCol: Data?
@objc dynamic var optDateCol: Date?
let optIntCol = RealmOptional<Int>()
let optInt8Col = RealmOptional<Int8>()
let optInt16Col = RealmOptional<Int16>()
let optInt32Col = RealmOptional<Int32>()
let optInt64Col = RealmOptional<Int64>()
let optFloatCol = RealmOptional<Float>()
let optDoubleCol = RealmOptional<Double>()
let optBoolCol = RealmOptional<Bool>()
@objc dynamic var optObjectCol: SwiftBoolObject?
}
class SwiftOptionalPrimaryObject: SwiftOptionalObject {
let id = RealmOptional<Int>()
override class func primaryKey() -> String? { return "id" }
}
class SwiftListObject: Object {
let int = List<Int>()
let int8 = List<Int8>()
let int16 = List<Int16>()
let int32 = List<Int32>()
let int64 = List<Int64>()
let float = List<Float>()
let double = List<Double>()
let string = List<String>()
let data = List<Data>()
let date = List<Date>()
let intOpt = List<Int?>()
let int8Opt = List<Int8?>()
let int16Opt = List<Int16?>()
let int32Opt = List<Int32?>()
let int64Opt = List<Int64?>()
let floatOpt = List<Float?>()
let doubleOpt = List<Double?>()
let stringOpt = List<String?>()
let dataOpt = List<Data?>()
let dateOpt = List<Date?>()
}
class SwiftImplicitlyUnwrappedOptionalObject: Object {
@objc dynamic var optNSStringCol: NSString!
@objc dynamic var optStringCol: String!
@objc dynamic var optBinaryCol: Data!
@objc dynamic var optDateCol: Date!
@objc dynamic var optObjectCol: SwiftBoolObject!
}
class SwiftOptionalDefaultValuesObject: Object {
@objc dynamic var optNSStringCol: NSString? = "A"
@objc dynamic var optStringCol: String? = "B"
@objc dynamic var optBinaryCol: Data? = "C".data(using: String.Encoding.utf8)! as Data
@objc dynamic var optDateCol: Date? = Date(timeIntervalSince1970: 10)
let optIntCol = RealmOptional<Int>(1)
let optInt8Col = RealmOptional<Int8>(1)
let optInt16Col = RealmOptional<Int16>(1)
let optInt32Col = RealmOptional<Int32>(1)
let optInt64Col = RealmOptional<Int64>(1)
let optFloatCol = RealmOptional<Float>(2.2)
let optDoubleCol = RealmOptional<Double>(3.3)
let optBoolCol = RealmOptional<Bool>(true)
@objc dynamic var optObjectCol: SwiftBoolObject? = SwiftBoolObject(value: [true])
// let arrayCol = List<SwiftBoolObject?>()
class func defaultValues() -> [String: Any] {
return [
"optNSStringCol": "A",
"optStringCol": "B",
"optBinaryCol": "C".data(using: String.Encoding.utf8)!,
"optDateCol": Date(timeIntervalSince1970: 10),
"optIntCol": 1,
"optInt8Col": 1,
"optInt16Col": 1,
"optInt32Col": 1,
"optInt64Col": 1,
"optFloatCol": 2.2 as Float,
"optDoubleCol": 3.3,
"optBoolCol": true
]
}
}
class SwiftOptionalIgnoredPropertiesObject: Object {
@objc dynamic var id = 0
@objc dynamic var optNSStringCol: NSString? = "A"
@objc dynamic var optStringCol: String? = "B"
@objc dynamic var optBinaryCol: Data? = "C".data(using: String.Encoding.utf8)! as Data
@objc dynamic var optDateCol: Date? = Date(timeIntervalSince1970: 10)
@objc dynamic var optObjectCol: SwiftBoolObject? = SwiftBoolObject(value: [true])
override class func ignoredProperties() -> [String] {
return [
"optNSStringCol",
"optStringCol",
"optBinaryCol",
"optDateCol",
"optObjectCol"
]
}
}
class SwiftDogObject: Object {
@objc dynamic var dogName = ""
let owners = LinkingObjects(fromType: SwiftOwnerObject.self, property: "dog")
}
class SwiftOwnerObject: Object {
@objc dynamic var name = ""
@objc dynamic var dog: SwiftDogObject? = SwiftDogObject()
}
class SwiftAggregateObject: Object {
@objc dynamic var intCol = 0
@objc dynamic var floatCol = 0 as Float
@objc dynamic var doubleCol = 0.0
@objc dynamic var boolCol = false
@objc dynamic var dateCol = Date()
@objc dynamic var trueCol = true
let stringListCol = List<SwiftStringObject>()
}
class SwiftAllIntSizesObject: Object {
@objc dynamic var int8: Int8 = 0
@objc dynamic var int16: Int16 = 0
@objc dynamic var int32: Int32 = 0
@objc dynamic var int64: Int64 = 0
}
class SwiftEmployeeObject: Object {
@objc dynamic var name = ""
@objc dynamic var age = 0
@objc dynamic var hired = false
}
class SwiftCompanyObject: Object {
let employees = List<SwiftEmployeeObject>()
}
class SwiftArrayPropertyObject: Object {
@objc dynamic var name = ""
let array = List<SwiftStringObject>()
let intArray = List<SwiftIntObject>()
}
class SwiftDoubleListOfSwiftObject: Object {
let array = List<SwiftListOfSwiftObject>()
}
class SwiftListOfSwiftObject: Object {
let array = List<SwiftObject>()
}
class SwiftListOfSwiftOptionalObject: Object {
let array = List<SwiftOptionalObject>()
}
class SwiftArrayPropertySubclassObject: SwiftArrayPropertyObject {
let boolArray = List<SwiftBoolObject>()
}
class SwiftLinkToPrimaryStringObject: Object {
@objc dynamic var pk = ""
@objc dynamic var object: SwiftPrimaryStringObject?
let objects = List<SwiftPrimaryStringObject>()
override class func primaryKey() -> String? {
return "pk"
}
}
class SwiftUTF8Object: Object {
// swiftlint:disable:next identifier_name
@objc dynamic var колоéнǢкƱаم👍 = "值значен™👍☞⎠‱௹♣☐▼❒∑⨌⧭иеمرحبا"
}
class SwiftIgnoredPropertiesObject: Object {
@objc dynamic var name = ""
@objc dynamic var age = 0
@objc dynamic var runtimeProperty: AnyObject?
@objc dynamic var runtimeDefaultProperty = "property"
@objc dynamic var readOnlyProperty: Int { return 0 }
override class func ignoredProperties() -> [String] {
return ["runtimeProperty", "runtimeDefaultProperty"]
}
}
class SwiftRecursiveObject: Object {
let objects = List<SwiftRecursiveObject>()
}
protocol SwiftPrimaryKeyObjectType {
associatedtype PrimaryKey
static func primaryKey() -> String?
}
class SwiftPrimaryStringObject: Object, SwiftPrimaryKeyObjectType {
@objc dynamic var stringCol = ""
@objc dynamic var intCol = 0
typealias PrimaryKey = String
override class func primaryKey() -> String? {
return "stringCol"
}
}
class SwiftPrimaryOptionalStringObject: Object, SwiftPrimaryKeyObjectType {
@objc dynamic var stringCol: String? = ""
@objc dynamic var intCol = 0
typealias PrimaryKey = String?
override class func primaryKey() -> String? {
return "stringCol"
}
}
class SwiftPrimaryIntObject: Object, SwiftPrimaryKeyObjectType {
@objc dynamic var stringCol = ""
@objc dynamic var intCol = 0
typealias PrimaryKey = Int
override class func primaryKey() -> String? {
return "intCol"
}
}
class SwiftPrimaryOptionalIntObject: Object, SwiftPrimaryKeyObjectType {
@objc dynamic var stringCol = ""
let intCol = RealmOptional<Int>()
typealias PrimaryKey = RealmOptional<Int>
override class func primaryKey() -> String? {
return "intCol"
}
}
class SwiftPrimaryInt8Object: Object, SwiftPrimaryKeyObjectType {
@objc dynamic var stringCol = ""
@objc dynamic var int8Col: Int8 = 0
typealias PrimaryKey = Int8
override class func primaryKey() -> String? {
return "int8Col"
}
}
class SwiftPrimaryOptionalInt8Object: Object, SwiftPrimaryKeyObjectType {
@objc dynamic var stringCol = ""
let int8Col = RealmOptional<Int8>()
typealias PrimaryKey = RealmOptional<Int8>
override class func primaryKey() -> String? {
return "int8Col"
}
}
class SwiftPrimaryInt16Object: Object, SwiftPrimaryKeyObjectType {
@objc dynamic var stringCol = ""
@objc dynamic var int16Col: Int16 = 0
typealias PrimaryKey = Int16
override class func primaryKey() -> String? {
return "int16Col"
}
}
class SwiftPrimaryOptionalInt16Object: Object, SwiftPrimaryKeyObjectType {
@objc dynamic var stringCol = ""
let int16Col = RealmOptional<Int16>()
typealias PrimaryKey = RealmOptional<Int16>
override class func primaryKey() -> String? {
return "int16Col"
}
}
class SwiftPrimaryInt32Object: Object, SwiftPrimaryKeyObjectType {
@objc dynamic var stringCol = ""
@objc dynamic var int32Col: Int32 = 0
typealias PrimaryKey = Int32
override class func primaryKey() -> String? {
return "int32Col"
}
}
class SwiftPrimaryOptionalInt32Object: Object, SwiftPrimaryKeyObjectType {
@objc dynamic var stringCol = ""
let int32Col = RealmOptional<Int32>()
typealias PrimaryKey = RealmOptional<Int32>
override class func primaryKey() -> String? {
return "int32Col"
}
}
class SwiftPrimaryInt64Object: Object, SwiftPrimaryKeyObjectType {
@objc dynamic var stringCol = ""
@objc dynamic var int64Col: Int64 = 0
typealias PrimaryKey = Int64
override class func primaryKey() -> String? {
return "int64Col"
}
}
class SwiftPrimaryOptionalInt64Object: Object, SwiftPrimaryKeyObjectType {
@objc dynamic var stringCol = ""
let int64Col = RealmOptional<Int64>()
typealias PrimaryKey = RealmOptional<Int64>
override class func primaryKey() -> String? {
return "int64Col"
}
}
class SwiftIndexedPropertiesObject: Object {
@objc dynamic var stringCol = ""
@objc dynamic var intCol = 0
@objc dynamic var int8Col: Int8 = 0
@objc dynamic var int16Col: Int16 = 0
@objc dynamic var int32Col: Int32 = 0
@objc dynamic var int64Col: Int64 = 0
@objc dynamic var boolCol = false
@objc dynamic var dateCol = Date()
@objc dynamic var floatCol: Float = 0.0
@objc dynamic var doubleCol: Double = 0.0
@objc dynamic var dataCol = Data()
override class func indexedProperties() -> [String] {
return ["stringCol", "intCol", "int8Col", "int16Col", "int32Col", "int64Col", "boolCol", "dateCol"]
}
}
class SwiftIndexedOptionalPropertiesObject: Object {
@objc dynamic var optionalStringCol: String? = ""
let optionalIntCol = RealmOptional<Int>()
let optionalInt8Col = RealmOptional<Int8>()
let optionalInt16Col = RealmOptional<Int16>()
let optionalInt32Col = RealmOptional<Int32>()
let optionalInt64Col = RealmOptional<Int64>()
let optionalBoolCol = RealmOptional<Bool>()
@objc dynamic var optionalDateCol: Date? = Date()
let optionalFloatCol = RealmOptional<Float>()
let optionalDoubleCol = RealmOptional<Double>()
@objc dynamic var optionalDataCol: Data? = Data()
override class func indexedProperties() -> [String] {
return ["optionalStringCol", "optionalIntCol", "optionalInt8Col", "optionalInt16Col",
"optionalInt32Col", "optionalInt64Col", "optionalBoolCol", "optionalDateCol"]
}
}
class SwiftCustomInitializerObject: Object {
@objc dynamic var stringCol: String
init(stringVal: String) {
stringCol = stringVal
super.init()
}
required init() {
stringCol = ""
super.init()
}
required init(realm: RLMRealm, schema: RLMObjectSchema) {
stringCol = ""
super.init(realm: realm, schema: schema)
}
required init(value: Any, schema: RLMSchema) {
stringCol = ""
super.init(value: value, schema: schema)
}
}
class SwiftConvenienceInitializerObject: Object {
@objc dynamic var stringCol = ""
convenience init(stringCol: String) {
self.init()
self.stringCol = stringCol
}
}
class SwiftObjectiveCTypesObject: Object {
@objc dynamic var stringCol: NSString?
@objc dynamic var dateCol: NSDate?
@objc dynamic var dataCol: NSData?
@objc dynamic var numCol: NSNumber? = 0
}
class SwiftComputedPropertyNotIgnoredObject: Object {
// swiftlint:disable:next identifier_name
@objc dynamic var _urlBacking = ""
// Dynamic; no ivar
@objc dynamic var dynamicURL: URL? {
get {
return URL(string: _urlBacking)
}
set {
_urlBacking = newValue?.absoluteString ?? ""
}
}
// Non-dynamic; no ivar
var url: URL? {
get {
return URL(string: _urlBacking)
}
set {
_urlBacking = newValue?.absoluteString ?? ""
}
}
}
@objc(SwiftObjcRenamedObject)
class SwiftObjcRenamedObject: Object {
@objc dynamic var stringCol = ""
}
@objc(SwiftObjcRenamedObjectWithTotallyDifferentName)
class SwiftObjcArbitrarilyRenamedObject: Object {
@objc dynamic var boolCol = false
}
class SwiftCircleObject: Object {
@objc dynamic var obj: SwiftCircleObject?
let array = List<SwiftCircleObject>()
}
// Exists to serve as a superclass to `SwiftGenericPropsOrderingObject`
class SwiftGenericPropsOrderingParent: Object {
var implicitlyIgnoredComputedProperty: Int { return 0 }
let implicitlyIgnoredReadOnlyProperty: Int = 1
let parentFirstList = List<SwiftIntObject>()
@objc dynamic var parentFirstNumber = 0
func parentFunction() -> Int { return parentFirstNumber + 1 }
@objc dynamic var parentSecondNumber = 1
var parentComputedProp: String { return "hello world" }
}
// Used to verify that Swift properties (generic and otherwise) are detected properly and
// added to the schema in the correct order.
class SwiftGenericPropsOrderingObject: SwiftGenericPropsOrderingParent {
func myFunction() -> Int { return firstNumber + secondNumber + thirdNumber }
@objc dynamic var dynamicComputed: Int { return 999 }
var firstIgnored = 999
@objc dynamic var dynamicIgnored = 999
@objc dynamic var firstNumber = 0 // Managed property
class func myClassFunction(x: Int, y: Int) -> Int { return x + y }
var secondIgnored = 999
lazy var lazyIgnored = 999
let firstArray = List<SwiftStringObject>() // Managed property
@objc dynamic var secondNumber = 0 // Managed property
var computedProp: String { return "\(firstNumber), \(secondNumber), and \(thirdNumber)" }
let secondArray = List<SwiftStringObject>() // Managed property
override class func ignoredProperties() -> [String] {
return ["firstIgnored", "dynamicIgnored", "secondIgnored", "thirdIgnored", "lazyIgnored", "dynamicLazyIgnored"]
}
let firstOptionalNumber = RealmOptional<Int>() // Managed property
var thirdIgnored = 999
@objc dynamic lazy var dynamicLazyIgnored = 999
let firstLinking = LinkingObjects(fromType: SwiftGenericPropsOrderingHelper.self, property: "first")
let secondLinking = LinkingObjects(fromType: SwiftGenericPropsOrderingHelper.self, property: "second")
@objc dynamic var thirdNumber = 0 // Managed property
let secondOptionalNumber = RealmOptional<Int>() // Managed property
}
// Only exists to allow linking object properties on `SwiftGenericPropsNotLastObject`.
class SwiftGenericPropsOrderingHelper: Object {
@objc dynamic var first: SwiftGenericPropsOrderingObject?
@objc dynamic var second: SwiftGenericPropsOrderingObject?
}
class RenamedProperties1: Object {
@objc dynamic var propA = 0
@objc dynamic var propB = ""
let linking1 = LinkingObjects(fromType: LinkToRenamedProperties1.self, property: "linkA")
let linking2 = LinkingObjects(fromType: LinkToRenamedProperties2.self, property: "linkD")
override class func _realmObjectName() -> String { return "Renamed Properties" }
override class func _realmColumnNames() -> [String: String] {
return ["propA": "prop 1", "propB": "prop 2"]
}
}
class RenamedProperties2: Object {
@objc dynamic var propC = 0
@objc dynamic var propD = ""
let linking1 = LinkingObjects(fromType: LinkToRenamedProperties1.self, property: "linkA")
let linking2 = LinkingObjects(fromType: LinkToRenamedProperties2.self, property: "linkD")
override class func _realmObjectName() -> String { return "Renamed Properties" }
override class func _realmColumnNames() -> [String: String] {
return ["propC": "prop 1", "propD": "prop 2"]
}
}
class LinkToRenamedProperties1: Object {
@objc dynamic var linkA: RenamedProperties1?
@objc dynamic var linkB: RenamedProperties2?
let array1 = List<RenamedProperties1>()
override class func _realmObjectName() -> String { return "Link To Renamed Properties" }
override class func _realmColumnNames() -> [String: String] {
return ["linkA": "link 1", "linkB": "link 2", "array1": "array"]
}
}
class LinkToRenamedProperties2: Object {
@objc dynamic var linkC: RenamedProperties1?
@objc dynamic var linkD: RenamedProperties2?
let array2 = List<RenamedProperties2>()
override class func _realmObjectName() -> String { return "Link To Renamed Properties" }
override class func _realmColumnNames() -> [String: String] {
return ["linkC": "link 1", "linkD": "link 2", "array2": "array"]
}
}