Re: Is.Serializable
"Charlie Poole" <[email protected]> Tue, 9 Sep 2008 09:30:01 -0700
| Newsgroups | gmane.comp.windows.dotnet.nunit.user |
|---|---|
| Message-ID | <004001c91299$5321a560$6401a8c0@ferrari> |
This is a multi-part message in MIME format. --===============1728410657== Content-Type: multipart/alternative; boundary="----=_NextPart_000_0041_01C9125E.A6C2CD60" This is a multi-part message in MIME format. ------=_NextPart_000_0041_01C9125E.A6C2CD60 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit I guess you mean the ones you sent me? I finished up checking it out this morning. For vs2005 I had to remove some 'var' uses and for vs2003 I added some #if statements to get rid of the generic stuff. I'll add it to the NAnt script and then check it in. Charlie _____ From: Simone Busoli [mailto:[email protected]] Sent: Tuesday, September 09, 2008 4:11 AM To: Charlie Poole Cc: [email protected] Subject: Re: [Nunit-users] Is.Serializable Hey, what about the constraints instead? ;) On Tue, Sep 9, 2008 at 1:09 PM, Charlie Poole <[email protected]> wrote: At some point, I decided NAnt should not be in the repositiory. But I can't remember the reason any longer. :-) Charlie _____ From: [email protected] [mailto:[email protected]] On Behalf Of Simone Busoli Sent: Tuesday, September 09, 2008 12:08 AM To: Charlie Poole Cc: [email protected] Subject: Re: [Nunit-users] Is.Serializable Well, NAnt should be in the repository, shouldn't it? Running the build with NAnt I get an error saying that it cannot find resgen. Actually, I don't have the .NET SDK installed, I guess that's the reason. On Tue, Sep 9, 2008 at 1:57 AM, Charlie Poole <[email protected]> wrote: Hi Simone, If there's something specific, I'd be glad to fix it. Right now, I believe the onlly dependency is on having a NAnt version that supports the script elements and an SDK for the version of .NET or Mono you want to use.. If there's anything else, it should be in our repository. What are you running into other than that? Charlie _____ From: [email protected] [mailto:[email protected]] On Behalf Of Simone Busoli Sent: Monday, September 08, 2008 2:30 PM To: Charlie Poole Cc: [email protected] Subject: Re: [Nunit-users] Is.Serializable Do you think that the nant script could be made less dependent upon the machine on which it's run? Except for the net fx, I'd prefer if it didn't have any other dependencies which could not be put under source control. On Mon, Sep 8, 2008 at 11:12 PM, Charlie Poole <[email protected]> wrote: I find the VS builds convenient for exploratory changes myself. For the NAnt build, make sure the config points to the right location for the exe. I seem to remember that there are problems when you have a separate SDK install in additon to the version provided with Visual Studio. Charlie _____ From: Simone Busoli [mailto:[email protected]] Sent: Monday, September 08, 2008 1:33 PM To: Charlie Poole Cc: [email protected] Subject: Re: [Nunit-users] Is.Serializable I built it with VS2008 and ran tests with the NUnit gui executable output from the build. The NAnt script requires the .NET SDK, I have it installed at work but I couldn't run it anyway. It complained about resgen.exe not being there. In fact it wasn't there, but I didn't investigate why. I couldn't run the NAnt script however in the end, though I would prefer running it instead of building in VS. On Mon, Sep 8, 2008 at 10:20 PM, Charlie Poole <[email protected]> wrote: How did you work out your build problem? Charlie _____ From: Simone Busoli [mailto:[email protected]] Sent: Monday, September 08, 2008 12:29 PM To: Charlie Poole Cc: [email protected] Subject: Re: [Nunit-users] Is.Serializable So here's the patch, for both the BinarySerializable and XmlSerializable constraints. I've followed your guide, I hope I did everything correctly. Feedback welcome. On Sun, Sep 7, 2008 at 7:35 PM, Charlie Poole <[email protected]> wrote: Fair Enough! I'll put it on both lists. Charlie _____ From: [email protected] [mailto:[email protected]] On Behalf Of Simone Busoli Sent: Sunday, September 07, 2008 12:24 AM To: Charlie Poole Cc: [email protected] Subject: Re: [Nunit-users] Is.Serializable Hi Charlie, I'd prefer to work on it again, there's been some changes since I wrote it in the beginning, and it would be useful for me to get comfortable with them. If you agree, I think this would be the right moment to publish the list of steps required to create a new constraint. On Sun, Sep 7, 2008 at 1:33 AM, Charlie Poole <[email protected]> wrote: Hi Simone, I'm now back to looking at this patch, which I set aside while working on other stuff. I agree with you about having two different constraints. Do you want me to put in the patch you sent and change the name to "Binary..." or would you like to rework it? As noted, we do now have a generic AttributeConstraint. Charlie _____ From: Simone Busoli [mailto:[email protected]] Sent: Thursday, August 14, 2008 11:15 AM To: Charlie Poole Cc: [email protected] Subject: Re: [Nunit-users] Is.Serializable To check just for the attribute or the interface Is.Serializable() OR Is.Serializable To check by trying to do it Is.Serializable(formatter) OR Is.Serializable.Using(formatter) I think that making Is.Serializable check for the presence of the attribute on the class might be misleading, because its presence doesn't mean it's serializable, and its absence doesn't mean it isn't. I think that Is.Serializable should be used to check that an object is really serializable, together with its references. That is, Is.Serializable should come in two flavours, one that checks if it is serializable in binary format, and another for xml. I'll come to this later. About checking for the presence of the attribute, as you mentioned in a comment to Fabio's feature request, I think it could be generalized with Has.Attribute<> or Has.Attribute(Type). So, given that the presence of an attribute is checked with a generic Has.Attribute, the way I would tackle the true ability of an object graph to serialize is either using Is.XmlSerializable and Is.BinarySerializable or something equivalent. I don't get how you could pass in an instance of a formatter; I guess you proposed it because you might want to be able to use the assertion for other types of formatters not built into the .net fx s well, but then how would you call their methods? Via reflection? The aternatives above are between using a method and using a property. It would be cool to use the property for te first example and the method for the second, but that's not possible. Most of our syntactic elements use a property format when there is no argument. When an element has an optional argument, then we are forced to use method syntax, which may look a bit odd. For example, we have to use Is.Ordered() rather than Is.Ordered - That example should be familiar to you :-) I lean toward "Using" or "With" or some other keyword. What do folks think? I'm fine with anything you choose. I don't think it's so important if it's a property or a method, just let's try to be consistent :) Charlie _____ From: Simone Busoli [mailto:[email protected]] Sent: Thursday, August 14, 2008 12:16 AM To: Charlie Poole Subject: Re: [Nunit-users] Is.Serializable Hmm, I just realized that what I'm doing is not enough for the object to be serializable. I noticed that the prerequisites for it to be serializable are quite different according to whether you want to serialize it to xml or to binary. For example, the binary serialization doesn't require classes to be public, while xml does. xml serialization doesn't require the serializable attribute, while the binary does. So I'm wondering if it could be the case to split the assertion in IsBinarySerializable and IsXmlSerializable, or check that it is both binary and xml serializable in the same assertion. Thoughts? On Thu, Aug 14, 2008 at 2:02 AM, Charlie Poole <[email protected]> wrote: Hi Simone, This looks good to me. Would you like to synch up and fix it so it works with the latest code? My major changes to Constraint, ConstraintBuilder, etc. are done and it would give you a good way for you to get familiar with those changes. Once it's done, you can either send me a new patch or - if you would like - I'll make you a commiter so you can add it yourself. If you agree, I'll explain more to you about review of code etc. Charlie _____ From: [email protected] [mailto:[email protected]] On Behalf Of Simone Busoli Sent: Monday, August 11, 2008 7:11 AM To: [email protected] Subject: [Nunit-users] Is.Serializable With regards to: http://sourceforge.net/tracker/index.php?func=detail <http://sourceforge.net/tracker/index.php?func=detail&aid=2028517&group_id=1 0749&atid=360749> &aid=2028517&group_id=10749&atid=360749 I have implemented a SerializableConstraint accessible via Is.Serializable. The match is true if serialization to and deserialization from a memory stream via a BinaryFormatter both succeed and the deserialized object is not null. Otherwise the match returns false. ------=_NextPart_000_0041_01C9125E.A6C2CD60 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=3DContent-Type content=3D"text/html; = charset=3Dus-ascii"> <META content=3D"MSHTML 6.00.6000.16705" name=3DGENERATOR></HEAD> <BODY> <DIV><SPAN class=3D125373415-09092008><FONT face=3DArial color=3D#0000ff = size=3D2>I=20 guess you mean the ones you sent me?</FONT></SPAN></DIV> <DIV><SPAN class=3D125373415-09092008><FONT face=3DArial color=3D#0000ff = size=3D2></FONT></SPAN> </DIV> <DIV><SPAN class=3D125373415-09092008><FONT face=3DArial color=3D#0000ff = size=3D2>I=20 finished up checking it out this morning. For vs2005 I had to remove = some 'var'=20 uses</FONT></SPAN></DIV> <DIV><SPAN class=3D125373415-09092008><FONT face=3DArial color=3D#0000ff = size=3D2>and=20 for vs2003 I added some #if statements to get rid of the generic=20 stuff.</FONT></SPAN></DIV> <DIV><SPAN class=3D125373415-09092008><FONT face=3DArial color=3D#0000ff = size=3D2></FONT></SPAN> </DIV> <DIV><SPAN class=3D125373415-09092008><FONT face=3DArial color=3D#0000ff = size=3D2>I'll=20 add it to the NAnt script and then check it in.</FONT></SPAN></DIV> <DIV><SPAN class=3D125373415-09092008><FONT face=3DArial color=3D#0000ff = size=3D2><BR>Charlie</FONT></SPAN></DIV><BR> <BLOCKQUOTE dir=3Dltr=20 style=3D"PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px = solid; MARGIN-RIGHT: 0px"> <DIV class=3DOutlookMessageHeader lang=3Den-us dir=3Dltr align=3Dleft> <HR tabIndex=3D-1> <FONT face=3DTahoma size=3D2><B>From:</B> Simone Busoli=20 [mailto:[email protected]] <BR><B>Sent:</B> Tuesday, September = 09, 2008=20 4:11 AM<BR><B>To:</B> Charlie Poole<BR><B>Cc:</B>=20 [email protected]<BR><B>Subject:</B> Re: [Nunit-users] = Is.Serializable<BR></FONT><BR></DIV> <DIV></DIV> <DIV dir=3Dltr>Hey, what about the constraints instead? ;)<BR><BR> <DIV class=3Dgmail_quote>On Tue, Sep 9, 2008 at 1:09 PM, Charlie Poole = <SPAN=20 dir=3Dltr><<A=20 = href=3D"mailto:[email protected]">[email protected]</= A>></SPAN>=20 wrote:<BR> <BLOCKQUOTE class=3Dgmail_quote=20 style=3D"PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: = #ccc 1px solid"> <DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff size=3D2>At some = point, I decided=20 NAnt should not be in the repositiory. But I = can't</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff size=3D2>remember the = reason any=20 longer. :-)</FONT></SPAN></DIV> <DIV><FONT face=3DArial><FONT color=3D#0000ff><FONT=20 size=3D2><SPAN></SPAN></FONT></FONT></FONT> </DIV> <DIV><FONT face=3DArial><FONT color=3D#0000ff><FONT=20 size=3D2><SPAN>Charlie</SPAN></FONT></FONT></FONT></DIV> <DIV><BR></DIV> <BLOCKQUOTE dir=3Dltr=20 style=3D"PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff = 2px solid; MARGIN-RIGHT: 0px"> <DIV lang=3Den-us dir=3Dltr align=3Dleft> <HR> <FONT face=3DTahoma size=3D2> <DIV class=3DIh2E3d><B>From:</B> <A=20 href=3D"mailto:[email protected]"=20 target=3D_blank>[email protected]</A> = [mailto:<A=20 href=3D"mailto:[email protected]"=20 target=3D_blank>[email protected]</A>] = <B>On Behalf=20 Of </B>Simone Busoli<BR></DIV><B>Sent:</B> Tuesday, September 09, = 2008=20 12:08 AM <DIV> <DIV></DIV> <DIV class=3DWj3C7c><BR><B>To:</B> Charlie Poole<BR><B>Cc:</B> <A=20 href=3D"mailto:[email protected]"=20 = target=3D_blank>[email protected]</A><BR><B>Subject:</B> = Re:=20 [Nunit-users] Is.Serializable<BR></DIV></DIV></FONT><BR></DIV> <DIV> <DIV></DIV> <DIV class=3DWj3C7c> <DIV></DIV> <DIV dir=3Dltr>Well, NAnt should be in the repository, shouldn't = it?=20 <DIV>Running the build with NAnt I get an error saying that it = cannot find=20 resgen. Actually, I don't have the .NET SDK installed, I guess = that's the=20 reason.<BR><BR> <DIV class=3Dgmail_quote>On Tue, Sep 9, 2008 at 1:57 AM, Charlie = Poole <SPAN=20 dir=3Dltr><<A href=3D"mailto:[email protected]"=20 target=3D_blank>[email protected]</A>></SPAN> = wrote:<BR> <BLOCKQUOTE class=3Dgmail_quote=20 style=3D"PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; = BORDER-LEFT: #ccc 1px solid"> <DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff size=3D2>Hi=20 Simone,</FONT></SPAN></DIV> <DIV> </DIV> <DIV><SPAN></SPAN><FONT face=3DArial><FONT color=3D#0000ff><FONT = size=3D2>I<SPAN>f there's something specific, I'd be glad to fix = it. Right=20 now, I believe the onlly dependency is=20 on</SPAN></FONT></FONT></FONT></DIV> <DIV><FONT size=3D+0><FONT color=3D#0000ff><FONT=20 size=3D2><SPAN></SPAN></FONT></FONT></FONT><SPAN></SPAN><FONT=20 face=3DArial><FONT color=3D#0000ff><FONT size=3D2>h<SPAN>aving a = NAnt version=20 that supports the s</SPAN></FONT></FONT></FONT><FONT = face=3DArial><FONT=20 color=3D#0000ff><FONT size=3D2><SPAN>cript elements and an SDK = for the=20 version of .NET or</SPAN></FONT></FONT></FONT></DIV> <DIV><FONT face=3DArial><FONT color=3D#0000ff><FONT = size=3D2><SPAN>Mono you=20 </SPAN></FONT></FONT></FONT><FONT face=3DArial><FONT = color=3D#0000ff><FONT=20 size=3D2><SPAN>want to use.. If there's anything else, it should = be=20 </SPAN></FONT></FONT></FONT><FONT face=3DArial><FONT = color=3D#0000ff><FONT=20 size=3D2><SPAN>in </SPAN></FONT></FONT></FONT><FONT = face=3DArial><FONT=20 color=3D#0000ff><FONT size=3D2>o<SPAN>ur=20 repository.</SPAN></FONT></FONT></FONT></DIV> <DIV><FONT face=3DArial><FONT color=3D#0000ff><FONT=20 size=3D2><SPAN></SPAN></FONT></FONT></FONT> </DIV> <DIV><FONT face=3DArial><FONT color=3D#0000ff><FONT = size=3D2><SPAN>What are=20 you running into other than = that?</SPAN></FONT></FONT></FONT></DIV> <DIV><FONT face=3DArial><FONT color=3D#0000ff><FONT=20 size=3D2><SPAN></SPAN></FONT></FONT></FONT> </DIV> <DIV><FONT face=3DArial><FONT color=3D#0000ff><FONT=20 size=3D2><SPAN>Charlie</SPAN></FONT></FONT></FONT></DIV> <DIV><BR></DIV> <BLOCKQUOTE dir=3Dltr=20 style=3D"PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: = #0000ff 2px solid; MARGIN-RIGHT: 0px"> <DIV lang=3Den-us dir=3Dltr align=3Dleft> <HR> <FONT face=3DTahoma size=3D2> <DIV><B>From:</B> <A=20 href=3D"mailto:[email protected]"=20 target=3D_blank>[email protected]</A> = [mailto:<A=20 href=3D"mailto:[email protected]"=20 target=3D_blank>[email protected]</A>] = <B>On=20 Behalf Of </B>Simone Busoli<BR></DIV><B>Sent:</B> Monday, = September=20 08, 2008 2:30 PM=20 <DIV> <DIV></DIV> <DIV><BR><B>To:</B> Charlie Poole<BR><B>Cc:</B> <A=20 href=3D"mailto:[email protected]"=20 = target=3D_blank>[email protected]</A><BR><B>Subject:</B> = Re: [Nunit-users] = Is.Serializable<BR></DIV></DIV></FONT><BR></DIV> <DIV> <DIV></DIV> <DIV> <DIV></DIV> <DIV dir=3Dltr>Do you think that the nant script could be made = less=20 dependent upon the machine on which it's run? Except for the = net fx,=20 I'd prefer if it didn't have any other dependencies which = could not be=20 put under source control.<BR><BR> <DIV class=3Dgmail_quote>On Mon, Sep 8, 2008 at 11:12 PM, = Charlie Poole=20 <SPAN dir=3Dltr><<A = href=3D"mailto:[email protected]"=20 target=3D_blank>[email protected]</A>></SPAN> = wrote:<BR> <BLOCKQUOTE class=3Dgmail_quote=20 style=3D"PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; = BORDER-LEFT: #ccc 1px solid"> <DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff size=3D2>I = find the VS=20 builds convenient for exploratory changes=20 myself.</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff=20 size=3D2></FONT></SPAN> </DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff size=3D2>For = the NAnt build,=20 make sure the config points to the right</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff = size=3D2>location for the=20 exe.</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff=20 size=3D2></FONT></SPAN> </DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff size=3D2>I = seem to remember=20 that there are problems when you have</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff size=3D2>a = separate SDK=20 install in additon to the version provided = with</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff = size=3D2>Visual=20 Studio.</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff=20 size=3D2></FONT></SPAN> </DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff=20 size=3D2>Charlie</FONT></SPAN></DIV><BR> <BLOCKQUOTE dir=3Dltr=20 style=3D"PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: = #0000ff 2px solid; MARGIN-RIGHT: 0px"> <DIV lang=3Den-us dir=3Dltr align=3Dleft> <HR> <FONT face=3DTahoma size=3D2> <DIV><B>From:</B> Simone Busoli [mailto:<A=20 href=3D"mailto:[email protected]"=20 target=3D_blank>[email protected]</A>] = <BR></DIV><B>Sent:</B>=20 Monday, September 08, 2008 1:33 PM=20 <DIV> <DIV></DIV> <DIV><BR><B>To:</B> Charlie Poole<BR><B>Cc:</B> <A=20 href=3D"mailto:[email protected]"=20 = target=3D_blank>[email protected]</A><BR><B>Subject:</B> = Re: [Nunit-users] = Is.Serializable<BR></DIV></DIV></FONT><BR></DIV> <DIV> <DIV></DIV> <DIV> <DIV></DIV> <DIV dir=3Dltr>I built it with VS2008 and ran tests with = the NUnit=20 gui executable output from the build.=20 <DIV>The NAnt script requires the .NET SDK, I have it = installed at=20 work but I couldn't run it anyway. It complained about = resgen.exe=20 not being there. In fact it wasn't there, but I didn't = investigate=20 why.</DIV> <DIV>I couldn't run the NAnt script however in the end, = though I=20 would prefer running it instead of building in = VS. <BR><BR> <DIV class=3Dgmail_quote>On Mon, Sep 8, 2008 at 10:20 PM, = Charlie=20 Poole <SPAN dir=3Dltr><<A=20 href=3D"mailto:[email protected]"=20 target=3D_blank>[email protected]</A>></SPAN> = wrote:<BR> <BLOCKQUOTE class=3Dgmail_quote=20 style=3D"PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; = BORDER-LEFT: #ccc 1px solid"> <DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff = size=3D2>How did you=20 work out your build problem?</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff=20 size=3D2></FONT></SPAN> </DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff=20 size=3D2>Charlie</FONT></SPAN></DIV><BR> <BLOCKQUOTE dir=3Dltr=20 style=3D"PADDING-LEFT: 5px; MARGIN-LEFT: 5px; = BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px"> <DIV lang=3Den-us dir=3Dltr align=3Dleft> <HR> <FONT face=3DTahoma size=3D2> <DIV><B>From:</B> Simone Busoli [mailto:<A=20 href=3D"mailto:[email protected]"=20 target=3D_blank>[email protected]</A>]=20 <BR></DIV><B>Sent:</B> Monday, September 08, 2008 = 12:29 PM=20 <DIV> <DIV></DIV> <DIV><BR><B>To:</B> Charlie Poole<BR><B>Cc:</B> <A=20 href=3D"mailto:[email protected]"=20 = target=3D_blank>[email protected]</A><BR><B>Subject:</B> = Re: [Nunit-users]=20 Is.Serializable<BR></DIV></DIV></FONT><BR></DIV> <DIV> <DIV></DIV> <DIV> <DIV></DIV> <DIV dir=3Dltr>So here's the patch, for both the=20 BinarySerializable and XmlSerializable constraints. = I've=20 followed your guide, I hope I did everything = correctly.=20 Feedback welcome.<BR><BR> <DIV class=3Dgmail_quote>On Sun, Sep 7, 2008 at 7:35 = PM, Charlie=20 Poole <SPAN dir=3Dltr><<A=20 href=3D"mailto:[email protected]"=20 = target=3D_blank>[email protected]</A>></SPAN>=20 wrote:<BR> <BLOCKQUOTE class=3Dgmail_quote=20 style=3D"PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; = BORDER-LEFT: #ccc 1px solid"> <DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff = size=3D2>Fair=20 Enough! I'll put it on both = lists.</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff=20 size=3D2></FONT></SPAN> </DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff=20 size=3D2>Charlie</FONT></SPAN></DIV><BR> <BLOCKQUOTE dir=3Dltr=20 style=3D"PADDING-LEFT: 5px; MARGIN-LEFT: 5px; = BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px"> <DIV lang=3Den-us dir=3Dltr align=3Dleft> <HR> <FONT face=3DTahoma size=3D2> <DIV><B>From:</B> <A=20 = href=3D"mailto:[email protected]"=20 = target=3D_blank>[email protected]</A>=20 [mailto:<A=20 = href=3D"mailto:[email protected]"=20 = target=3D_blank>[email protected]</A>]=20 <B>On Behalf Of </B>Simone = Busoli<BR></DIV><B>Sent:</B>=20 Sunday, September 07, 2008 12:24 AM=20 <DIV> <DIV></DIV> <DIV><BR><B>To:</B> Charlie Poole<BR><B>Cc:</B> <A = href=3D"mailto:[email protected]"=20 = target=3D_blank>[email protected]</A><BR><B>Subject:</B> = Re: [Nunit-users]=20 Is.Serializable<BR></DIV></DIV></FONT><BR></DIV> <DIV> <DIV></DIV> <DIV> <DIV></DIV> <DIV dir=3Dltr>Hi Charlie,=20 <DIV><BR></DIV> <DIV>I'd prefer to work on it again, there's been = some=20 changes since I wrote it in the beginning, and it = would be=20 useful for me to get comfortable with them. If you = agree,=20 I think this would be the right moment to publish = the list=20 of steps required to create a new = constraint.<BR><BR> <DIV class=3Dgmail_quote>On Sun, Sep 7, 2008 at = 1:33 AM,=20 Charlie Poole <SPAN dir=3Dltr><<A=20 href=3D"mailto:[email protected]"=20 = target=3D_blank>[email protected]</A>></SPAN>=20 wrote:<BR> <BLOCKQUOTE class=3Dgmail_quote=20 style=3D"PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px = 0.8ex; BORDER-LEFT: #ccc 1px solid"> <DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff = size=3D2>Hi=20 Simone,</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff=20 size=3D2></FONT></SPAN> </DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff = size=3D2>I'm now=20 back to looking at this patch, which I set aside = while=20 working on other stuff.</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff=20 size=3D2></FONT></SPAN> </DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff = size=3D2>I agree=20 with you about having two different constraints. = Do you=20 want me to put in</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff = size=3D2>the=20 patch you sent and change the name to=20 "Binary..." or would you like to rework=20 it?</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff=20 size=3D2></FONT></SPAN> </DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff = size=3D2>As=20 noted, we do now have a generic=20 AttributeConstraint.</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff=20 size=3D2></FONT></SPAN> </DIV> <DIV><SPAN><FONT face=3DArial color=3D#0000ff=20 size=3D2>Charlie</FONT></SPAN></DIV><BR> <BLOCKQUOTE dir=3Dltr=20 style=3D"PADDING-LEFT: 5px; MARGIN-LEFT: 5px; = BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px"> <DIV lang=3Den-us dir=3Dltr align=3Dleft> <HR> <FONT face=3DTahoma size=3D2> <DIV><B>From:</B> Simone Busoli [mailto:<A=20 href=3D"mailto:[email protected]"=20 target=3D_blank>[email protected]</A>]=20 <BR></DIV><B>Sent:</B> Thursday, August 14, = 2008 11:15=20 AM<BR><B>To:</B> Charlie Poole<BR><B>Cc:</B> = <A=20 = href=3D"mailto:[email protected]"=20 = target=3D_blank>[email protected]</A>=20 <DIV> <DIV></DIV> <DIV><BR><B>Subject:</B> Re: [Nunit-users]=20 = Is.Serializable<BR></DIV></DIV></FONT><BR></DIV> <DIV> <DIV></DIV> <DIV> <DIV></DIV> <DIV dir=3Dltr> <DIV class=3Dgmail_quote> <BLOCKQUOTE class=3Dgmail_quote=20 style=3D"PADDING-LEFT: 1ex; MARGIN: 0pt 0pt = 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid"> <DIV><BR> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff size=3D2>To=20 check just for the attribute or the=20 interface</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2> Is.Serializable()=20 OR</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2> = Is.Serializable</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2></FONT></SPAN> </DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff size=3D2>To=20 check by trying to do it</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2> Is.Serializable(formatter)=20 OR</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2> =20 = Is.Serializable.Using(formatter)</FONT></SPAN></DIV></DIV></BLOCKQUOTE> <DIV><BR>I think that making Is.Serializable = check for=20 the presence of the attribute on the class = might be=20 misleading, because its presence doesn't mean = it's=20 serializable, and its absence doesn't mean it = isn't. I=20 think that Is.Serializable should be used to = check=20 that an object is really serializable, = together with=20 its references. That is, Is.Serializable = should come=20 in two flavours, one that checks if it is = serializable=20 in binary format, and another for xml. I'll = come to=20 this later.<BR>About checking for the presence = of the=20 attribute, as you mentioned in a comment to = Fabio's=20 feature request, I think it could be = generalized with=20 Has.Attribute<> or = Has.Attribute(Type).<BR>So,=20 given that the presence of an attribute is = checked=20 with a generic Has.Attribute, the way I would = tackle=20 the true ability of an object graph to = serialize is=20 either using Is.XmlSerializable and=20 Is.BinarySerializable or something equivalent. = I don't=20 get how you could pass in an instance of a = formatter;=20 I guess you proposed it because you might want = to be=20 able to use the assertion for other types of=20 formatters not built into the .net fx s well, = but then=20 how would you call their methods? Via=20 reflection?<BR> </DIV> <BLOCKQUOTE class=3Dgmail_quote=20 style=3D"PADDING-LEFT: 1ex; MARGIN: 0pt 0pt = 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid"> <DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2></FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2></FONT></SPAN> </DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff size=3D2>The=20 aternatives above are between using a method = and=20 using a property. It would = be</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2>cool to use the property for te = first example=20 and the method for the second, but=20 </FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2>that's not = possible.</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2></FONT></SPAN> </DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2>Most of our syntactic elements use = a property=20 format when there is no=20 argument.</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2>When an element has an optional = argument,=20 then we are forced to use = method</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2>syntax, which may look a bit odd. = For=20 example, we have to = use</FONT></SPAN><SPAN><FONT=20 face=3DArial color=3D#0000ff size=3D2>=20 Is.Ordered()</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2>rather than Is.Ordered - That = example should=20 be familiar to you :-)</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2></FONT></SPAN> </DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff size=3D2>I=20 lean toward "Using" or "With" or some other=20 keyword.</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2></FONT></SPAN> </DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2>What do folks=20 think?</FONT></SPAN></DIV></DIV></BLOCKQUOTE> <DIV><BR>I'm fine with anything you choose. I = don't=20 think it's so important if it's a property or = a=20 method, just let's try to be consistent=20 :)<BR> </DIV> <BLOCKQUOTE class=3Dgmail_quote=20 style=3D"PADDING-LEFT: 1ex; MARGIN: 0pt 0pt = 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid"> <DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2></FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2></FONT></SPAN> </DIV><FONT=20 color=3D#888888> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 = size=3D2>Charlie</FONT></SPAN></DIV><BR></FONT> <BLOCKQUOTE dir=3Dltr=20 style=3D"PADDING-LEFT: 5px; MARGIN-LEFT: = 5px; BORDER-LEFT: rgb(0,0,255) 2px solid; MARGIN-RIGHT: 0px"> <DIV> <DIV lang=3Den-us dir=3Dltr align=3Dleft> <HR> <FONT face=3DTahoma size=3D2><B>From:</B> = Simone=20 Busoli [mailto:<A=20 href=3D"mailto:[email protected]"=20 = target=3D_blank>[email protected]</A>]=20 <BR><B>Sent:</B> Thursday, August 14, 2008 = 12:16=20 AM<BR><B>To:</B> Charlie = Poole<BR><B>Subject:</B>=20 Re: [Nunit-users]=20 Is.Serializable<BR></FONT><BR></DIV> <DIV></DIV></DIV> <DIV> <DIV></DIV> <DIV> <DIV dir=3Dltr>Hmm, I just realized that = what I'm=20 doing is not enough for the object to be=20 serializable. I noticed that the = prerequisites for=20 it to be serializable are quite different=20 according to whether you want to serialize = it to=20 xml or to binary. For example, the binary=20 serialization doesn't require classes to = be=20 public, while xml does. xml serialization = doesn't=20 require the serializable attribute, while = the=20 binary does. So I'm wondering if it could = be the=20 case to split the assertion in=20 IsBinarySerializable and = IsXmlSerializable, or=20 check that it is both binary and xml = serializable=20 in the same assertion. Thoughts?<BR><BR> <DIV class=3Dgmail_quote>On Thu, Aug 14, = 2008 at=20 2:02 AM, Charlie Poole <SPAN = dir=3Dltr><<A=20 = href=3D"mailto:[email protected]"=20 = target=3D_blank>[email protected]</A>></SPAN>=20 wrote:<BR> <BLOCKQUOTE class=3Dgmail_quote=20 style=3D"PADDING-LEFT: 1ex; MARGIN: 0pt = 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid"> <DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2>Hi Simone,</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2></FONT></SPAN> </DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2>This looks good to me. Would = you like to=20 synch up and fix it so it works with the = latest=20 code? My major</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2>changes to Constraint, = ConstraintBuilder,=20 etc. are done and it would give you a = good way=20 for you</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2>to get familiar with those = changes. Once=20 it's done, you can either send me a new = patch or=20 - if</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2>you would like - I'll make you = a commiter=20 so you can add it yourself. If you = agree, I'll=20 explain more</FONT></SPAN></DIV> <DIV><SPAN><FONT face=3DArial = color=3D#0000ff=20 size=3D2>to you about review of code=20 etc.</FONT></SPAN></DIV> <DIV> </DIV> <DIV><SPAN></SPAN><FONT = face=3DArial><FONT=20 color=3D#0000ff><FONT=20 = size=3D2>C<SPAN>harlie</SPAN></FONT></FONT></FONT><BR></DIV> <BLOCKQUOTE dir=3Dltr=20 style=3D"PADDING-LEFT: 5px; MARGIN-LEFT: = 5px; BORDER-LEFT: rgb(0,0,255) 2px solid; MARGIN-RIGHT: 0px"> <DIV lang=3Den-us dir=3Dltr = align=3Dleft> <HR> <FONT face=3DTahoma = size=3D2><B>From:</B> <A=20 = href=3D"mailto:[email protected]"=20 = target=3D_blank>[email protected]</A>=20 [mailto:<A=20 = href=3D"mailto:[email protected]"=20 = target=3D_blank>[email protected]</A>]=20 <B>On Behalf Of </B>Simone=20 Busoli<BR><B>Sent:</B> Monday, August = 11, 2008=20 7:11 AM<BR><B>To:</B> <A=20 = href=3D"mailto:[email protected]"=20 = target=3D_blank>[email protected]</A><BR><B>Subject:</B> = [Nunit-users]=20 Is.Serializable<BR></FONT><BR></DIV> <DIV> <DIV></DIV> <DIV dir=3Dltr>With regards to: <A=20 = href=3D"http://sourceforge.net/tracker/index.php?func=3Ddetail&aid=3D= 2028517&group_id=3D10749&atid=3D360749"=20 = target=3D_blank>http://sourceforge.net/tracker/index.php?func=3Ddetail&am= p;aid=3D2028517&group_id=3D10749&atid=3D360749</A><BR><BR>I=20 have implemented a = SerializableConstraint=20 accessible via Is.Serializable. The = match is=20 true if serialization to and = deserialization=20 from a memory stream via a = BinaryFormatter both=20 succeed and the deserialized object is = not null.=20 Otherwise the match returns=20 = false.<BR></DIV></DIV></BLOCKQUOTE></DIV></BLOCKQUOTE></DIV><BR></DIV></D= IV></DIV></BLOCKQUOTE></DIV></BLOCKQUOTE></DIV><BR></DIV></DIV></DIV></BL= OCKQUOTE></DIV></BLOCKQUOTE></DIV><BR></DIV></DIV></DIV></DIV></BLOCKQUOT= E></DIV></BLOCKQUOTE></DIV><BR></DIV></DIV></DIV></BLOCKQUOTE></DIV></BLO= CKQUOTE></DIV><BR></DIV></DIV></DIV></DIV></BLOCKQUOTE></DIV></BLOCKQUOTE= ></DIV><BR></DIV></DIV></DIV></BLOCKQUOTE></DIV></BLOCKQUOTE></DIV><BR></= DIV></DIV></DIV></DIV></BLOCKQUOTE></DIV></BLOCKQUOTE></DIV><BR></DIV></B= LOCKQUOTE></BODY></HTML> ------=_NextPart_000_0041_01C9125E.A6C2CD60-- --===============1728410657== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ --===============1728410657== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Nunit-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/nunit-users --===============1728410657==--