Skip to content

Commit

Permalink
Merge pull request #440 from thii/NSDecimalNumberTransform
Browse files Browse the repository at this point in the history
Add NSDecimalNumber transform
  • Loading branch information
tristanhimmelman committed Apr 18, 2016
2 parents 3d0a788 + 5f84dfa commit 006a9bd
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 0 deletions.
18 changes: 18 additions & 0 deletions ObjectMapper.xcodeproj/project.pbxproj
Expand Up @@ -78,6 +78,13 @@
6ACB15D21BC7F1D0006C029C /* Map.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ACB15D11BC7F1D0006C029C /* Map.swift */; };
6ACB15D31BC7F1D0006C029C /* Map.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ACB15D11BC7F1D0006C029C /* Map.swift */; };
6ACB15D41BC7F1D0006C029C /* Map.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6ACB15D11BC7F1D0006C029C /* Map.swift */; };
84D4F8521CC3B643008B0FB6 /* NSDecimalNumberTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84D4F8511CC3B643008B0FB6 /* NSDecimalNumberTransform.swift */; };
84D4F8531CC3B643008B0FB6 /* NSDecimalNumberTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84D4F8511CC3B643008B0FB6 /* NSDecimalNumberTransform.swift */; };
84D4F8541CC3B643008B0FB6 /* NSDecimalNumberTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84D4F8511CC3B643008B0FB6 /* NSDecimalNumberTransform.swift */; };
84D4F8551CC3B643008B0FB6 /* NSDecimalNumberTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84D4F8511CC3B643008B0FB6 /* NSDecimalNumberTransform.swift */; };
84D4F8571CC3B71B008B0FB6 /* NSDecimalNumberTransformTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84D4F8561CC3B71B008B0FB6 /* NSDecimalNumberTransformTests.swift */; };
84D4F8581CC3B71B008B0FB6 /* NSDecimalNumberTransformTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84D4F8561CC3B71B008B0FB6 /* NSDecimalNumberTransformTests.swift */; };
84D4F8591CC3B71B008B0FB6 /* NSDecimalNumberTransformTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84D4F8561CC3B71B008B0FB6 /* NSDecimalNumberTransformTests.swift */; };
891804CD1C122AF000E5C3EE /* MappableTypesWithTransformsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 891804CC1C122AF000E5C3EE /* MappableTypesWithTransformsTests.swift */; };
891804CE1C122AF000E5C3EE /* MappableTypesWithTransformsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 891804CC1C122AF000E5C3EE /* MappableTypesWithTransformsTests.swift */; };
891804CF1C122AF000E5C3EE /* MappableTypesWithTransformsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 891804CC1C122AF000E5C3EE /* MappableTypesWithTransformsTests.swift */; };
Expand Down Expand Up @@ -191,6 +198,8 @@
6AAC8FC719F048FE00E7A677 /* ToJSON.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = ToJSON.swift; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
6AAC8FCB19F048FE00E7A677 /* DateTransform.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DateTransform.swift; sourceTree = "<group>"; };
6ACB15D11BC7F1D0006C029C /* Map.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Map.swift; sourceTree = "<group>"; };
84D4F8511CC3B643008B0FB6 /* NSDecimalNumberTransform.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSDecimalNumberTransform.swift; sourceTree = "<group>"; };
84D4F8561CC3B71B008B0FB6 /* NSDecimalNumberTransformTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSDecimalNumberTransformTests.swift; sourceTree = "<group>"; };
891804CC1C122AF000E5C3EE /* MappableTypesWithTransformsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MappableTypesWithTransformsTests.swift; sourceTree = "<group>"; };
BC1E7F361ABC44C000F9B1CF /* EnumTransform.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnumTransform.swift; sourceTree = "<group>"; };
CD1602FF1AC023D5000CD69A /* ObjectMapper.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ObjectMapper.framework; sourceTree = BUILT_PRODUCTS_DIR; };
Expand Down Expand Up @@ -329,6 +338,7 @@
3BAD2C0F1BDDC0B000E6B203 /* MappableExtensionsTests.swift */,
6A0BF1FE1C0B53470083D1AF /* ToObjectTests.swift */,
891804CC1C122AF000E5C3EE /* MappableTypesWithTransformsTests.swift */,
84D4F8561CC3B71B008B0FB6 /* NSDecimalNumberTransformTests.swift */,
6AAC8F8319F03C2900E7A677 /* Supporting Files */,
);
path = ObjectMapperTests;
Expand Down Expand Up @@ -363,6 +373,7 @@
CD50B6FC1A82518300744312 /* TransformType.swift */,
6A6C54CF19FE8DB600239454 /* URLTransform.swift */,
BC1E7F361ABC44C000F9B1CF /* EnumTransform.swift */,
84D4F8511CC3B643008B0FB6 /* NSDecimalNumberTransform.swift */,
);
path = Transforms;
sourceTree = "<group>";
Expand Down Expand Up @@ -650,6 +661,7 @@
6AC692341BE3FD3A004C119A /* Map.swift in Sources */,
6AC692351BE3FD3A004C119A /* Mapper.swift in Sources */,
6AC692361BE3FD3A004C119A /* Operators.swift in Sources */,
84D4F8551CC3B643008B0FB6 /* NSDecimalNumberTransform.swift in Sources */,
6AC692371BE3FD3A004C119A /* FromJSON.swift in Sources */,
6AC692381BE3FD3A004C119A /* ToJSON.swift in Sources */,
6AC692391BE3FD3A004C119A /* DateTransform.swift in Sources */,
Expand All @@ -673,6 +685,7 @@
6AA1F66C1BE94687006EF513 /* PerformanceTests.swift in Sources */,
6AC692411BE3FD45004C119A /* BasicTypes.swift in Sources */,
6A0BF2011C0B53470083D1AF /* ToObjectTests.swift in Sources */,
84D4F8591CC3B71B008B0FB6 /* NSDecimalNumberTransformTests.swift in Sources */,
6AC692421BE3FD45004C119A /* BasicTypesTestsFromJSON.swift in Sources */,
6AC692431BE3FD45004C119A /* BasicTypesTestsToJSON.swift in Sources */,
6AC692441BE3FD45004C119A /* CustomTransformTests.swift in Sources */,
Expand All @@ -691,6 +704,7 @@
3BAD2C0E1BDDB10D00E6B203 /* Mappable.swift in Sources */,
6A2AD0461B2C786C0097E150 /* Operators.swift in Sources */,
6ACB15D41BC7F1D0006C029C /* Map.swift in Sources */,
84D4F8541CC3B643008B0FB6 /* NSDecimalNumberTransform.swift in Sources */,
6A2AD0471B2C786C0097E150 /* FromJSON.swift in Sources */,
6A2AD0481B2C786C0097E150 /* ToJSON.swift in Sources */,
6A2AD0491B2C786C0097E150 /* DateTransform.swift in Sources */,
Expand All @@ -712,6 +726,7 @@
3BAD2C0C1BDDB10D00E6B203 /* Mappable.swift in Sources */,
CD50B6FD1A82518300744312 /* TransformType.swift in Sources */,
6ACB15D21BC7F1D0006C029C /* Map.swift in Sources */,
84D4F8521CC3B643008B0FB6 /* NSDecimalNumberTransform.swift in Sources */,
6AAC8FD319F048FE00E7A677 /* DateTransform.swift in Sources */,
BC1E7F371ABC44C000F9B1CF /* EnumTransform.swift in Sources */,
D86BDEA41A51E5AD00120819 /* ISO8601DateTransform.swift in Sources */,
Expand All @@ -735,6 +750,7 @@
6A0BF1FF1C0B53470083D1AF /* ToObjectTests.swift in Sources */,
CD44374D1AAE9C1100A271BA /* NestedKeysTests.swift in Sources */,
6A3774341A31427F00CC0AB5 /* BasicTypesTestsToJSON.swift in Sources */,
84D4F8571CC3B71B008B0FB6 /* NSDecimalNumberTransformTests.swift in Sources */,
6A412A171BAC770C001C3F67 /* ClassClusterTests.swift in Sources */,
6A51372F1AADE12C00B82516 /* CustomTransformTests.swift in Sources */,
6A6AEB981A9387D0002573D3 /* BasicTypes.swift in Sources */,
Expand All @@ -753,6 +769,7 @@
3BAD2C0D1BDDB10D00E6B203 /* Mappable.swift in Sources */,
CD1603201AC02461000CD69A /* CustomDateFormatTransform.swift in Sources */,
CD16031E1AC02461000CD69A /* DateFormatterTransform.swift in Sources */,
84D4F8531CC3B643008B0FB6 /* NSDecimalNumberTransform.swift in Sources */,
6ACB15D31BC7F1D0006C029C /* Map.swift in Sources */,
CD1603241AC02472000CD69A /* EnumTransform.swift in Sources */,
CD16031F1AC02461000CD69A /* ISO8601DateTransform.swift in Sources */,
Expand All @@ -776,6 +793,7 @@
6A412A181BAC830B001C3F67 /* ClassClusterTests.swift in Sources */,
CD1603261AC02480000CD69A /* BasicTypesTestsFromJSON.swift in Sources */,
6A0BF2001C0B53470083D1AF /* ToObjectTests.swift in Sources */,
84D4F8581CC3B71B008B0FB6 /* NSDecimalNumberTransformTests.swift in Sources */,
CD1603291AC02480000CD69A /* NestedKeysTests.swift in Sources */,
CD1603251AC02480000CD69A /* BasicTypes.swift in Sources */,
CD16032A1AC02480000CD69A /* ObjectMapperTests.swift in Sources */,
Expand Down
23 changes: 23 additions & 0 deletions ObjectMapper/Transforms/NSDecimalNumberTransform.swift
@@ -0,0 +1,23 @@
import Foundation

