public void MethodSignatureEncoder_Parameters() { var b = new BlobBuilder(); var e = new MethodSignatureEncoder(b, hasVarArgs: false); ReturnTypeEncoder returnType; ParametersEncoder parameters; e.Parameters(0, out returnType, out parameters); AssertEx.Equal(new byte[] { 0x00 }, b.ToArray()); Assert.Same(b, parameters.Builder); Assert.Same(b, returnType.Builder); b.Clear(); e.Parameters(1000000, out returnType, out parameters); AssertEx.Equal(new byte[] { 0xC0, 0x0F, 0x42, 0x40 }, b.ToArray()); b.Clear(); e.Parameters(10, rt => Assert.Same(b, rt.Builder), ps => Assert.Same(b, ps.Builder)); AssertEx.Equal(new byte[] { 0x0A }, b.ToArray()); b.Clear(); Assert.Throws<ArgumentOutOfRangeException>(() => e.Parameters(-1, out returnType, out parameters)); Assert.Throws<ArgumentOutOfRangeException>(() => e.Parameters(BlobWriterImpl.MaxCompressedIntegerValue + 1, out returnType, out parameters)); Assert.Throws<ArgumentNullException>(() => e.Parameters(0, null, ps => { })); Assert.Throws<ArgumentNullException>(() => e.Parameters(0, rt => { }, null)); }
public void MethodSignatureEncoder_Parameters() { var b = new BlobBuilder(); var e = new MethodSignatureEncoder(b, hasVarArgs: false); Assert.Same(b, e.Builder); var parts = e.Parameters(0); AssertEx.Equal(new byte[] { 0x00 }, b.ToArray()); Assert.Same(b, parts.Item1.Builder); Assert.Same(b, parts.Item2.Builder); b.Clear(); e.Parameters(1000000); AssertEx.Equal(new byte[] { 0xC0, 0x0F, 0x42, 0x40 }, b.ToArray()); b.Clear(); e.Parameters(10, part => Assert.Same(b, part.Builder), part => Assert.Same(b, part.Builder)); AssertEx.Equal(new byte[] { 0x0A }, b.ToArray()); b.Clear(); Assert.Throws<ArgumentOutOfRangeException>(() => e.Parameters(-1)); Assert.Throws<ArgumentOutOfRangeException>(() => e.Parameters(BlobWriterImpl.MaxCompressedIntegerValue + 1)); Assert.Throws<ArgumentNullException>(() => e.Parameters(0, null, _ => { })); Assert.Throws<ArgumentNullException>(() => e.Parameters(0, _ => { }, null)); }