public void TestParseJoin()
        {
            var join = OperationalMessage.MessageFrom(MessageFixtures.JoinAsText());

            Assert.True(join.IsJoin);
            var expectedNode =
                new Node(
                    Id.Of(1),
                    new Name("node1"),
                    Address.From("localhost:37371", AddressType.Op),
                    Address.From("localhost:37372", AddressType.App));
            var expectedJoin = new Join(expectedNode);

            Assert.Equal(expectedNode, ((Join)join).Node);
            Assert.Equal(expectedJoin, join);
        }
        public void TestParseLeader()
        {
            var leader1 = OperationalMessage.MessageFrom(MessageFixtures.LeaderAsText());

            Assert.True(leader1.IsLeader);
            Assert.Equal(Id.Of(1), leader1.Id);
            var expectedLeader1 = new Leader(Id.Of(1));

            Assert.Equal(expectedLeader1, leader1);

            var leader100 = OperationalMessage.MessageFrom(OperationalMessage.LEADER + "\n" + "id=100");

            Assert.True(leader100.IsLeader);
            Assert.Equal(Id.Of(100), leader100.Id);
            var expectedLeader100 = new Leader(Id.Of(100));

            Assert.Equal(expectedLeader100, leader100);
        }
        public void TestParseDirectory()
        {
            var dir = OperationalMessage.MessageFrom(MessageFixtures.DirectoryAsText(1, 2, 3));

            Assert.True(dir.IsDirectory);
            Assert.Equal(Id.Of(MessageFixtures.DefaultNodeId), dir.Id);
            Assert.Equal(new Name(MessageFixtures.DefaultNodeName), ((Directory)dir).Name);

            int index = 1;

            foreach (var node in ((Directory)dir).Nodes)
            {
                Assert.Equal(Id.Of(index), node.Id);
                Assert.Equal(new Name("node" + index), node.Name);
                Assert.Equal(Address.From(MessageFixtures.OpAddresses[index], AddressType.Op), node.OperationalAddress);
                Assert.Equal(Address.From(MessageFixtures.AppAddresses[index], AddressType.App), node.ApplicationAddress);

                ++index;
            }

            var nodeEntries = new HashSet <Node>();

            nodeEntries.Add(new Node(
                                Id.Of(1),
                                new Name("node1"),
                                Address.From(MessageFixtures.OpAddresses[1], AddressType.Op),
                                Address.From(MessageFixtures.AppAddresses[1], AddressType.App)));
            nodeEntries.Add(new Node(
                                Id.Of(2),
                                new Name("node2"),
                                Address.From(MessageFixtures.OpAddresses[2], AddressType.Op),
                                Address.From(MessageFixtures.AppAddresses[2], AddressType.App)));
            nodeEntries.Add(new Node(
                                Id.Of(3),
                                new Name("node3"),
                                Address.From(MessageFixtures.OpAddresses[3], AddressType.Op),
                                Address.From(MessageFixtures.AppAddresses[3], AddressType.App)));

            var expectedDir = new Directory(Id.Of(MessageFixtures.DefaultNodeId), new Name(MessageFixtures.DefaultNodeName), nodeEntries);

            Assert.Equal(expectedDir, dir);
        }