public void ActorPath_Parse_HandlesCasing_ForRemote()
{
const string uriString = "aKKa://sYstEm@hOst:4711/pAth1/pAth2";
var actorPath = ActorPathParse(uriString);
// "Although schemes are case insensitive, the canonical form is lowercase and documents that
// specify schemes must do so with lowercase letters. An implementation should accept
// uppercase letters as equivalent to lowercase in scheme names (e.g., allow "HTTP"
// as well as "http") for the sake of robustness but should only produce lowercase scheme names
// for consistency." rfc3986
Assert.True(actorPath.Address.Protocol.Equals("akka", StringComparison.Ordinal), "protocol should be lowercase");
//In Akka, at least the system name is case-sensitive, see http://doc.akka.io/docs/akka/current/additional/faq.html#what-is-the-name-of-a-remote-actor
Assert.True(actorPath.Address.System.Equals("sYstEm", StringComparison.Ordinal), "system");
//According to rfc3986 host is case insensitive, but should be produced as lowercase
Assert.True(actorPath.Address.Host.Equals("host", StringComparison.Ordinal), "host");
actorPath.Address.Port.ShouldBe(4711, "port");
var elements = actorPath.Elements.ToList();
elements.Count.ShouldBe(2, "number of elements in path");
Assert.True("pAth1".Equals(elements[0], StringComparison.Ordinal), "first path element");
Assert.True("pAth2".Equals(elements[1], StringComparison.Ordinal), "second path element");
Assert.Equal(actorPath.ToString(), "akka://sYstEm@host:4711/pAth1/pAth2");
}