[Mono-dev] [PATCH] WindowsBase: System.ComponentModel

Brian O'Keefe zer0keefie at gmail.com
Fri Nov 14 01:05:51 EST 2008


Ah, I see what you mean now.  Writing unit tests for code you can't see is
definitely a challenge.

I added the check inside the event handler, and it still passes on the MS
framework.

Consequently, I made a new patch.

~Brian

2008/11/14 Chris Toshok <toshok at gmail.com>

> trying to get this back on the list :)
>
> so all the changes look awesome - the one remaining issue is that IsSealed
> test.  What I meant was in the test where you register a handler
> (SortDescriptionCollectionAddTest), you should check to see if the
> SortDescription is sealed *inside* that handler.  Your implementation is
> sealing it before calling the handler, but there's no test for that.
>
> So, something like this:
>
> +                       ((INotifyCollectionChanged)sdc).CollectionChanged
> += delegate (object sender, NotifyCollectionChangedEventArgs e) {
> +                               Assert.AreEqual
> (NotifyCollectionChangedAction.Add, e.Action, "ADD_#0");
> +                               addedItem = (SortDescription)e.NewItems
> [0];
> ++                             Assert.IsTrue (addedItem.IsSealed,
> "ADD_#0.5");
> +                       };
>
> Chris
>
>
> On Wed, Nov 12, 2008 at 5:36 PM, Brian O'Keefe <zer0keefie at gmail.com>wrote:
>
>> Hello,
>>
>> I updated my patch to fix the problems you mentioned.  I'll attach the new
>> one.
>>
>> In SortDescription:
>>>
>>>    1. Null checks for Name, both in the property setter and ctor.  If
>>>    null is permitted there, add a check for the ==/!= operators using them,
>>>    because currently yours will throw NRE.
>>>    2. Property setter tests on a Sealed SortDescription.  do they throw
>>>    InvalidOperationException?
>>>
>>> I missed this one completely.  I fixed the NREs.  According to MSDN, null
>> and empty values aren't allowed, but they're both accepted as input.  I made
>> my implementation compatible with the Microsoft implementation.
>>
>> There was another exception I had overlooked:
>> InvalidEnumArgumentException.  Apparently the MS framework throws these if
>> you try to pass in a direction that's not ascending or descending.  Mine
>> does it too now.
>>
>>
>>> In CurrentChangingEventArgs:
>>>
>>>    1. Need a test to see if setting args.Cancel to true throws an
>>>    exception when IsCancelable is false.
>>>
>>> Added the test for that, and fixed my code to match  the MS
>> implementation.
>>
>>
>>> In SortDescriptionCollection:
>>>
>>>    1. need to verify that the item is actually sealed before the
>>>    CollectionChanged handler is called.  I didn't see a test that checks that.
>>>
>>> Added a test for that, which I think does the right thing.  I don't
>> subscribe to CollectionChanged, and the SortDescription is still sealed.
>>
>>
>>> Please don't reformat code in patches (particularly whitespace/line
>>> wrapping things) that contain actual code changes, unless it's absolutely
>>> necessary.  It makes it much harder to see substantive changes.
>>>
>>
>> Sorry about that one; Visual Studio was being difficult.  I unchanged the
>> formatting I changed accidentally.
>>
>> ~Brian
>>
>
>
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-devel-list/attachments/20081114/4943d77a/attachment-0001.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ComponentModel.diff
Type: application/octet-stream
Size: 37095 bytes
Desc: not available
Url : http://lists.ximian.com/pipermail/mono-devel-list/attachments/20081114/4943d77a/attachment-0001.obj 


More information about the Mono-devel-list mailing list