mirror of https://github.com/fredrikekre/Runic.jl
2 changed files with 68 additions and 0 deletions
@ -0,0 +1,62 @@ |
|||||||
|
using Runic: |
||||||
|
format_string |
||||||
|
using Test: |
||||||
|
@test, @testset |
||||||
|
|
||||||
|
@testset "Hex/oct/bin literal integers" begin |
||||||
|
z(n) = "0"^n |
||||||
|
test_cases = [ |
||||||
|
# Hex UInt8 |
||||||
|
("0x" * z(n) * "1" => "0x01" for n in 0:1)..., |
||||||
|
# Hex UInt16 |
||||||
|
("0x" * z(n) * "1" => "0x0001" for n in 2:3)..., |
||||||
|
# Hex UInt32 |
||||||
|
("0x" * z(n) * "1" => "0x00000001" for n in 4:7)..., |
||||||
|
# Hex UInt64 |
||||||
|
("0x" * z(n) * "1" => "0x0000000000000001" for n in 8:15)..., |
||||||
|
# Hex UInt128 |
||||||
|
("0x" * z(n) * "1" => "0x" * z(31) * "1" for n in 16:31)..., |
||||||
|
# Hex BigInt |
||||||
|
("0x" * z(n) * "1" => "0x" * z(n) * "1" for n in 32:35)..., |
||||||
|
# Octal UInt8 |
||||||
|
("0o" * z(n) * "1" => "0o001" for n in 0:2)..., |
||||||
|
"0o377" => "0o377", # typemax(UInt8) |
||||||
|
# Octal UInt16 |
||||||
|
"0o400" => "0o000400", # typemax(UInt8) + 1 |
||||||
|
("0o" * z(n) * "1" => "0o000001" for n in 3:5)..., |
||||||
|
"0o177777" => "0o177777", # typemax(UInt16) |
||||||
|
# Octal UInt32 |
||||||
|
"0o200000" => "0o00000200000", # typemax(UInt16) + 1 |
||||||
|
("0o" * z(n) * "1" => "0o00000000001" for n in 6:10)..., |
||||||
|
"0o37777777777" => "0o37777777777", # typemax(UInt32) |
||||||
|
# Octal UInt64 |
||||||
|
"0o40000000000" => "0o0000000000040000000000", # typemax(UInt32) + 1 |
||||||
|
("0o" * z(n) * "1" => "0o" * z(21) * "1" for n in 11:21)..., |
||||||
|
"0o1777777777777777777777" => "0o1777777777777777777777", # typemax(UInt64) |
||||||
|
# Octal UInt128 |
||||||
|
"0o2" * z(21) => "0o" * z(21) * "2" * z(21), # typemax(UInt64) + 1 |
||||||
|
("0o" * z(n) * "1" => "0o" * z(42) * "1" for n in 22:42)..., |
||||||
|
"0o3" * "7"^42 => "0o3" * "7"^42, # typemax(UInt128) |
||||||
|
# Octal BigInt |
||||||
|
"0o4" * z(42) => "0o4" * z(42), # typemax(UInt128) + 1 |
||||||
|
"0o7" * z(42) => "0o7" * z(42), |
||||||
|
] |
||||||
|
# Test the test cases :) |
||||||
|
mod = Module() |
||||||
|
for (a, b) in test_cases |
||||||
|
c = Core.eval(mod, Meta.parse(a)) |
||||||
|
d = Core.eval(mod, Meta.parse(b)) |
||||||
|
@test c == d |
||||||
|
@test typeof(c) == typeof(d) |
||||||
|
end |
||||||
|
# Join all cases to a single string so that we only need to call the formatter once |
||||||
|
input_str = let io = IOBuffer() |
||||||
|
join(io, (case.first for case in test_cases), '\n') |
||||||
|
String(take!(io)) |
||||||
|
end |
||||||
|
output_str = let io = IOBuffer() |
||||||
|
join(io, (case.second for case in test_cases), '\n') |
||||||
|
String(take!(io)) |
||||||
|
end |
||||||
|
@test format_string(input_str) == output_str |
||||||
|
end |
||||||
Loading…
Reference in new issue