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 TestParseLeave()
        {
            var leave1 = OperationalMessage.MessageFrom(MessageFixtures.LeaveAsText());

            Assert.True(leave1.IsLeave);
            Assert.Equal(Id.Of(1), leave1.Id);
            var expectedLeave1 = new Leave(Id.Of(1));

            Assert.Equal(expectedLeave1, leave1);

            var leave100 = OperationalMessage.MessageFrom(OperationalMessage.LEAVE + "\n" + "id=100");

            Assert.True(leave100.IsLeave);
            Assert.Equal(Id.Of(100), leave100.Id);
            var expectedLeave100 = new Leave(Id.Of(100));

            Assert.Equal(expectedLeave100, leave100);
        }
        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);
        }