Skip to content

Commit 03cac17

Browse files
authored
Merge pull request #418 from zapcannon87/master
feat: sugar for converting number to string
2 parents 7434063 + 7cb40bb commit 03cac17

File tree

5 files changed

+90
-12
lines changed

5 files changed

+90
-12
lines changed

LeanCloud.xcodeproj/xcshareddata/xcschemes/LeanCloud.xcscheme

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
2828
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
2929
shouldUseLaunchSchemeArgsEnv = "YES"
30+
enableThreadSanitizer = "YES"
3031
codeCoverageEnabled = "YES">
3132
<MacroExpansion>
3233
<BuildableReference
@@ -61,6 +62,7 @@
6162
buildConfiguration = "Debug"
6263
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
6364
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
65+
enableThreadSanitizer = "YES"
6466
launchStyle = "0"
6567
useCustomWorkingDirectory = "NO"
6668
ignoresPersistentStateOnLaunch = "NO"

LeanCloud.xcodeproj/xcshareddata/xcschemes/LeanCloudTests.xcscheme

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
2828
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
2929
shouldUseLaunchSchemeArgsEnv = "YES"
30+
enableThreadSanitizer = "YES"
3031
codeCoverageEnabled = "YES">
3132
<AdditionalOptions>
3233
<AdditionalOption
@@ -52,6 +53,7 @@
5253
buildConfiguration = "Debug"
5354
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
5455
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
56+
enableThreadSanitizer = "YES"
5557
launchStyle = "0"
5658
useCustomWorkingDirectory = "NO"
5759
ignoresPersistentStateOnLaunch = "NO"

LeanCloudTests/LCFileTestCase.swift

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -113,17 +113,20 @@ class LCFileTestCase: BaseTestCase {
113113
XCTAssertNotNil(file2.createdAt)
114114
XCTAssertNotNil(file2.save().error)
115115

116-
var file3: LCFile! = LCFile(
117-
application: application,
118-
url: file2.url!)
119-
XCTAssertTrue(file3.save().isSuccess)
120-
XCTAssertNotNil(file3.mimeType)
121-
XCTAssertNotNil(file3.name)
122-
XCTAssertEqual(file3.metaData?.__source as? LCString, LCString("external"))
123-
XCTAssertNotNil(file3.url)
124-
XCTAssertNotNil(file3.objectId)
125-
XCTAssertNotNil(file3.createdAt)
126-
XCTAssertNotNil(file3.save().error)
116+
var file3: LCFile!
117+
if let file2url = file2.url {
118+
file3 = LCFile(
119+
application: application,
120+
url: file2url)
121+
XCTAssertTrue(file3.save().isSuccess)
122+
XCTAssertNotNil(file3.mimeType)
123+
XCTAssertNotNil(file3.name)
124+
XCTAssertEqual(file3.metaData?.__source as? LCString, LCString("external"))
125+
XCTAssertNotNil(file3.url)
126+
XCTAssertNotNil(file3.objectId)
127+
XCTAssertNotNil(file3.createdAt)
128+
XCTAssertNotNil(file3.save().error)
129+
}
127130

128131
delay()
129132

LeanCloudTests/LCTypeTestCase.swift

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,5 +176,24 @@ class LCTypeTestCase: BaseTestCase {
176176
let stringCopy = archiveThenUnarchive(string)
177177
XCTAssertEqual(stringCopy, string)
178178
}
179-
179+
180+
func testStringValue() {
181+
let nsNumber = NSNumber(1)
182+
let nsString: String = nsNumber.stringValue
183+
let lcString: String? = nsNumber.stringValue
184+
XCTAssertEqual(nsString, lcString)
185+
186+
XCTAssertEqual(Int(1).stringValue, "1")
187+
XCTAssertEqual(UInt(1).stringValue, "1")
188+
XCTAssertEqual(Int8(1).stringValue, "1")
189+
XCTAssertEqual(UInt8(1).stringValue, "1")
190+
XCTAssertEqual(Int16(1).stringValue, "1")
191+
XCTAssertEqual(UInt16(1).stringValue, "1")
192+
XCTAssertEqual(Int32(1).stringValue, "1")
193+
XCTAssertEqual(UInt32(1).stringValue, "1")
194+
XCTAssertEqual(Int64(1).stringValue, "1")
195+
XCTAssertEqual(UInt64(1).stringValue, "1")
196+
XCTAssertEqual(Float(1).stringValue, "1.0")
197+
XCTAssertEqual(Double(1).stringValue, "1.0")
198+
}
180199
}

