package org.slf4j.simple;

import static org.junit.Assert.fail;

import org.junit.Test;
import org.slf4j.ILoggerFactory;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
import org.slf4j.MarkerFactory;

// See https://jira.qos.ch/browse/SLF4J-463
public class DoubleInitializationPitfallTest {

	
	// See https://jira.qos.ch/browse/SLF4J-463 
	@Test
	public void verifyImpactOfMarkerFactory() {
		ILoggerFactory firstFactory = LoggerFactory.getILoggerFactory();
		MarkerFactory.getMarker("DOUBLE_INIT");
		ILoggerFactory secondFactory = LoggerFactory.getILoggerFactory();
		
		if(firstFactory != secondFactory) {
			fail("MarkerFactory.getMarker causes multiple provider initialization");
		}
	}

	@Test
	public void verifyImpactOfMDC() {
		ILoggerFactory firstFactory = LoggerFactory.getILoggerFactory();
		MDC.put("DoubleInitializationPitfallTest", "a");
		ILoggerFactory secondFactory = LoggerFactory.getILoggerFactory();
		
		if(firstFactory != secondFactory) {
			fail("MarkerFactory.getMarker causes multiple provider initialization");
		}
	}


}
