verbena 0.2.0

Scripting language
# Basic arithmetic
assert 1 + 1 == 2
assert 100 - 50 == 50
assert 7 * 8 == 56
assert 100 / 5 == 20
assert 10 % 3 == 1
assert (-5) + 10 == 5

# Negation
assert -(-5) == 5
assert -(0) == 0
assert -(9999999999999) == -9999999999999

# Exponentiation
assert 2 ** 10 == 1024
assert 10 ** 9 == 1000000000
assert -2 ** 5 == -32
assert -2 ** 6 == 64
assert 0 ** 0 == 1  # Most languages define 0^0 = 1

# Absolute value
assert abs(100) == 100
assert abs(-100) == 100
assert abs(0) == 0

# Minimum/Maximum
assert min(5, 10) == 5
assert min(-5, -10) == -10
assert max(5, 10) == 10
assert max(-5, -10) == -5

# Bit operations
assert 5 & 3 == 1       # 101 AND 011 = 001
assert 5 | 3 == 7       # 101 OR 011 = 111
assert 5 ^ 3 == 6       # 101 XOR 011 = 110
assert ~5 & 0xFF == 250 # NOT 00000101 = 11111010 (masked to 8 bits)
assert 5 << 2 == 20     # 101 << 2 = 10100
assert 20 >> 2 == 5     # 10100 >> 2 = 101

# Integer square root
assert sqrt(0) == 0
assert sqrt(1) == 1
assert sqrt(4) == 2
assert sqrt(9) == 3

# Number base conversion
assert parseInt("ff", 16) == 255  # From hexadecimal
assert parseInt("11111111", 2) == 255  # From binary

# Testing string conversion
assert string(12345) == "12345"
assert string(-9876) == "-9876"
assert string(0) == "0"

# Testing parsing from string
assert parseFloat("12345") == 12345
assert parseFloat("-9876") == -9876
assert parseFloat("0") == 0

# Testing comparison operators
assert 10 < 20
assert 10 <= 10
assert 20 > 10
assert 20 >= 20
assert 10 == 10
assert 10 != 20

print "ok"