public void Test()
{
SimulationTransportAddress.Enable();
SimulationTransportAddressOther.Enable();
var ta = TransportAddressFactory.CreateInstance("b.s://234580") as SimulationTransportAddress;
var tai = ta.Invert();
TransportAddress[] tas = new TransportAddress[2] { tai, ta };
var ta_oth = TransportAddressFactory.CreateInstance("b.s://234581");
var ta_oth0 = TransportAddressFactory.CreateInstance("b.s://234582");
ConeNat nat = new ConeNat(ta, 30000);
Assert.IsFalse(nat.Incoming(ta_oth), "No outbound yet...");
Assert.IsTrue(nat.Outgoing(ta_oth), "outbound...");
Assert.IsFalse(nat.AllowingIncomingConnections, "Have not received external ta.");
Assert.AreEqual(nat.InternalTransportAddresses, nat.KnownTransportAddresses, "ITA and KTA match");
nat.UpdateTAs(ta_oth, ta);
Assert.IsTrue(nat.Incoming(ta_oth), "Allowed incoming");
Assert.IsTrue(nat.Incoming(ta_oth0), "Allowed incoming 0");
Assert.IsTrue(nat.AllowingIncomingConnections, "Have received external ta.");
Assert.AreEqual(tas, nat.KnownTransportAddresses, "Two TAs!");
Brunet.Util.SimpleTimer.RunSteps(7500);
Assert.IsTrue(nat.Incoming(ta_oth0), "Allowed incoming 0");
Brunet.Util.SimpleTimer.RunSteps(7500);
Assert.IsTrue(nat.Incoming(ta_oth0), "Allowed incoming 0");
Brunet.Util.SimpleTimer.RunSteps(7500);
Assert.IsTrue(nat.Incoming(ta_oth0), "Allowed incoming 0");
Brunet.Util.SimpleTimer.RunSteps(7500);
Assert.IsTrue(nat.Incoming(ta_oth0), "Allowed incoming 0");
Assert.IsTrue(nat.AllowingIncomingConnections, "Have received external ta.");
Assert.AreEqual(tas, nat.KnownTransportAddresses, "Two TAs!");
Brunet.Util.SimpleTimer.RunSteps(60000);
Assert.IsFalse(nat.AllowingIncomingConnections, "AllowIC: Timed out...");
Assert.IsFalse(nat.Incoming(ta_oth), "Incoming: Timed out....");
}
}