blob: b2fe1031af3e17afa6d16b575a96870adbb9f876 [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
class KeywordsInPropertyNamesTest extends GroovyTestCase {
void testKeywords() {
def value = "returnValue"
StaticAndDefaultClass.metaClass.static.dynStaticMethod = {-> value }
assert value == StaticAndDefaultClass.dynStaticMethod()
StaticAndDefaultClass.metaClass.default = value
StaticAndDefaultClass.metaClass.goto = value
assert value == new StaticAndDefaultClass().default
assert value == new StaticAndDefaultClass().goto
assert String.package.name == 'java.lang'
}
void testModifierKeywordsAsMapKeys() {
def map = [
private: 1, public: 2, protected: 3, static: 4,
transient: 5, final: 6, abstract: 7, native: 8,
threadsafe: 9, synchronized: 10, volatile: 11, strictfp: 12
]
assert 1..12 == [
map.private, map.public, map.protected, map.static,
map.transient, map.final, map.abstract, map.native,
map.threadsafe, map.synchronized, map.volatile, map.strictfp
]
}
void testBuiltInTypeKeywordsAsExpandoKeys() {
def e = new Expando(void: 1, boolean: 2, byte: 3, char: 4, short: 5, int: 6)
e.float = 7
e.long = 8
e.double = 9
assert 1..9 == [
e.void, e.boolean, e.byte,
e.char, e.short, e.int,
e.float, e.long, e.double
]
}
void testMapWithKeywords() {
def d = new Date()
def map = [
(d): 'foo',
null: 'bar',
(null): 'baz',
as: 'shown',
assert: 'true',
break: 'free',
case: 'tool',
catch: 'cold',
class: 'action',
const: 'flux',
continue: 'on',
def: 'leppard',
default: 'loan',
do: 'nothing',
else: 'where',
enum: 'erate',
extends: 'over',
false: 'start',
finally: 'finished',
for: 'ever',
goto: 'jail',
if: 'then',
implements: 'interface',
import: 'tax',
in: 'trouble',
instanceof: 'abuse',
interface: 'with',
new: 'car',
package: 'wrapped',
return: 'home',
super: 'duper',
switch: 'off',
this: 'time',
throw: 'away',
throws: 'up',
true: 'love',
try: 'again',
while: 'away',
]
assert map[d] == 'foo'
assert map.null == 'bar'
assert map[null] == 'baz'
assert map.as == 'shown'
assert map.assert == 'true'
assert map.break == 'free'
assert map.case == 'tool'
assert map.catch == 'cold'
assert map.class == 'action'
assert map.const == 'flux'
assert map.continue == 'on'
assert map.def == 'leppard'
assert map.default == 'loan'
assert map.do == 'nothing'
assert map.else == 'where'
assert map.enum == 'erate'
assert map.extends == 'over'
assert map.false == 'start'
assert map.finally == 'finished'
assert map.for == 'ever'
assert map.goto == 'jail'
assert map.if == 'then'
assert map.implements == 'interface'
assert map.import == 'tax'
assert map.in == 'trouble'
assert map.instanceof == 'abuse'
assert map.interface == 'with'
assert map.new == 'car'
assert map.package == 'wrapped'
assert map.return == 'home'
assert map.super == 'duper'
assert map.switch == 'off'
assert map.this == 'time'
assert map.throw == 'away'
assert map.throws == 'up'
assert map.true == 'love'
assert map.try == 'again'
assert map.while == 'away'
}
}
class StaticAndDefaultClass {}