//
// Properties.cs
//
-// Author:
+// Authors:
// Marek Sieradzki (marek.sieradzki@gmail.com)
+// Marek Safar (marek.safar@gmail.com)
//
// (C) 2006 Marek Sieradzki
//
<PropertyGroup>
<Config>debug</Config>
<NullValue>null</NullValue>
+ <TargetValue> </TargetValue>
<Prop1>$(Config.Substring(0,3)) </Prop1>
<Prop2>$(Config.Length )</Prop2>
<Prop3>$(Config.StartsWith ('DE', System.StringComparison.OrdinalIgnoreCase))</Prop3>
<Prop4>$(NullValue.StartsWith ('Te', StringComparison.OrdinalIgnoreCase))</Prop4>
+ <Prop5>$(TargetValue.Trim('\\'))</Prop5>
</PropertyGroup>
</Project>
";
Assert.AreEqual ("5", proj.GetEvaluatedProperty ("Prop2"), "#2");
Assert.AreEqual ("True", proj.GetEvaluatedProperty ("Prop3"), "#3");
Assert.AreEqual ("False", proj.GetEvaluatedProperty ("Prop4"), "#4");
+ Assert.AreEqual ("", proj.GetEvaluatedProperty ("Prop5"), "#5");
}
[Test]
Assert.AreEqual (DateTime.Now.ToString ("yyyy.MM.dd"), proj.GetEvaluatedProperty ("Prop1"), "#1");
}
+ [Test]
+ public void InstanceMemberOnStaticProperty ()
+ {
+ string documentString = @"
+ <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+ <PropertyGroup>
+ <Prop1>$([System.DateTime]::Now.Year)</Prop1>
+ </PropertyGroup>
+ </Project>
+ ";
+
+ proj.LoadXml (documentString);
+ Assert.AreEqual (DateTime.Now.Year.ToString (), proj.GetEvaluatedProperty ("Prop1"), "#1");
+ }
+
+ [Test]
+ public void InstanceMembersOnStaticMethod ()
+ {
+ string documentString = @"
+ <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+ <PropertyGroup>
+ <Prop1>$([System.String]::Concat('a', 'bb', 'c').Length.GetHashCode ())</Prop1>
+
+ </PropertyGroup>
+ </Project>
+ ";
+
+ proj.LoadXml (documentString);
+ Assert.AreEqual (4.GetHashCode ().ToString (), proj.GetEvaluatedProperty ("Prop1"), "#1");
+ }
+
[Test]
public void MSBuildPropertyFunctions ()
{
proj.LoadXml (documentString);
Assert.AreEqual ("6.6", proj.GetEvaluatedProperty ("Prop1"), "#1");
- }
+ }
+
+ [Test]
+ public void Constructor ()
+ {
+ string documentString = @"
+ <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+ <PropertyGroup>
+ <NumberOne>0.6</NumberOne>
+ <NumberTwo>6</NumberTwo>
+ <Prop1>$([System.String]::new('value').EndsWith ('ue'))</Prop1>
+ </PropertyGroup>
+ </Project>
+ ";
+
+ proj.LoadXml (documentString);
+ Assert.AreEqual ("True", proj.GetEvaluatedProperty ("Prop1"), "#1");
+ }
}
}