Skip to content

Commit

Permalink
Ολοκληρωμένη αρχική έκδοση.
Browse files Browse the repository at this point in the history
  • Loading branch information
nickpolychronakis committed Nov 7, 2020
1 parent c9420dd commit 11488f4
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 11 deletions.
32 changes: 30 additions & 2 deletions Sources/NumberToWords/NumberToWords.swift
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)!
}
}
38 changes: 29 additions & 9 deletions Tests/NumberToWordsTests/NumberToWordsTests.swift
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)
}
}

0 comments on commit 11488f4

Please sign in to comment.