public void TestFoundLostAdvertisedName()
{
// create bus attachment
AllJoyn.BusAttachment bus = new AllJoyn.BusAttachment("BusListenerTest", true);
AllJoyn.QStatus status = AllJoyn.QStatus.FAIL;
// start the bus attachment
status = bus.Start();
Assert.Equal(AllJoyn.QStatus.OK, status);
// connect to the bus
status = bus.Connect(AllJoynTestCommon.GetConnectSpec());
Assert.Equal(AllJoyn.QStatus.OK, status);
listenerRegistered = false;
foundAdvertisedName = false;
lostAdvertisedName = false;
// register the bus listener
AllJoyn.BusListener busListener = new TestBusListener(this);
bus.RegisterBusListener(busListener);
Wait(MaxWaitTime);
Assert.Equal(true, listenerRegistered);
// advertise the name, & see if we find it
status = bus.FindAdvertisedName(ObjectName);
Assert.Equal(AllJoyn.QStatus.OK, status);
AllJoyn.SessionOpts sessionOpts = new AllJoyn.SessionOpts(
AllJoyn.SessionOpts.TrafficType.Messages, false,
AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any);
status = bus.AdvertiseName(ObjectName, sessionOpts.Transports);
Assert.Equal(AllJoyn.QStatus.OK, status);
Wait(MaxWaitTime);
Assert.Equal(true, foundAdvertisedName);
// stop advertising the name, & see if we lose it
status = bus.CancelAdvertisedName(ObjectName, sessionOpts.Transports);
Assert.Equal(AllJoyn.QStatus.OK, status);
Wait(MaxWaitTime);
Assert.Equal(true, lostAdvertisedName);
// TODO: move these into a teardown method?
busListener.Dispose();
bus.Dispose();
}