diff --git a/AsyncImageView/Renderers/CacheRenderer.swift b/AsyncImageView/Renderers/CacheRenderer.swift index fe75a5c..b0c394b 100644 --- a/AsyncImageView/Renderers/CacheRenderer.swift +++ b/AsyncImageView/Renderers/CacheRenderer.swift @@ -7,6 +7,7 @@ // import UIKit +import Foundation import ReactiveSwift @@ -67,8 +68,20 @@ extension RenderDataType where Self: DataFileType { } } +private let renderDataSubdirectoryLocale = Locale(identifier: "en_US_POSIX") +private let renderDataSubdirectoryFormat = "%.2fx%.2f" + +internal func subdirectoryForSize(_ size: CGSize, locale: Locale) -> String { + return String( + format: renderDataSubdirectoryFormat, + locale: locale, + size.width, + size.height + ) +} + public func subdirectoryForSize(_ size: CGSize) -> String { - return String(format: "%.2fx%.2f", size.width, size.height) + return subdirectoryForSize(size, locale: renderDataSubdirectoryLocale) } private enum CacheRendererError: Error { @@ -90,4 +103,3 @@ private extension UIImage { ) } } - diff --git a/AsyncImageViewTests/CachingSpec.swift b/AsyncImageViewTests/CachingSpec.swift index b7f7127..bad5644 100644 --- a/AsyncImageViewTests/CachingSpec.swift +++ b/AsyncImageViewTests/CachingSpec.swift @@ -11,7 +11,7 @@ import Nimble import Foundation import CoreGraphics -import AsyncImageView +@testable import AsyncImageView class InMemoryCacheSpec: QuickSpec { override class func spec() { @@ -139,6 +139,12 @@ class RenderDataTypeCacheSubdirectorySpec: QuickSpec { it("has limited precision") { expect(subdirectoryForSize(CGSize(width: 15.1245, height: 10.6123))) == "15.12x10.61" } + + it("does not depend on the current locale's decimal separator") { + let locale = Locale(identifier: "fr_FR") + expect(subdirectoryForSize(CGSize(width: 15.1245, height: 10.6123), locale: locale)) == "15,12x10,61" + expect(subdirectoryForSize(CGSize(width: 15.1245, height: 10.6123))) == "15.12x10.61" + } } }