blob: 9d4cc54fda9c21ef695b1f46bdab3009dbfcb00e [file] [log] [blame]
# Tests of int(x, [base])
# from number
assert_eq(int(0), 0)
assert_eq(int(42), 42)
assert_eq(int(-1), -1)
assert_eq(int(2147483647), 2147483647)
assert_eq(int(-2147483647 - 1), -2147483648)
assert_eq(int(-2147483649), -2147483649)
assert_eq(int(1 << 100), 1 << 100)
# from bool
assert_eq(int(True), 1)
assert_eq(int(False), 0)
# from other
int(None) ### got NoneType, want string, int, float, or bool
---
# from string
int('') ### empty string
---
# no base
assert_eq(int('0'), 0)
assert_eq(int('1'), 1)
assert_eq(int('42'), 42)
assert_eq(int('-1'), -1)
assert_eq(int('-1234'), -1234)
assert_eq(int('2147483647'), 2147483647)
assert_eq(int('-2147483648'), -2147483647 - 1)
assert_eq(int('123456789012345678901234567891234567890'), 123456789012345678901234567891234567890)
assert_eq(int('-123456789012345678901234567891234567890'), -123456789012345678901234567891234567890)
assert_eq(int('-0xabcdefabcdefabcdefabcdefabcdef', 0), -0xabcdefabcdefabcdefabcdefabcdef)
assert_eq(int('1111111111111', 2), 8191)
assert_eq(int('1111111111111', 5), 305175781)
assert_eq(int('1111111111111', 8), 78536544841)
assert_eq(int('1111111111111', 10), 1111111111111)
assert_eq(int('1111111111111', 16), 300239975158033)
assert_eq(int('1111111111111', 36), 4873763662273663093)
assert_eq(int('016'), 16) # zero ok when base != 0.
assert_eq(int('+42'), 42) # '+' prefix ok
# with base, no prefix
assert_eq(int('11', 2), 3)
assert_eq(int('11', 9), 10)
assert_eq(int('AF', 16), 175)
assert_eq(int('11', 36), 37)
assert_eq(int('az', 36), 395)
assert_eq(int('11', 10), 11)
assert_eq(int('11', 0), 11)
# base and prefix
assert_eq(int('0b11', 0), 3)
assert_eq(int('0B11', 2), 3)
assert_eq(int('0o11', 0), 9)
assert_eq(int('0O11', 8), 9)
assert_eq(int('0XFF', 0), 255)
assert_eq(int('0xFF', 16), 255)
assert_eq(int('0b11', 0), 3)
assert_eq(int('-0b11', 0), -3)
assert_eq(int('+0b11', 0), 3)
assert_eq(int('0B11', 2), 3)
assert_eq(int('0o11', 0), 9)
assert_eq(int('0O11', 8), 9)
assert_eq(int('-11', 2), -3)
assert_eq(int('016', 8), 14)
assert_eq(int('016', 16), 22)
assert_eq(int('0', 0), 0)
assert_eq(int('0x0b10', 16), 0x0b10)
int('0xFF', 8) ### invalid base-8 literal: "0xFF"
---
int('016', 0) ### cannot infer base when string begins with a 0: "016"
---
int('123', 3) ### invalid base-3 literal: "123"
---
int('FF', 15) ### invalid base-15 literal: "FF"
---
int('123', -1) ### invalid base -1 \(want 2 <= base <= 36\)
---
int('123', 1) ### invalid base 1 \(want 2 <= base <= 36\)
---
int('123', 37) ### invalid base 37 \(want 2 <= base <= 36\)
---
int('123', 'x') ### got string for base, want int
---
int(True, 2) ### can't convert non-string with explicit base
---
int(True, 10) ### can't convert non-string with explicit base
---
int(1, 2) ### can't convert non-string with explicit base
---
# This case is allowed in Python but not Skylark
int() ### missing 1 required positional argument: x
---
# Unlike Python, leading and trailing whitespace is not allowed. Use int(s.strip()).
int(' 1') ### invalid base-10 literal: " 1"
---
int('1 ') ### invalid base-10 literal: "1 "
---
int('-') ### invalid base-10 literal: "-"
---
int('+') ### invalid base-10 literal: "\+"
---
int('0x') ### invalid base-10 literal: "0x"
---
int('1.5') ### invalid base-10 literal: "1.5"
---
int('ab') ### invalid base-10 literal: "ab"
---
int('--1') ### invalid base-10 literal: "--1"
---
int('-0x-10', 16) ### invalid base-16 literal: "-0x-10"