public void ItemBoundMismatchLengthTest_ShouldThrowInvalidOperation()
    {
        var expected = new ItemBoundLengthClass {
            Items = new List <string>(new[] { "abc", "defghi" })
        };

#if TESTASYNC
        Assert.ThrowsException <AggregateException>(() => Roundtrip(expected));
#else
        Assert.ThrowsException <InvalidOperationException>(() => Roundtrip(expected));
#endif
    }
    public void ItemBoundLengthTest()
    {
        var expected = new ItemBoundLengthClass {
            Items = new List <string>(new[] { "abc", "def", "ghi" })
        };

        var itemLength     = expected.Items[0].Length;
        var expectedLength = sizeof(int) + itemLength * expected.Items.Count;
        var actual         = Roundtrip(expected, expectedLength);

        Assert.AreEqual(itemLength, actual.ItemLength);
        Assert.IsTrue(expected.Items.SequenceEqual(actual.Items));
    }