|
Groovy example source code file (LogTest.groovy)
The Groovy LogTest.groovy source codepackage groovy.util.logging import java.lang.reflect.* import java.util.logging.* import groovy.mock.interceptor.MockFor import org.junit.Assert import org.codehaus.groovy.control.MultipleCompilationErrorsException /** * Test to make sure the @Log annotation is working correctly. * * @author Guillaume Laforge * @author Jochen Theodorou * @author Dinko Srkoc * @author Hamlet D'Arcy * @author Raffaele Cigni * @author Alberto Vilches Raton * @author Tomasz Bujok */ class LogTest extends GroovyTestCase { public void testPrivateFinalStaticLogFieldAppears() { Class clazz = new GroovyClassLoader().parseClass(""" @groovy.util.logging.Log class MyClass { } """) assert clazz.declaredFields.find { Field field -> field.name == "log" && Modifier.isPrivate(field.getModifiers()) && Modifier.isStatic(field.getModifiers()) && Modifier.isTransient(field.getModifiers()) && Modifier.isFinal(field.getModifiers()) } } public void testPrivateFinalStaticNamedLogFieldAppears() { Class clazz = new GroovyClassLoader().parseClass(""" @groovy.util.logging.Log('logger') class MyClass { } """) assert clazz.declaredFields.find { Field field -> field.name == "logger" && Modifier.isPrivate(field.getModifiers()) && Modifier.isStatic(field.getModifiers()) && Modifier.isTransient(field.getModifiers()) && Modifier.isFinal(field.getModifiers()) } } public void testClassAlreadyHasLogField() { shouldFail { Class clazz = new GroovyClassLoader().parseClass(""" @groovy.util.logging.Log class MyClass { String log } """) assert clazz.newInstance() } } public void testClassAlreadyHasNamedLogField() { shouldFail { Class clazz = new GroovyClassLoader().parseClass(""" @groovy.util.logging.Log('logger') class MyClass { String logger } """) assert clazz.newInstance() } } void testLogFromStaticMethods() { Class clazz = new GroovyClassLoader().parseClass(""" @groovy.util.logging.Log class MyClass { static loggingMethod() { log.info ("info called") } } """) def logSpy = new LoggerSpy() def logger = new MockFor(Logger) logger.demand.getLogger { logSpy } logger.use { clazz.loggingMethod() } assert logSpy.infoParameter == 'info called' } public void testLogInfo() { Class clazz = new GroovyClassLoader().parseClass(""" @groovy.util.logging.Log class MyClass { def loggingMethod() { log.severe ("severe called") log.warning("warning called") log.info ("info called") log.fine ("fine called") log.finer ("finer called") log.finest ("finest called") } } """) def logSpy = new LoggerSpy() def logger = new MockFor(Logger) logger.demand.getLogger { logSpy } logger.use { def s = clazz.newInstance() s.loggingMethod() } assert logSpy.severeParameter == 'severe called' assert logSpy.warningParameter == 'warning called' assert logSpy.infoParameter == 'info called' assert logSpy.fineParameter == 'fine called' assert logSpy.finerParameter == 'finer called' assert logSpy.finestParameter == 'finest called' } public void testLogInfoWithName() { Class clazz = new GroovyClassLoader().parseClass(""" @groovy.util.logging.Log('logger') class MyClass { def loggingMethod() { logger.severe ("severe called") logger.warning("warning called") logger.info ("info called") logger.fine ("fine called") logger.finer ("finer called") logger.finest ("finest called") } } """) def logSpy = new LoggerSpy() def logger = new MockFor(Logger) logger.demand.getLogger { logSpy } logger.use { def s = clazz.newInstance() s.loggingMethod() } assert logSpy.severeParameter == 'severe called' assert logSpy.warningParameter == 'warning called' assert logSpy.infoParameter == 'info called' assert logSpy.fineParameter == 'fine called' assert logSpy.finerParameter == 'finer called' assert logSpy.finestParameter == 'finest called' } public void testLogGuard() { Class clazz = new GroovyClassLoader().parseClass(""" @groovy.util.logging.Log class MyClass { def loggingMethod() { log.setLevel(java.util.logging.Level.OFF) log.severe(prepareLogMessage()) log.warning(prepareLogMessage()) log.info (prepareLogMessage()) log.fine (prepareLogMessage()) log.finer (prepareLogMessage()) log.finest (prepareLogMessage()) } def prepareLogMessage() { return "formatted log message" } } """) def logSpy = new LoggerSpy() def logger = new MockFor(Logger) logger.demand.getLogger { logSpy } logger.use { def s = clazz.newInstance() s.loggingMethod() } assert !logSpy.severeParameter assert !logSpy.warningParameter assert !logSpy.infoParameter assert !logSpy.fineParameter assert !logSpy.finerParameter assert !logSpy.finestParameter } public void testInheritance() { def clazz = new GroovyShell().evaluate(""" class MyParent { private log } @groovy.util.logging.Log class MyClass extends MyParent { def loggingMethod() { log.severe(prepareLogMessage()) log.warning(prepareLogMessage()) log.info (prepareLogMessage()) log.fine (prepareLogMessage()) log.finer (prepareLogMessage()) log.finest (prepareLogMessage()) } def prepareLogMessage() { "formatted log message" } } return MyClass """) assert clazz.declaredFields.find { Field field -> field.name == "log" && Modifier.isPrivate(field.getModifiers()) && Modifier.isStatic(field.getModifiers()) && Modifier.isTransient(field.getModifiers()) && Modifier.isFinal(field.getModifiers()) } } public void testInheritance_ProtectedShadowing() { shouldFail(MultipleCompilationErrorsException) { new GroovyClassLoader().parseClass(""" class MyParent { protected log } @groovy.util.logging.Log class MyClass extends MyParent { } """) } } public void testInheritance_PublicShadowing() { shouldFail(MultipleCompilationErrorsException) { new GroovyClassLoader().parseClass(""" class MyParent { public log } @groovy.util.logging.Log class MyClass extends MyParent { } """) } } } private class LoggerSpy extends Logger { String severeParameter = null String warningParameter = null String infoParameter = null String fineParameter = null String finerParameter = null String finestParameter = null LoggerSpy() { super(null, null) } @Override void severe(String s) { if (severeParameter) throw new AssertionError("Severe already called once with parameter $severeParameter") severeParameter = s } @Override void warning(String s) { if (warningParameter) throw new AssertionError("Warning already called once with parameter $warningParameter") warningParameter = s } @Override void info(String s) { if (infoParameter) throw new AssertionError("Info already called once with parameter $infoParameter") infoParameter = s } @Override void fine(String s) { if (fineParameter) throw new AssertionError("Fine already called once with parameter $fineParameter") fineParameter = s } @Override void finer(String s) { if (finerParameter) throw new AssertionError("Finer already called once with parameter $finerParameter") finerParameter = s } @Override void finest(String s) { if (finestParameter) throw new AssertionError("Finest already called once with parameter $finestParameter") finestParameter = s } } Other Groovy examples (source code examples)Here is a short list of links related to this Groovy LogTest.groovy source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.