-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
c9420dd
commit 11488f4
Showing
2 changed files
with
59 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,31 @@ | ||
struct NumberToWords { | ||
var text = "Hello, World!" | ||
import Foundation | ||
|
||
|
||
public extension String { | ||
/// Σε περίπτωση που το κείμενο περιέχει αριθμούς, τους μετατρέπει σε λέξεις. (1 -> ένα) | ||
var convertNumberToWords: String { | ||
var localizedNumber: String = "" | ||
// Αν η γλώσσα της εφαρμογής είναι Ελληνικά | ||
if Locale.preferredLanguages[0] == "el" { | ||
// αντικαθιστώ το κόμμα που βάζουμε στην Ελλάδα με τελεία που υποστηρίζει το Double | ||
localizedNumber = self.replacingOccurrences(of: ",", with: ".") | ||
} else { | ||
localizedNumber = self | ||
} | ||
// Αν μπορεί να μετατραπεί σε Double τότε επιστρέφουμε την μετατροπή | ||
if let double = Double(localizedNumber) { | ||
return double.convertNumberToWords | ||
} | ||
return self | ||
} | ||
} | ||
|
||
public extension Double { | ||
/// Μετατρέπει τον αριθμό σε λέξεις. (1 -> ένα) | ||
var convertNumberToWords: String { | ||
let numberValue = NSNumber(value: self) | ||
let formatter = NumberFormatter() | ||
formatter.numberStyle = .spellOut | ||
return formatter.string(from: numberValue)! | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,35 @@ | ||
import XCTest | ||
@testable import NumberToWords | ||
|
||
final class NumberToWordsTests: XCTestCase { | ||
func testExample() { | ||
// This is an example of a functional test case. | ||
// Use XCTAssert and related functions to verify your tests produce the correct | ||
// results. | ||
XCTAssertEqual(NumberToWords().text, "Hello, World!") | ||
} | ||
|
||
final class StringConvertNumberToWordsTests: XCTestCase { | ||
static var allTests = [ | ||
("testExample", testExample), | ||
("testStringNumberToWords", testStringNumberToWords), | ||
] | ||
|
||
// Δοκιμάζει την μετατροπή ενός string που περιέχει αριθμό double, σε words "1.0" -> ένα | ||
func testStringNumberToWords() { | ||
let testingNumber = "2.4".convertNumberToWords | ||
let stringedNumber = Locale.preferredLanguages[0] == "el" ? "δύο κόμμα τέσσερα" : "two point four" | ||
|
||
XCTAssertEqual(testingNumber, stringedNumber) | ||
} | ||
|
||
// Όταν το string δεν περιέχει έναν αριθμό double, ξαναεπιστρέφει το string | ||
func testStringNoNumberToWords() { | ||
let testingNumber = "2.4d".convertNumberToWords | ||
let stringedNumber = "2.4d" | ||
|
||
XCTAssertEqual(testingNumber, stringedNumber) | ||
} | ||
|
||
} | ||
|
||
final class DoubleConvertNumberToWordsTests: XCTestCase { | ||
// Δοκιμάζει την μετατροπή ενός double σε λέξεις 1 -> ένα | ||
func testDoubleToWords() { | ||
let testingNumber = 2.4.convertNumberToWords | ||
let stringedNumber = Locale.preferredLanguages[0] == "el" ? "δύο κόμμα τέσσερα" : "two point four" | ||
|
||
XCTAssertEqual(testingNumber, stringedNumber) | ||
} | ||
} |