public void MethodSignatureEncoder_Parameters() { var b = new BlobBuilder(); var e = new MethodSignatureEncoder(b, hasVarArgs: false); Assert.Same(b, e.Builder); 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)); }
public static void Parameters(this MethodSignatureEncoder encoder, int parameterCount, Action <ReturnTypeEncoder> returnType, Action <ParametersEncoder> parameters) { ReturnTypeEncoder returnTypeEncoder; ParametersEncoder parametersEncoder; encoder.Parameters(parameterCount, out returnTypeEncoder, out parametersEncoder); returnType(returnTypeEncoder); parameters(parametersEncoder); }
public void EncodeMethodSignature(BlobBuilder methodSignatureBlob, MethodSignature signature) { BlobEncoder encoder = new BlobEncoder(methodSignatureBlob); MethodSignatureEncoder methodSigEncoder = encoder.MethodSignature( SignatureCallingConvention.Default, signature.GenericParameterCount, !signature.IsStatic); ReturnTypeEncoder returnTypeEncoder; ParametersEncoder parametersEncoder; methodSigEncoder.Parameters(signature.Length, out returnTypeEncoder, out parametersEncoder); // Return Type Sig EncodeTypeSignature(returnTypeEncoder.Type(), signature.ReturnType); // Parameter Types Sig for (int i = 0; i < signature.Length; i++) { EncodeTypeSignature(parametersEncoder.AddParameter().Type(), signature[i]); } }
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)); }