|
498 | 498 | end |
499 | 499 |
|
500 | 500 | @testset "Symbolic dimensions" begin |
| 501 | + # TODO: Remove constructors for sym3 and sym4s? |
| 502 | + sym1 = @inferred(SymbolicDimensions(; m = 3, s = -1)) |
| 503 | + sym2 = @inferred(SymbolicDimensions{Rational{Int}}(; m = 3, s = -1)) |
| 504 | + sym3 = @inferred(SymbolicDimensions(Rational{Int}; m = 3, s = -1)) |
| 505 | + sym4 = @inferred(SymbolicDimensions{Int}(Rational{Int}; m = 3, s = -1)) |
| 506 | + for (sym, T) in ( |
| 507 | + (sym1, DynamicQuantities.DEFAULT_DIM_BASE_TYPE), (sym2, Rational{Int}), (sym3, Rational{Int}), (sym4, Rational{Int}), |
| 508 | + ) |
| 509 | + @test sym isa SymbolicDimensions{T} |
| 510 | + |
| 511 | + # Properties |
| 512 | + @test sym.m == 3 |
| 513 | + @test sym.s == -1 |
| 514 | + @test propertynames(sym) == DynamicQuantities.ALL_SYMBOLS |
| 515 | + @test issubset((:m, :s), propertynames(sym)) |
| 516 | + @test all(propertynames(sym)) do x |
| 517 | + val = getproperty(sym, x) |
| 518 | + return x === :m ? val == 3 : (x === :s ? val == -1 : iszero(val)) |
| 519 | + end |
| 520 | + |
| 521 | + # Internal constructor |
| 522 | + @test DynamicQuantities.constructor_of(typeof(sym)) === SymbolicDimensions |
| 523 | + |
| 524 | + # Equality comparisons |
| 525 | + @test sym == sym |
| 526 | + @test sym == copy(sym) |
| 527 | + @test sym !== copy(sym) |
| 528 | + @test sym == SymbolicDimensions{Int}(; m = 3, s = -1) |
| 529 | + @test SymbolicDimensions{Int}(; m = 3, s = -1) == sym |
| 530 | + @test sym == SymbolicDimensions(; m = 3, g = 0, s = -1) |
| 531 | + @test SymbolicDimensions(; m = 3, g = 0, s = -1) == sym |
| 532 | + @test sym == SymbolicDimensions(; m = 3, s = -1, K = 0) |
| 533 | + @test SymbolicDimensions(; m = 3, s = -1, K = 0) == sym |
| 534 | + @test sym != SymbolicDimensions(; m = 2, s = -1) |
| 535 | + @test SymbolicDimensions(; m = 2, s = -1) != sym |
| 536 | + @test sym != SymbolicDimensions(; m = 3, g = 1, s = -1) |
| 537 | + @test SymbolicDimensions(; m = 3, g = 1, s = -1) != sym |
| 538 | + @test sym != SymbolicDimensions(; m = 3, s = -1, K = 1) |
| 539 | + @test SymbolicDimensions(; m = 3, s = -1, K = 1) != sym |
| 540 | + |
| 541 | + @test !iszero(sym) |
| 542 | + end |
| 543 | + |
501 | 544 | q = 1.5us"km/s" |
502 | 545 | @test q == 1.5 * us"km" / us"s" |
503 | 546 | @test typeof(q) <: Quantity{Float64,<:SymbolicDimensions} |
|
0 commit comments