@@ -17,7 +17,6 @@ function test_fixed(::Type{T}, f) where {T}
1717 if ! (typemin (T) < x <= typemax (T))
1818 continue
1919 end
20- # isinteger(x) && @show x
2120 fx = convert (T,x)
2221 @test convert (T,convert (Float64, fx)) == fx
2322 @test convert (T,convert (Float64, - fx)) == - fx
215214 @test isa (float (one (Fixed{Int32,25 })), Float64)
216215end
217216
217+ @testset " predicates" begin
218+ @test isfinite (1 Q7f8)
219+ @test ! isnan (1 Q7f8)
220+ @test ! isinf (1 Q7f8)
221+
222+ @testset " isinteger" begin
223+ for T in (Int8, Int16)
224+ @testset " isinteger(::Fixed{$T ,$f })" for f = 0 : bitwidth (T)- 1
225+ F = Fixed{T,f}
226+ xs = typemin (F): eps (F): typemax (F)
227+ @test all (x -> isinteger (x) == isinteger (float (x)), xs)
228+ end
229+ end
230+ for T in (Int32, Int64)
231+ @testset " isinteger(::Fixed{$T ,$f })" for f = 0 : bitwidth (T)- 1
232+ F = Fixed{T,f}
233+ fzero, fmax, fmin = zero (F), typemax (F), typemin (F)
234+ if f == 0
235+ @test isinteger (fzero) & isinteger (fmax) & isinteger (fmin)
236+ else
237+ @test isinteger (fzero) & ! isinteger (fmax) & isinteger (fmin)
238+ end
239+ end
240+ end
241+ @testset " isinteger(::Fixed{Int8,8})" begin # TODO : remove this testset
242+ @test ! isinteger (Fixed {Int8,8} (- 0.5 ))
243+ @test isinteger (Fixed {Int8,8} (0.0 ))
244+ @test ! isinteger (Fixed {Int8,8} (127 / 256 ))
245+ end
246+ end
247+ end
248+
218249@testset " Show" begin
219250 x = Fixed {Int32,5} (0.25 )
220251 iob = IOBuffer ()
0 commit comments