mirror of
https://github.com/idris-lang/Idris2.git
synced 2024-11-29 03:24:02 +03:00
7d046652d8
Co-authored-by: Guillaume ALLAIS <guillaume.allais@ens-lyon.org>
96 lines
2.6 KiB
Idris
96 lines
2.6 KiB
Idris
-- Tests to check that casting between integer types works as expected
|
|
--
|
|
-- This tests in `idris2/basic043`, `chez/chez028` and `node/node022` are the
|
|
-- same and should all have the same output.
|
|
|
|
--
|
|
-- Widening should not have any effect
|
|
--
|
|
|
|
bits8WideningNoEffect : List String
|
|
bits8WideningNoEffect = [
|
|
show $ cast {from = Bits8} {to = Bits16} 123,
|
|
show $ cast {from = Bits8} {to = Bits32} 123,
|
|
show $ cast {from = Bits8} {to = Bits64} 123,
|
|
show $ cast {from = Bits8} {to = Int} 123,
|
|
show $ cast {from = Bits8} {to = Integer} 123
|
|
]
|
|
|
|
bits16WideningNoEffect : List String
|
|
bits16WideningNoEffect = [
|
|
show $ cast {from = Bits16} {to = Bits32} 1234,
|
|
show $ cast {from = Bits16} {to = Bits64} 1234,
|
|
show $ cast {from = Bits16} {to = Int} 1234,
|
|
show $ cast {from = Bits16} {to = Integer} 1234
|
|
]
|
|
|
|
bits32WideningNoEffect : List String
|
|
bits32WideningNoEffect = [
|
|
show $ cast {from = Bits32} {to = Bits64} 1234567,
|
|
show $ cast {from = Bits32} {to = Int} 1234567,
|
|
show $ cast {from = Bits32} {to = Integer} 1234567
|
|
]
|
|
|
|
--
|
|
-- Narrowing
|
|
--
|
|
|
|
b8max : Integer
|
|
b8max = 0x100
|
|
|
|
b16max : Integer
|
|
b16max = 0x10000
|
|
|
|
b32max : Integer
|
|
b32max = 0x100000000
|
|
|
|
b64max : Integer
|
|
b64max = 18446744073709551616 -- 0x10000000000000000
|
|
|
|
|
|
narrowFromInteger : List String
|
|
narrowFromInteger = [
|
|
show $ cast {from = Integer} {to = Bits8} (b8max + 134),
|
|
show $ cast {from = Integer} {to = Bits16} (b16max + 134),
|
|
show $ cast {from = Integer} {to = Bits32} (b32max + 134),
|
|
show $ cast {from = Integer} {to = Bits64} (b64max + 134)
|
|
]
|
|
|
|
narrowFromInt : List String
|
|
narrowFromInt = [
|
|
show $ cast {from = Int} {to = Bits8} (cast (b8max + 134)),
|
|
show $ cast {from = Int} {to = Bits16} (cast (b16max + 134)),
|
|
show $ cast {from = Int} {to = Bits32} (cast (b32max + 134)),
|
|
show $ cast {from = Int} {to = Bits64} (cast (b64max + 134))
|
|
]
|
|
|
|
narrowFromBits64 : List String
|
|
narrowFromBits64 = [
|
|
show $ cast {from = Bits64} {to = Bits8} (cast (b8max + 134)),
|
|
show $ cast {from = Bits64} {to = Bits16} (cast (b16max + 134)),
|
|
show $ cast {from = Bits64} {to = Bits32} (cast (b32max + 134))
|
|
]
|
|
|
|
narrowFromBits32 : List String
|
|
narrowFromBits32 = [
|
|
show $ cast {from = Bits32} {to = Bits8} (cast (b8max + 134)),
|
|
show $ cast {from = Bits32} {to = Bits16} (cast (b16max + 134))
|
|
]
|
|
|
|
narrowFromBits16 : List String
|
|
narrowFromBits16 = [
|
|
show $ cast {from = Bits16} {to = Bits8} (cast (b8max + 134))
|
|
]
|
|
|
|
--
|
|
-- Negative numbers
|
|
--
|
|
|
|
negativeNumberCast : List String
|
|
negativeNumberCast = [
|
|
show $ cast {to = Bits8} (-19),
|
|
show $ cast {to = Bits16} (-19),
|
|
show $ cast {to = Bits32} (-19),
|
|
show $ cast {to = Bits64} (-19)
|
|
]
|