@@ -11,7 +11,7 @@ import Unitful:
1111 Ra, °F, °C, K,
1212 rad, mrad, °,
1313 ms, s, minute, hr, d, yr, Hz,
14- J, A, N, mol, V,
14+ J, A, N, mol, V, mJ, eV,
1515 mW, W,
1616 dB, dB_rp, dB_p, dBm, dBV, dBSPL, Decibel,
1717 Np, Np_rp, Np_p, Neper,
@@ -1325,14 +1325,61 @@ end
13251325
13261326 @test @inferred ((1 : 2 : 5 ) .* cm .| > mm) === 10 mm: 20 mm: 50 mm
13271327 @test mm .((1 : 2 : 5 ) .* cm) === 10 mm: 20 mm: 50 mm
1328+ @test @inferred (StepRange (1 cm,1 mm,2 cm) .| > km) === (1 // 100_000 )km: (1 // 1_000_000 )km: (2 // 100_000 )km
1329+
13281330 @test @inferred ((1 : 2 : 5 ) .* km .| > upreferred) === 1000 m: 2000 m: 5000 m
13291331 @test @inferred ((1 : 2 : 5 )km .| > upreferred) === 1000 m: 2000 m: 5000 m
13301332 @test @inferred ((1 : 2 : 5 ) .| > upreferred) === 1 : 2 : 5
13311333 @test @inferred ((1.0 : 2.0 : 5.0 ) .* km .| > upreferred) === 1000.0 m: 2000.0 m: 5000.0 m
13321334 @test @inferred ((1.0 : 2.0 : 5.0 )km .| > upreferred) === 1000.0 m: 2000.0 m: 5000.0 m
13331335 @test @inferred ((1.0 : 2.0 : 5.0 ) .| > upreferred) === 1.0 : 2.0 : 5.0
1336+ @test @inferred (StepRange (1 cm,1 mm,2 cm) .| > upreferred) === (1 // 100 )m: (1 // 1000 )m: (2 // 100 )m
1337+
1338+ # float conversion, dimensionful
1339+ for r = [1 eV: 1 eV: 5 eV, 1 eV: 1 eV: 5_000_000 eV, 5_000_000 eV: - 1 eV: - 1 eV, - 123_456_789 eV: 2 eV: 987_654_321 eV, (- 11 // 12 )eV: (1 // 3 )eV: (11 // 4 )eV]
1340+ for f = (mJ, upreferred)
1341+ rf = @inferred (r .| > f)
1342+ test_indices = length (r) ≤ 10_000 ? eachindex (r) : rand (eachindex (r), 10_000 )
1343+ @test eltype (rf) === typeof (f (zero (eltype (r))))
1344+ @test all (≈ (rf[i], f (r[i]); rtol= eps ()) for i = test_indices)
1345+ end
1346+ end
1347+
1348+ # float conversion from unitless
1349+ r = 1 : 1 : 360
1350+ rf = ° .(r)
1351+ @test all (≈ (rf[i], ° (r[i]); rtol= eps ()) for i = eachindex (r))
1352+
1353+ # float conversion to unitless
1354+ r = (1 : 1 : 360 )°
1355+ for f = (mrad, NoUnits, upreferred)
1356+ rf = f .(r)
1357+ @test eltype (rf) === typeof (f (zero (eltype (r))))
1358+ @test all (≈ (rf[i], f (r[i]); rtol= eps ()) for i = eachindex (r))
1359+ end
1360+
1361+ # exact conversion from and to unitless
1362+ @test rad .(1 : 1 : 360 ) === (1 : 1 : 360 )rad
1363+ @test mrad .(1 : 1 : 360 ) === (1_000 : 1_000 : 360_000 )mrad
1364+ @test upreferred .(1 : 1 : 360 ) === 1 : 1 : 360
1365+ @test NoUnits .((1 : 1 : 360 )rad) === 1 : 1 : 360
1366+ @test upreferred .((1 : 1 : 360 )rad) === 1 : 1 : 360
1367+ @test NoUnits .((1 : 2 : 5 )mrad) === 1 // 1000 : 1 // 500 : 1 // 200
1368+ @test upreferred .((1 : 2 : 5 )mrad) === 1 // 1000 : 1 // 500 : 1 // 200
1369+
13341370 @test @inferred ((1 : 2 : 5 ) .* cm .| > mm .| > ustrip) === 10 : 20 : 50
13351371 @test @inferred ((1f0 : 2f0 : 5f0 ) .* cm .| > mm .| > ustrip) === 10f0 : 20f0 : 50f0
1372+ @test @inferred (StepRange {typeof(1m),typeof(1cm)} (1 m,1 cm,2 m) .| > ustrip) === 1 : 1 // 100 : 2
1373+ @test @inferred (StepRangeLen {typeof(1f0m)} (1.0 m, 1.0 cm, 101 ) .| > ustrip) === StepRangeLen {Float32} (1.0 , 0.01 , 101 )
1374+ @test @inferred (StepRangeLen {typeof(1.0m)} (Base. TwicePrecision (1.0 m), Base. TwicePrecision (1.0 cm), 101 ) .| > ustrip) === StepRangeLen {Float64} (Base. TwicePrecision (1.0 ), Base. TwicePrecision (0.01 ), 101 )
1375+ @test @inferred ((1 : 0.1 : 1.0 ) .| > ustrip) == 1 : 0.1 : 1.0
1376+ @test @inferred ((1 m: 0.1 m: 1.0 m) .| > ustrip) == 1 : 0.1 : 1.0
1377+ @test @inferred (StepRange {typeof(0m),typeof(1cm)} (1 m,1 cm,2 m) .| > ustrip) === 1 : 1 // 100 : 2
1378+ @test @inferred (StepRangeLen {typeof(1f0m)} (1.0 m, 1.0 cm, 101 ) .| > ustrip) === StepRangeLen {Float32} (1.0 , 0.01 , 101 )
1379+ @test @inferred (StepRangeLen {typeof(1.0m)} (Base. TwicePrecision (1.0 m), Base. TwicePrecision (1.0 cm), 101 ) .| > ustrip) === StepRangeLen {Float64} (Base. TwicePrecision (1.0 ), Base. TwicePrecision (0.01 ), 101 )
1380+ @test @inferred (StepRangeLen {typeof(1.0mm)} (Base. TwicePrecision (1.0 m), Base. TwicePrecision (1.0 cm), 101 ) .| > ustrip) === 1000.0 : 10.0 : 2000.0
1381+ @test ustrip .(1 : 0.1 : 1.0 ) == 1 : 0.1 : 1.0
1382+ @test ustrip .(1 m: 0.1 m: 1.0 m) == 1 : 0.1 : 1.0
13361383 end
13371384 @testset " >> quantities and non-quantities" begin
13381385 @test range (1 , step= 1 m/ mm, length= 5 ) == 1 : 1000 : 4001
@@ -1400,10 +1447,6 @@ end
14001447 @test_throws ArgumentError range (step= 1 m, length= 5 )
14011448 end
14021449 end
1403- @testset " >> broadcast ustrip" begin
1404- @test ustrip .(1 : 0.1 : 1.0 ) == 1 : 0.1 : 1.0
1405- @test ustrip .(1 m: 0.1 m: 1.0 m) == 1 : 0.1 : 1.0
1406- end
14071450 end
14081451 @testset " > Arrays" begin
14091452 @testset " >> Array multiplication" begin
0 commit comments