package org.rubypeople.rdt.debug.core.tests;
import org.eclipse.debug.core.DebugEvent;
import org.rubypeople.rdt.internal.debug.core.model.RubyDebugTarget;
import org.rubypeople.rdt.internal.debug.core.model.ThreadInfo;
import junit.framework.TestCase;
public class TC_RubyDebugTarget extends TestCase {
public void testThread() {
RubyDebugTarget target = new RubyDebugTarget(null, RubyDebugTarget.DEFAULT_PORT);
ThreadInfo[] initial = new ThreadInfo[] { new ThreadInfo(1, "run")} ;
DebugEvent[] events = target.updateThreadsInternal(initial) ;
assertEquals(1, events.length) ;
assertEquals(DebugEvent.CREATE, events[0].getKind()) ;
ThreadInfo[] threadAdded = new ThreadInfo[] { new ThreadInfo(1, "run"), new ThreadInfo(2, "sleep")} ;
events = target.updateThreadsInternal(threadAdded) ;
assertEquals(1, events.length) ;
assertEquals(DebugEvent.CREATE, events[0].getKind()) ;
events = target.updateThreadsInternal(initial) ;
assertEquals(1, events.length) ;
assertEquals(DebugEvent.TERMINATE, events[0].getKind()) ;
ThreadInfo[] changed = new ThreadInfo[] { new ThreadInfo(1, "sleep")} ;
events = target.updateThreadsInternal(changed) ;
assertEquals(1, events.length) ;
assertEquals(DebugEvent.CHANGE, events[0].getKind()) ;
ThreadInfo[] addAndRemove = new ThreadInfo[] { new ThreadInfo(2, "run")} ;
events = target.updateThreadsInternal(addAndRemove) ;
assertEquals(2, events.length) ;
assertEquals(DebugEvent.CREATE, events[0].getKind()) ;
assertEquals(DebugEvent.TERMINATE, events[1].getKind()) ;
}
}