QuantityFormatterTests.swift 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. //
  2. // QuantityFormatterTests.swift
  3. // LoopKitTests
  4. //
  5. // Copyright © 2018 LoopKit Authors. All rights reserved.
  6. //
  7. import XCTest
  8. import HealthKit
  9. import LoopKit
  10. class QuantityFormatterTests: XCTestCase {
  11. var formatter: QuantityFormatter!
  12. override func setUp() {
  13. super.setUp()
  14. formatter = QuantityFormatter()
  15. formatter.locale = Locale(identifier: "en_US")
  16. formatter.unitStyle = .medium
  17. }
  18. func testInsulin() {
  19. let unit = HKUnit.internationalUnit()
  20. XCTAssertEqual("U", formatter.string(from: unit))
  21. XCTAssertEqual("10 U", formatter.string(from: HKQuantity(unit: unit, doubleValue: 10), for: unit)!)
  22. formatter.unitStyle = .short
  23. XCTAssertEqual("U", formatter.string(from: unit))
  24. XCTAssertEqual("10U", formatter.string(from: HKQuantity(unit: unit, doubleValue: 10), for: unit)!)
  25. formatter.unitStyle = .long
  26. XCTAssertEqual("Units", formatter.string(from: unit))
  27. XCTAssertEqual("10 Units", formatter.string(from: HKQuantity(unit: unit, doubleValue: 10), for: unit)!)
  28. }
  29. func testInsulinRates() {
  30. let unit = HKUnit.internationalUnit().unitDivided(by: .hour())
  31. XCTAssertEqual("U/hr", formatter.string(from: unit))
  32. XCTAssertEqual("10 U/hr", formatter.string(from: HKQuantity(unit: unit, doubleValue: 10), for: unit)!)
  33. formatter.unitStyle = .short
  34. XCTAssertEqual("U/hr", formatter.string(from: unit))
  35. XCTAssertEqual("10U/hr", formatter.string(from: HKQuantity(unit: unit, doubleValue: 10), for: unit)!)
  36. formatter.unitStyle = .long
  37. XCTAssertEqual("Units/hour", formatter.string(from: unit))
  38. XCTAssertEqual("10 Units/hour", formatter.string(from: HKQuantity(unit: unit, doubleValue: 10), for: unit)!)
  39. XCTAssertEqual("1 Unit/hour", formatter.string(from: HKQuantity(unit: unit, doubleValue: 1), for: unit)!)
  40. }
  41. func testCarbs() {
  42. let unit = HKUnit.gram()
  43. XCTAssertEqual("g", formatter.string(from: unit))
  44. XCTAssertEqual("10 g", formatter.string(from: HKQuantity(unit: unit, doubleValue: 10), for: unit)!)
  45. formatter.unitStyle = .short
  46. XCTAssertEqual("g", formatter.string(from: unit))
  47. XCTAssertEqual("10g", formatter.string(from: HKQuantity(unit: unit, doubleValue: 10), for: unit)!)
  48. formatter.unitStyle = .long
  49. XCTAssertEqual("grams", formatter.string(from: unit))
  50. XCTAssertEqual("10 grams", formatter.string(from: HKQuantity(unit: unit, doubleValue: 10), for: unit)!)
  51. XCTAssertEqual("0 grams", formatter.string(from: HKQuantity(unit: unit, doubleValue: 0), for: unit)!)
  52. XCTAssertEqual("1 gram", formatter.string(from: HKQuantity(unit: unit, doubleValue: 1), for: unit)!)
  53. formatter.numberFormatter.formattingContext = .standalone
  54. XCTAssertEqual("10 grams", formatter.string(from: HKQuantity(unit: unit, doubleValue: 10), for: unit)!)
  55. }
  56. func testGlucoseMGDL() {
  57. let unit = HKUnit.milligramsPerDeciliter
  58. XCTAssertEqual("mg/dL", formatter.string(from: unit))
  59. XCTAssertEqual("60 mg/dL", formatter.string(from: HKQuantity(unit: unit, doubleValue: 60), for: unit)!)
  60. XCTAssertEqual("180 mg/dL", formatter.string(from: HKQuantity(unit: unit, doubleValue: 180), for: unit)!)
  61. formatter.unitStyle = .short
  62. XCTAssertEqual("mg/dL", formatter.string(from: unit))
  63. XCTAssertEqual("60mg/dL", formatter.string(from: HKQuantity(unit: unit, doubleValue: 60), for: unit)!)
  64. XCTAssertEqual("180mg/dL", formatter.string(from: HKQuantity(unit: unit, doubleValue: 180), for: unit)!)
  65. formatter.unitStyle = .long
  66. XCTAssertEqual("milligrams per deciliter", formatter.string(from: unit))
  67. XCTAssertEqual("180 milligrams per deciliter", formatter.string(from: HKQuantity(unit: unit, doubleValue: 180), for: unit)!)
  68. XCTAssertEqual("0 milligrams per deciliter", formatter.string(from: HKQuantity(unit: unit, doubleValue: 0), for: unit)!)
  69. XCTAssertEqual("1 milligrams per deciliter", formatter.string(from: HKQuantity(unit: unit, doubleValue: 1), for: unit)!)
  70. }
  71. func testGlucoseMMOLL() {
  72. let unit = HKUnit.millimolesPerLiter
  73. formatter.setPreferredNumberFormatter(for: unit)
  74. XCTAssertEqual("mmol/L", formatter.string(from: unit))
  75. XCTAssertEqual("6.0 mmol/L", formatter.string(from: HKQuantity(unit: unit, doubleValue: 6), for: unit)!)
  76. XCTAssertEqual("7.8 mmol/L", formatter.string(from: HKQuantity(unit: unit, doubleValue: 7.84), for: unit)!)
  77. XCTAssertEqual("12.0 mmol/L", formatter.string(from: HKQuantity(unit: unit, doubleValue: 12), for: unit)!)
  78. formatter.unitStyle = .short
  79. XCTAssertEqual("mmol/L", formatter.string(from: unit))
  80. XCTAssertEqual("6.0mmol/L", formatter.string(from: HKQuantity(unit: unit, doubleValue: 6), for: unit)!)
  81. XCTAssertEqual("7.8mmol/L", formatter.string(from: HKQuantity(unit: unit, doubleValue: 7.8), for: unit)!)
  82. formatter.unitStyle = .long
  83. XCTAssertEqual("millimoles per liter", formatter.string(from: unit))
  84. XCTAssertEqual("5.5 millimoles per liter", formatter.string(from: HKQuantity(unit: unit, doubleValue: 5.5), for: unit)!)
  85. XCTAssertEqual("0.0 millimoles per liter", formatter.string(from: HKQuantity(unit: unit, doubleValue: 0), for: unit)!)
  86. XCTAssertEqual("1.0 millimoles per liter", formatter.string(from: HKQuantity(unit: unit, doubleValue: 1), for: unit)!)
  87. }
  88. }