Skip to content

Commit

Permalink
Implement ParameterSpec.HasDefaultValue
Browse files Browse the repository at this point in the history
Issue: #121
  • Loading branch information
MSDN-WhiteKnight committed Jul 23, 2022
1 parent 49b816f commit 28c9633
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
8 changes: 8 additions & 0 deletions CilTools.Metadata/ParameterSpec.cs
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,14 @@ public override MemberInfo Member
}
}

public override bool HasDefaultValue
{
get
{
return this.defval != DBNull.Value;
}
}

public override object DefaultValue
{
get
Expand Down
36 changes: 36 additions & 0 deletions tests/CilTools.Metadata.Tests/ParameterSpecTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -94,5 +94,41 @@ public void Test_GetCustomAttributes_Negative()
Assert.AreEqual(0, attrs.Length);
}
}

[TestMethod]
public void Test_HasDefaultValue()
{
AssemblyReader reader = new AssemblyReader();

using (reader)
{
Assembly ass = reader.LoadFrom(typeof(SampleMethods).Assembly.Location);
Type t = ass.GetType(typeof(SampleMethods).FullName);
MethodInfo m = t.GetMethod("CalcSum");
ParameterInfo[] pars = m.GetParameters();
Assert.IsFalse(pars[0].HasDefaultValue);
Assert.IsFalse(pars[1].HasDefaultValue);
}
}

[TestMethod]
public void Test_DefaultValue()
{
AssemblyReader reader = new AssemblyReader();

using (reader)
{
Assembly ass = reader.LoadFrom(typeof(SampleMethods).Assembly.Location);
Type t = ass.GetType(typeof(SampleMethods).FullName);
MethodInfo m = t.GetMethod("TestOptionalParams");
ParameterInfo[] pars = m.GetParameters();
Assert.IsTrue(pars[0].HasDefaultValue);
Assert.AreEqual(string.Empty, pars[0].DefaultValue);
Assert.AreEqual(string.Empty, pars[0].RawDefaultValue);
Assert.IsTrue(pars[1].HasDefaultValue);
Assert.AreEqual(0, pars[1].DefaultValue);
Assert.AreEqual(0, pars[1].RawDefaultValue);
}
}
}
}

0 comments on commit 28c9633

Please sign in to comment.