Thanks for your help Jeff, I tried your solution and it worked.

I had come up with the following, but I think yours is better(and
implemented it).

Object[] objs = property.GetCustomAttributes(false);
List<string> search = new List<string>();
foreach (object attribute in objs)
{
  search.Add( ((Attribute)attribute).TypeId.ToString() );
}
Assert.IsTrue(search.Contains("MyAttribute"));
Assert.IsTrue(search.Contains("MyOtherAttribute"));



On Apr 3, 1:42 pm, "Jeff Brown" <[email protected]> wrote:
> Your example is a little unusual because you're trying to check whether a
> collection contains a value that satisfies a predicate rather than looking
> for an equal value to one you already have.
>
> (This makes me think we should extend Assert.Contains with an overload like:
> Assert.Contains<T>(collection, Predicate<T> predicate.)
>
> Anyways, here's one way you can produce the desired assertions:
>
> Assert.IsNotEmpty(property.GetCustomAttributes(typeof(MyAttribute), true));
>
> Assert.IsNotEmpty(property.GetCustomAttributes(typeof(MyOtherAttribute),
> true));
>
> Jeff.
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On
>
> Behalf Of Chris
> Sent: Friday, April 03, 2009 6:30 AM
> To: MbUnit.User
> Subject: MbUnit Assert.Contains<> Example
>
> I've been looking all over the web trying to find an example of
> Assert.Contains<> for something like the following:
>
> I want to test if certain attributes are set on properties of my properties.
> I've gotten to the point where I get an array of attributes, but I'm not
> sure how to call the Assert.Contains<> method to determine if the attribute
> is set.  There can be more than one attribute on a property.  I have a code
> sample below.
>
> public class MyObject
> {
>   priavate int x = 0;
>
>   [MyCustomAttribute]
>   [MyOtherCustomAttribute]
>   public int X { get { return x; } }
> }
>
> .... in the mbunit textfixture class ...
> Type obj = typeof(MyObject);
> PropertyInfo[] properties = obj.GetProperties(); Assert.AreEqual(2,
> properties.Length);  //This works ok
>
> foreach (PropertyInfo property in properties) {
>   object[] attributes = property.GetCustomAttributes(true);  // creates an
> array with the custom attributes
>
>   // here's where I'm running into some issues as the
> property.GetCustomAttributes method returns an array of type object(in this
> case, the array has two element).
>   // I'd like to iterate through the array and pass the test if the Custom
> Attribute is found by comparing to the Attribute.TypeId field to the
> expected value
>   Assert.Contains<object[]>(/*Not sure how to enumerate*/,
> "MyCustomerAttribute");
>   Assert.Contains<object[]>(/*Not sure how to enumerate*/,
> "MyOtherCustomAttribute"); }
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"MbUnit.User" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/MbUnitUser?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to