/**
* Copyright (c) 2013, Will Szumski
*
* This file is part of formicidae.
*
* formicidae is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* formicidae is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with formicidae. If not, see <http://www.gnu.org/licenses/>.
*/
package org.cowboycoders.ant;
import java.util.ArrayList;
import java.util.concurrent.atomic.AtomicInteger;
import net.vidageek.mirror.dsl.Mirror;
import static org.junit.Assert.*;
import org.junit.Test;
public class NetworkHandleTest {
@Test (expected=IllegalStateException.class)
public void checkFreeCanOnlyBeCalledOnce() {
NetworkKey key = new NetworkKey(1,2,3,4,5,6,7,8);
Network n = new Network(0, key, null);
NetworkHandle h = new NetworkHandle(n);
assertEquals(key,h.getNetworkKey());
h.free();
h.getNetworkKey();
}
@Test
public void checkRefCountIncremented() {
NetworkKey key = new NetworkKey(1,2,3,4,5,6,7,8);
Network n = new Network(0, key, null);
ArrayList<NetworkHandle> handles = new ArrayList<NetworkHandle>();
for (int i = 0 ; i < 10 ; i++) {
NetworkHandle h = new NetworkHandle(n);
handles.add(h);
}
AtomicInteger count = (AtomicInteger) new Mirror().on(n).get().field("refCount");
assertEquals(10, count.get());
for (NetworkHandle h : handles) {
h.free();
}
assertEquals(0, count.get());
}
}