Sources/Foundation/Valuable.swift

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,10 @@ extension Int: LCNumberConvertible {
381381
public var lcNumber: LCNumber {
382382
return LCNumber(Double(self))
383383
}
384+
385+
public var stringValue: String? {
386+
return "\(self)"
387+
}
384388
}
385389

386390
extension UInt: LCNumberConvertible {
@@ -391,6 +395,10 @@ extension UInt: LCNumberConvertible {
391395
public var lcNumber: LCNumber {
392396
return LCNumber(Double(self))
393397
}
398+
399+
public var stringValue: String? {
400+
return "\(self)"
401+
}
394402
}
395403

396404
extension Int8: LCNumberConvertible {
@@ -401,6 +409,10 @@ extension Int8: LCNumberConvertible {
401409
public var lcNumber: LCNumber {
402410
return LCNumber(Double(self))
403411
}
412+
413+
public var stringValue: String? {
414+
return "\(self)"
415+
}
404416
}
405417

406418
extension UInt8: LCNumberConvertible {
@@ -411,6 +423,10 @@ extension UInt8: LCNumberConvertible {
411423
public var lcNumber: LCNumber {
412424
return LCNumber(Double(self))
413425
}
426+
427+
public var stringValue: String? {
428+
return "\(self)"
429+
}
414430
}
415431

416432
extension Int16: LCNumberConvertible {
@@ -421,6 +437,10 @@ extension Int16: LCNumberConvertible {
421437
public var lcNumber: LCNumber {
422438
return LCNumber(Double(self))
423439
}
440+
441+
public var stringValue: String? {
442+
return "\(self)"
443+
}
424444
}
425445

426446
extension UInt16: LCNumberConvertible {
@@ -431,6 +451,10 @@ extension UInt16: LCNumberConvertible {
431451
public var lcNumber: LCNumber {
432452
return LCNumber(Double(self))
433453
}
454+
455+
public var stringValue: String? {
456+
return "\(self)"
457+
}
434458
}
435459

436460
extension Int32: LCNumberConvertible {
@@ -441,6 +465,10 @@ extension Int32: LCNumberConvertible {
441465
public var lcNumber: LCNumber {
442466
return LCNumber(Double(self))
443467
}
468+
469+
public var stringValue: String? {
470+
return "\(self)"
471+
}
444472
}
445473

446474
extension UInt32: LCNumberConvertible {
@@ -451,6 +479,10 @@ extension UInt32: LCNumberConvertible {
451479
public var lcNumber: LCNumber {
452480
return LCNumber(Double(self))
453481
}
482+
483+
public var stringValue: String? {
484+
return "\(self)"
485+
}
454486
}
455487

456488
extension Int64: LCNumberConvertible {
@@ -461,6 +493,10 @@ extension Int64: LCNumberConvertible {
461493
public var lcNumber: LCNumber {
462494
return LCNumber(Double(self))
463495
}
496+
497+
public var stringValue: String? {
498+
return "\(self)"
499+
}
464500
}
465501

466502
extension UInt64: LCNumberConvertible {
@@ -471,6 +507,10 @@ extension UInt64: LCNumberConvertible {
471507
public var lcNumber: LCNumber {
472508
return LCNumber(Double(self))
473509
}
510+
511+
public var stringValue: String? {
512+
return "\(self)"
513+
}
474514
}
475515

476516
extension Float: LCNumberConvertible {
@@ -481,6 +521,10 @@ extension Float: LCNumberConvertible {
481521
public var lcNumber: LCNumber {
482522
return LCNumber(Double(self))
483523
}
524+
525+
public var stringValue: String? {
526+
return "\(self)"
527+
}
484528
}
485529

486530
extension Double: LCNumberConvertible {
@@ -491,6 +535,10 @@ extension Double: LCNumberConvertible {
491535
public var lcNumber: LCNumber {
492536
return LCNumber(Double(self))
493537
}
538+
539+
public var stringValue: String? {
540+
return "\(self)"
541+
}
494542
}
495543

496544
extension Bool: LCBoolConvertible {
@@ -515,6 +563,10 @@ extension NSNumber: LCNumberConvertible, LCBoolConvertible {
515563
public var lcBool: LCBool {
516564
return LCBool(boolValue)
517565
}
566+
567+
public var stringValue: String? {
568+
return description(withLocale: nil)
569+
}
518570
}
519571

520572
extension String: LCStringConvertible {

0 commit comments

Comments
 (0)