001    /*
002     * Copyright 2002-2004 the original author or authors.
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005     * use this file except in compliance with the License. You may obtain a copy of
006     * the License at
007     *
008     * http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012     * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013     * License for the specific language governing permissions and limitations under
014     * the License.
015     */
016    package org.springframework.binding.value.support;
017    
018    import org.springframework.binding.value.CommitTrigger;
019    import org.springframework.binding.value.CommitTriggerListener;
020    
021    import junit.framework.TestCase;
022    
023    /**
024     * Tests class {@link CommitTrigger}.
025     * 
026     * @author Oliver Hutchison
027     */
028    public class CommitTriggerTests extends TestCase {
029    
030        public void testCommitTrigger() {
031            CommitTrigger ct = new CommitTrigger();
032            ct.commit();
033            ct.revert();
034    
035            TestCommitTriggerListener l = new TestCommitTriggerListener();
036            ct.addCommitTriggerListener(l);
037            assertEquals(0, l.commits);
038            assertEquals(0, l.reverts);
039    
040            ct.commit();
041            assertEquals(1, l.commits);
042            ct.commit();
043            assertEquals(2, l.commits);
044            assertEquals(0, l.reverts);
045            ct.revert();
046            assertEquals(2, l.commits);
047            assertEquals(1, l.reverts);
048            
049            ct.removeCommitTriggerListener(l);
050            
051            ct.commit();
052            assertEquals(2, l.commits);
053            ct.revert();
054            assertEquals(1, l.reverts);        
055        }
056    
057        private class TestCommitTriggerListener implements CommitTriggerListener {
058    
059            public int commits;
060    
061            int reverts;
062    
063            public void commit() {
064                commits++;
065            }
066    
067            public void revert() {
068                reverts++;
069            }
070        }
071    }