// Path: src/test/java/com/github/vbauer/herald/core/BasicTest.java
// @RunWith(BlockJUnit4ClassRunner.class)
// public abstract class BasicTest {
// 
//     protected final void checkUtilConstructorContract(final Class<?> utilClass) {
//         PrivateConstructorChecker
//             .forClass(utilClass)
//             .expectedTypeOfException(UnsupportedOperationException.class)
//             .check();
//     }
// 
// }
// 
// Path: src/test/java/com/github/vbauer/herald/ext/spring/bean/CheckerBean.java
// @Component
// public class CheckerBean {
// 
//     @Inject
//     private LogBeanPostProcessor logBeanPostProcessor;
// 
//     private final ClassLogBean classLogBean;
//     private final LogBean logBean;
//     private final NamedLogBean namedLogBean;
// 
// 
//     @Inject
//     public CheckerBean(
//         final ClassLogBean classLogBean,
//         final LogBean logBean,
//         final NamedLogBean namedLogBean
//     ) {
//         this.classLogBean = classLogBean;
//         this.logBean = logBean;
//         this.namedLogBean = namedLogBean;
//     }
// 
// 
//     public void checkBeans() {
//         checkBeans(classLogBean, logBean, namedLogBean);
//     }
// 
//     public void checkPostProcessor() {
//         checkBeans(
//             checkPostProcessor(new ClassLogBean()),
//             checkPostProcessor(new LogBean()),
//             checkPostProcessor(new NamedLogBean())
//         );
//     }
// 
// 
//     private void checkBeans(
//         final ClassLogBean classLogBean, final LogBean logBean, final NamedLogBean namedLogBean
//     ) {
//         ClassLogBeanChecker.check(classLogBean);
//         LogBeanChecker.check(logBean);
//         NamedLogBeanChecker.check(namedLogBean);
//     }
// 
//     @SuppressWarnings("unchecked")
//     private <T> T checkPostProcessor(final T bean) {
//         final T before = (T) logBeanPostProcessor.postProcessBeforeInitialization(bean, null);
//         assertThat(before, equalTo(bean));
// 
//         final T after = (T) logBeanPostProcessor.postProcessAfterInitialization(bean, null);
//         assertThat(after, equalTo(bean));
// 
//         return bean;
//     }
// 
// }
// 
// Path: src/test/java/com/github/vbauer/herald/ext/spring/context/SpringTestContext.java
// @Configuration
// @ComponentScan(basePackages = "com.github.vbauer.herald.ext.spring.bean")
// public class SpringTestContext {
// 
//     @Bean
//     public LogBeanPostProcessor logBeanPostProcessor() {
//         return new LogBeanPostProcessor();
//     }
// 
// }


import com.github.vbauer.herald.core.BasicTest;
import com.github.vbauer.herald.ext.spring.bean.CheckerBean;
import com.github.vbauer.herald.ext.spring.context.SpringTestContext;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
package com.github.vbauer.herald.ext.spring;


/**
 * @author Vladislav Bauer
 */

@ContextConfiguration(classes = SpringTestContext.class)
@RunWith(SpringJUnit4ClassRunner.class)
public class SpringTest extends BasicTest {

    @Autowired
// Path: src/test/java/com/github/vbauer/herald/core/BasicTest.java
// @RunWith(BlockJUnit4ClassRunner.class)
// public abstract class BasicTest {
// 
//     protected final void checkUtilConstructorContract(final Class<?> utilClass) {
//         PrivateConstructorChecker
//             .forClass(utilClass)
//             .expectedTypeOfException(UnsupportedOperationException.class)
//             .check();
//     }
// 
// }
// 
// Path: src/test/java/com/github/vbauer/herald/ext/spring/bean/CheckerBean.java
// @Component
// public class CheckerBean {
// 
//     @Inject
//     private LogBeanPostProcessor logBeanPostProcessor;
// 
//     private final ClassLogBean classLogBean;
//     private final LogBean logBean;
//     private final NamedLogBean namedLogBean;
// 
// 
//     @Inject
//     public CheckerBean(
//         final ClassLogBean classLogBean,
//         final LogBean logBean,
//         final NamedLogBean namedLogBean
//     ) {
//         this.classLogBean = classLogBean;
//         this.logBean = logBean;
//         this.namedLogBean = namedLogBean;
//     }
// 
// 
//     public void checkBeans() {
//         checkBeans(classLogBean, logBean, namedLogBean);
//     }
// 
//     public void checkPostProcessor() {
//         checkBeans(
//             checkPostProcessor(new ClassLogBean()),
//             checkPostProcessor(new LogBean()),
//             checkPostProcessor(new NamedLogBean())
//         );
//     }
// 
// 
//     private void checkBeans(
//         final ClassLogBean classLogBean, final LogBean logBean, final NamedLogBean namedLogBean
//     ) {
//         ClassLogBeanChecker.check(classLogBean);
//         LogBeanChecker.check(logBean);
//         NamedLogBeanChecker.check(namedLogBean);
//     }
// 
//     @SuppressWarnings("unchecked")
//     private <T> T checkPostProcessor(final T bean) {
//         final T before = (T) logBeanPostProcessor.postProcessBeforeInitialization(bean, null);
//         assertThat(before, equalTo(bean));
// 
//         final T after = (T) logBeanPostProcessor.postProcessAfterInitialization(bean, null);
//         assertThat(after, equalTo(bean));
// 
//         return bean;
//     }
// 
// }
// 
// Path: src/test/java/com/github/vbauer/herald/ext/spring/context/SpringTestContext.java
// @Configuration
// @ComponentScan(basePackages = "com.github.vbauer.herald.ext.spring.bean")
// public class SpringTestContext {
// 
//     @Bean
//     public LogBeanPostProcessor logBeanPostProcessor() {
//         return new LogBeanPostProcessor();
//     }
// 
// }


// Path: src/test/java/com/github/vbauer/herald/ext/spring/SpringTest.java
import com.github.vbauer.herald.core.BasicTest;
import com.github.vbauer.herald.ext.spring.bean.CheckerBean;
import com.github.vbauer.herald.ext.spring.context.SpringTestContext;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

package com.github.vbauer.herald.ext.spring;


/**
 * @author Vladislav Bauer
 */

@ContextConfiguration(classes = SpringTestContext.class)
@RunWith(SpringJUnit4ClassRunner.class)
public class SpringTest extends BasicTest {

    @Autowired
    private CheckerBean checkerBean;