public void DeserializeConstructor_InitializesFromSerializationInfo()
        {
            // Arrange
            var node = MockNode();
            var expected = new SerializedNode<INode>(node);
            var info = new SerializationInfo(expected.GetType(), MockFormatterConverter());
            expected.GetObjectData(info, new StreamingContext());

            // Act
            var actual = new SerializedNode<INode>(info, new StreamingContext());

            // Assert
            Assert.Equal(expected.NodeType, actual.NodeType);
            Assert.Equal(expected.Node, actual.Node);
        }
        public void GetObjectData_SetsEnoughSerializationInfoToDeserialize()
        {
            // Arrange
            var node = MockNode();
            var expected = new SerializedNode<INode>(node);
            var info = new SerializationInfo(expected.GetType(), MockFormatterConverter());

            // Act
            expected.GetObjectData(info, new StreamingContext());

            // Assert
            var actualNode = info.GetValue(nameof(expected.Node), expected.Node.GetType());
            var actualNodeType = (Type)info.GetValue(nameof(expected.NodeType), typeof(Type));
            Assert.Equal(expected.Node, actualNode);
            Assert.Equal(expected.NodeType, actualNodeType);
        }