jtulach@303: /* jtulach@303: * To change this template, choose Tools | Templates jtulach@303: * and open the template in the editor. jtulach@303: */ jtulach@303: jtulach@303: package org.apidesign.codeinjection; jtulach@303: jtulach@303: import org.apidesign.codeinjection.spi.CountDownExtender; jtulach@303: import org.junit.Test; jtulach@303: import org.netbeans.junit.MockServices; jtulach@303: import static org.junit.Assert.*; jtulach@303: jtulach@303: /** Final count down test. jtulach@303: * jtulach@303: * @author Jaroslav Tulach jtulach@303: */ jtulach@303: public class Version20Test { jtulach@303: jtulach@303: public Version20Test() { jtulach@303: } jtulach@303: jtulach@303: /** creates version 2.0 */ jtulach@303: private static CountDown create(int value) { jtulach@303: return new CountDownImplV2(value); jtulach@303: } jtulach@303: jtulach@303: @Test jtulach@303: public void testDecrementFourTimes() { jtulach@303: MockServices.setServices(); jtulach@303: CountDown counter = create(4); jtulach@303: assertFalse("Not down yet", counter.isDown()); counter.down(); jtulach@303: assertFalse("Not down yet", counter.isDown()); counter.down(); jtulach@303: assertFalse("Not down yet", counter.isDown()); counter.down(); jtulach@303: assertFalse("Not down yet", counter.isDown()); counter.down(); jtulach@303: assertTrue("Down now", counter.isDown()); jtulach@303: } jtulach@303: jtulach@305: // BEGIN: codeinjection.twice jtulach@303: @Test jtulach@303: public void testDecrementTwoTimesEnough() { jtulach@303: MockServices.setServices(DecrementByTwo.class); jtulach@303: CountDown counter = create(4); jtulach@303: assertFalse("Not down yet", counter.isDown()); counter.down(); jtulach@303: assertFalse("Not down yet", counter.isDown()); counter.down(); jtulach@303: assertTrue("Two Down is enough", counter.isDown()); jtulach@303: } jtulach@303: jtulach@303: public static final class DecrementByTwo implements CountDownExtender { jtulach@303: public int decrement(int value) { jtulach@303: return value - 2; jtulach@303: } jtulach@303: } jtulach@305: // END: codeinjection.twice jtulach@305: }