17ba0605dc97fb81bde8311510d27b3ccba170008Ceki Gulcu/** 27ba0605dc97fb81bde8311510d27b3ccba170008Ceki Gulcu * Copyright (c) 2004-2011 QOS.ch 3d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu * All rights reserved. 47ba0605dc97fb81bde8311510d27b3ccba170008Ceki Gulcu * 5d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu * Permission is hereby granted, free of charge, to any person obtaining 6d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu * a copy of this software and associated documentation files (the 7d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu * "Software"), to deal in the Software without restriction, including 8d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu * without limitation the rights to use, copy, modify, merge, publish, 9d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu * distribute, sublicense, and/or sell copies of the Software, and to 10d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu * permit persons to whom the Software is furnished to do so, subject to 11d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu * the following conditions: 127ba0605dc97fb81bde8311510d27b3ccba170008Ceki Gulcu * 13d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu * The above copyright notice and this permission notice shall be 14d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu * included in all copies or substantial portions of the Software. 157ba0605dc97fb81bde8311510d27b3ccba170008Ceki Gulcu * 16d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 20d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 237ba0605dc97fb81bde8311510d27b3ccba170008Ceki Gulcu * 24d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu */ 25d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcupackage org.slf4j; 26d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu 27d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcuimport java.io.PrintStream; 28d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcuimport java.util.Random; 29d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu 30d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcuimport junit.framework.TestCase; 31d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu 32d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcupublic class MissingSingletonMethodAssertionTest extends TestCase { 33d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu 3431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu StringPrintStream sps = new StringPrintStream(System.err); 3531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu PrintStream old = System.err; 3631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu int diff = 1024 + new Random().nextInt(10000); 37d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu 3831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu public MissingSingletonMethodAssertionTest(String name) { 3931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu super(name); 4031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 41d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu 4231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu protected void setUp() throws Exception { 4331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu super.setUp(); 4431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu System.setErr(sps); 4531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 46d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu 4731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu protected void tearDown() throws Exception { 4831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu super.tearDown(); 4931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu System.setErr(old); 50d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu } 51d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu 5231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu public void test() throws Exception { 5331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu try { 5431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu Logger logger = LoggerFactory.getLogger(this.getClass()); 5531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu String msg = "hello world " + diff; 5631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu logger.info(msg); 5731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu fail("NoSuchMethodError expected"); 5831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } catch (NoSuchMethodError e) { 5931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 60d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu 6131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu int lineCount = sps.stringList.size(); 6231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu assertTrue("number of lines should be 3 but was " + lineCount, lineCount == 3); 6331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 6431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu // expected output: 6531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu // SLF4J: slf4j-api 1.6.x (or later) is incompatible with this binding. 6631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu // SLF4J: Your binding is version 1.4.x or earlier. 6731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu // SLF4J: Upgrade your binding to version 1.6.x. or 2.0.x 68d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu 6931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu { 7031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu String s = (String) sps.stringList.get(0); 7131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu assertTrue(s.contains("SLF4J: slf4j-api 1.6.x (or later) is incompatible with this binding.")); 7231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 7331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu { 7431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu String s = (String) sps.stringList.get(1); 7531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu assertTrue(s.contains("SLF4J: Your binding is version 1.5.5 or earlier.")); 7631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 7731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu { 7831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu String s = (String) sps.stringList.get(2); 7931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu assertTrue(s.contains("SLF4J: Upgrade your binding to version 1.6.x.")); 8031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 8131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu 8231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu } 83d1d27b8d8748190f397b0be72c8d85722f8c5b00Ceki Gulcu} 84