Я строю некоторые классы и код, которые хранят и выполняют арифметику c для значений валют. Первоначально я использовал Doubles, но преобразовал в десятичную из-за арифметических ошибок c.
Я пытаюсь найти лучший способ запуска модульных тестов для функций, работающих с типом Decimal.
Предположим, что position.totalCost
- это десятичный тип.
XCTAssertEqual(position.totalCost, 3571.6, accuracy: 0.01)
Этот код не компилируется, так как десятичное число не соответствует FloatingPoint. XCTAssertEqual требует, чтобы параметры были Doubles или Float.
Я справился с этим, выполнив следующее:
XCTAssertTrue(position.totalCost == 3571.6)
, который работает, но если ошибка возникает во время модульный тест, я получаю смутное сообщение:
XCTAssertTrue failed
, а не более полезный XCTAssertEqual failed: ("2.0") is not equal to ("1.0")
Так что использование XCTAssertEqual идеально.
Потенциальные параметры ( как новичок, без понятия, что лучше или жизнеспособнее)
Код мой класс Position для сохранения всех свойств в виде десятичного числа, но использование вычисленных свойств для получения и установки их как двойников.
Написать пользовательское утверждение, которое принимает десятичные дроби. Вероятно, это наиболее «правильный» путь, потому что единственная проблема, с которой я столкнулся при использовании десятичных чисел, заключается в том, что утверждения XCT не могут их принять.
Напишите глупое расширение десятичного числа, которое будет возвращать Двойное значение. По какой-то причине в классе Decimal нет свойства или функции, которая возвращает Double или Floag.