blob: 454db9cb0cd1de86c6971ee19c1c0bfa6003c4ce [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package groovy
import groovy.test.GroovyTestCase
/**
* Test numeric literal types (with and without suffixes)
* @see org.codehaus.groovy.syntax.parser/ASTBuilder#createIntegralNumber()
* @see org.codehaus.groovy.syntax.parser/ASTBuilder#createDecimalNumber()
*/
class LiteralTypesTest extends GroovyTestCase {
void testIntegral() {
def x = 42
assert x instanceof Integer
x = 42I
assert x instanceof Integer
x = 42i
assert x instanceof Integer
x = 42L
assert x instanceof Long
x = 42G
assert x instanceof BigInteger
x = 0xFF //Hex
assert x instanceof Integer
assert x == new Integer("255")
x = 0xFFL //Hex
assert x instanceof Long
assert x == new Long("255")
x = 0xFFG //Hex
assert x instanceof BigInteger
assert x == new BigInteger("FF",16)
x = 0x9000000000000000
assert x instanceof BigInteger
assert x == new BigInteger("9000000000000000",16)
x = 077 //octal
assert x instanceof Integer
assert x == new Integer("63")
x = 077l //octal
assert x instanceof Long
assert x == new Long("63")
x = 077g //octal
assert x instanceof BigInteger
assert x == new BigInteger("77",8)
x = 2147483647 // max integer value
assert x instanceof Integer
assert x == new Integer("2147483647")
x = -2147483648 // min integer constant
assert x < 0
assert x == new Integer("-2147483648")
assert x instanceof Integer, x.class
x = -2147483649 // min integer value - 1
assert x == new Long("-2147483649")
assert x instanceof Long
x = 2147483648 // 1 + max integer value
assert x == new Long("2147483648")
assert x instanceof Long
x = 9223372036854775807 // max long value
assert x == new Long("9223372036854775807")
assert x instanceof Long
x = -9223372036854775808 // min long value
assert x == new Long("-9223372036854775808")
assert x instanceof Long
x = -9223372036854775809 // min long value - 1
assert x == new BigInteger("-9223372036854775809")
assert x instanceof BigInteger
x = 9223372036854775808 // 1 + max long value
assert x == new BigInteger("9223372036854775808")
assert x instanceof BigInteger
}
void testDecimal() {
def x = 3.2
assert x instanceof BigDecimal
assert x == new BigDecimal("3.2")
x = 3.2G
assert x instanceof BigDecimal
assert x == new BigDecimal("3.2")
x = 3.2g
assert x instanceof BigDecimal
assert x == new BigDecimal("3.2")
x = -3.2
assert x instanceof BigDecimal
assert x == new BigDecimal("-3.2")
x = 3.2D
assert x instanceof Double
assert x == new Double("3.2")
x = -3.2d
assert x instanceof Double
assert x == new Double("-3.2")
x = 3.2F
assert x instanceof Float
assert x == new Float("3.2")
x = -3.2f
assert x instanceof Float
assert x == new Float("-3.2")
}
void testExponential() {
def x = 3.1415926535e42
assert x instanceof BigDecimal
assert x == new BigDecimal("3.1415926535e42")
x = 3.2e+2
assert x instanceof BigDecimal
assert x == new BigDecimal("3.2e+2")
x = 3.2e-2
assert x instanceof BigDecimal
assert x == new BigDecimal("3.2e-2")
x = 3.2e2d
assert x instanceof Double
assert x == new Double("3.2e2")
x = 3.2e2f
assert x instanceof Float
assert x == new Float("3.2e2")
}
}