public class NSDecimalNumberTransform: TransformType {
public typealias Object = NSDecimalNumber
public typealias JSON = String

public init() {}

public func transformFromJSON(value: AnyObject?) -> NSDecimalNumber? {
if let string = value as? String {
return NSDecimalNumber(string: string)
}
if let double = value as? Double {
return NSDecimalNumber(double: double)
}
return nil
}

public func transformToJSON(value: NSDecimalNumber?) -> String? {
guard let value = value else { return nil }
return value.description
}
}
46 changes: 46 additions & 0 deletions ObjectMapperTests/NSDecimalNumberTransformTests.swift
@@ -0,0 +1,46 @@
import XCTest
import ObjectMapper

class NSDecimalNumberTransformTests: XCTestCase {

let mapper = Mapper<NSDecimalNumberType>()

func testNSDecimalNumberTransform() {
let int: Int = 11
let double: Double = 11.11
let intString = "\(int)"
let doubleString = "\(double)"
let JSONString = "{\"double\" : \(double), \"int\" : \(int), \"intString\" : \"\(intString)\", \"doubleString\" : \"\(doubleString)\"}"

let mappedObject = mapper.map(JSONString)

XCTAssertNotNil(mappedObject)
XCTAssertEqual(mappedObject?.int, NSDecimalNumber(integer: int))
XCTAssertEqual(mappedObject?.double, NSDecimalNumber(double: double))
XCTAssertEqual(mappedObject?.intString, NSDecimalNumber(string: intString))
XCTAssertEqual(mappedObject?.doubleString, NSDecimalNumber(string: doubleString))
}
}

class NSDecimalNumberType: Mappable {

var int: NSDecimalNumber?
var double: NSDecimalNumber?
var intString: NSDecimalNumber?
var doubleString: NSDecimalNumber?

init(){

}

required init?(_ map: Map){

}

func mapping(map: Map) {
int <- (map["int"], NSDecimalNumberTransform())
double <- (map["double"], NSDecimalNumberTransform())
intString <- (map["intString"], NSDecimalNumberTransform())
doubleString <- (map["doubleString"], NSDecimalNumberTransform())
}
}

0 comments on commit 006a9bd

Please sign in to comment.