()
| 259 | |
| 260 | |
| 261 | def test_decimals(): |
| 262 | class IsDecimal(Record, coerce=True, serializer="json"): |
| 263 | number: Decimal |
| 264 | |
| 265 | class ListOfDecimal(Record, coerce=True, serializer="json"): |
| 266 | numbers: List[Decimal] |
| 267 | |
| 268 | class OptionalListOfDecimal(Record, coerce=True, serializer="json"): |
| 269 | numbers: List[Decimal] = None |
| 270 | |
| 271 | class OptionalListOfDecimal2(Record, coerce=True, serializer="json"): |
| 272 | numbers: Optional[List[Decimal]] |
| 273 | |
| 274 | class TupleOfDecimal(Record, coerce=True, serializer="json"): |
| 275 | numbers: Tuple[Decimal, ...] |
| 276 | |
| 277 | class SetOfDecimal(Record, coerce=True, serializer="json"): |
| 278 | numbers: Set[Decimal] |
| 279 | |
| 280 | class MapOfDecimal(Record, coerce=True, serializer="json"): |
| 281 | numbers: Mapping[str, Decimal] |
| 282 | |
| 283 | n1 = Decimal("1.31341324") |
| 284 | assert IsDecimal.loads(IsDecimal(number=n1).dumps()).number == n1 |
| 285 | n2 = Decimal("3.41569") |
| 286 | assert ListOfDecimal.loads(ListOfDecimal(numbers=[n1, n2]).dumps()).numbers == [ |
| 287 | n1, |
| 288 | n2, |
| 289 | ] |
| 290 | assert ( |
| 291 | OptionalListOfDecimal.loads(OptionalListOfDecimal(numbers=None).dumps()).numbers |
| 292 | is None |
| 293 | ) |
| 294 | assert OptionalListOfDecimal.loads( |
| 295 | OptionalListOfDecimal(numbers=[n2, n1]).dumps() |
| 296 | ).numbers == [n2, n1] |
| 297 | assert ( |
| 298 | OptionalListOfDecimal2.loads( |
| 299 | OptionalListOfDecimal2(numbers=None).dumps() |
| 300 | ).numbers |
| 301 | is None |
| 302 | ) |
| 303 | assert OptionalListOfDecimal2.loads( |
| 304 | OptionalListOfDecimal2(numbers=[n1, n2]).dumps() |
| 305 | ).numbers == [n1, n2] |
| 306 | assert TupleOfDecimal.loads(TupleOfDecimal(numbers=(n1, n2)).dumps()).numbers == ( |
| 307 | n1, |
| 308 | n2, |
| 309 | ) |
| 310 | assert TupleOfDecimal.loads(TupleOfDecimal(numbers=(n2,)).dumps()).numbers == (n2,) |
| 311 | assert SetOfDecimal.loads(SetOfDecimal(numbers={n1, n2}).dumps()).numbers == { |
| 312 | n1, |
| 313 | n2, |
| 314 | } |
| 315 | assert MapOfDecimal.loads( |
| 316 | MapOfDecimal(numbers={"A": n1, "B": n2}).dumps() |
| 317 | ).numbers == {"A": n1, "B": n2} |
| 318 |
nothing calls this directly
no test coverage detected