[Mono-dev] Mono 3.2.8 incompatibility with .NET 4.0 on Windows 7-10

2015-12-15 Thread Jason Curl

Hello,

I'm porting some code from Windows to Mono and I've found what I believe 
bugs in the implementation of System.Text Decoder/Encoder and UTF8. I've 
attached a test case that passes on Windows .NET 4.0 (using VS2015 on 
Windows 10 x64), but fails under Mono 3.2.8 using the standard 
installation from Ubuntu 14.04.3 fully patched at the time of writing. 
Note, as this is code originally written 3 years ago, I believe the test 
cases also work on Windows 7 .NET 4.0 (no .NET 4.5) also.


I've also got a link to a downloadable .zip file containing the sources 
and the nUnit package for easy compiling on Windows as well as Linux 
without having to create your own project (done due to size restrictions 
on the mailing list). nUnit 2.6.4 is present, so that it compiles out of 
the box on both platforms (sorry, not sure how best to set up two 
platforms simultaneously, but that's another topic). The nUnit test 
cases are in the file Test.cs.


https://onedrive.live.com/redir?resid=BF4840F0055AAAE6!189631&authkey=!ABf5p3IYB3ar2ws&ithint=file%2czip

Notes about the tests:

EncoderFlushUtf8WithBadData
* Convert is told to flush with true, so I expect that there to be 13 
characters converted, but on Mono only 12 and there's no '.' as 
specified by the EncoderReplacementFallback(".").


EncoderFlushUtf8Completed
* complete is true under mono, but under Windows it's false.

I'm looking on advice on how to work around the differences. I can't 
change the version of Mono I'm using (I'm restricted to Ubuntu 14.04.3 
for the next three years).


I've got some more errors but haven't investigated the problems yet and 
will provide unit test cases to describe the errors.


Regards,
Jason.

namespace EncoderTest
{
using System;
using System.Text;
using NUnit.Framework;

[TestFixture]
public class Test
{
[Test]
public void EncoderFlushUtf8WithBadData()
{
Encoding enc = Encoding.GetEncoding("UTF-8", new 
EncoderReplacementFallback("."), new DecoderReplacementFallback("."));
Decoder d = enc.GetDecoder();
byte[] m = new byte[] { 
0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56,
0x57, 0x58, 0x59, 0x5A, 0xF3, 0xA0
};

char[] c = new char[30];
int bu;
int cu;
bool complete;

d.Convert(m, 0, 14,
c, 0, c.Length, true,
out bu, out cu, out complete);

Console.WriteLine("bu={0}, cu={1}", bu, cu);

Assert.IsTrue(complete);
Assert.AreEqual(14, bu);
Assert.AreEqual(13, cu);
Assert.AreEqual("OPQRSTUVWXYZ.", new string(c, 0, 13));
}

[Test]
public void EncoderFlushUtf8Completed()
{
Encoding enc = Encoding.GetEncoding("UTF-8", new 
EncoderReplacementFallback("."), new DecoderReplacementFallback("."));
Decoder d = enc.GetDecoder();
byte[] m = new byte[] { 
0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56,
0x57, 0x58, 0x59, 0x5A, 0xE2, 0x82
};

char[] c = new char[30];
int bu;
int cu;
bool complete;

d.Convert(m, 0, 14,
  c, 0, 12, true,
  out bu, out cu, out complete);

Console.WriteLine("bu={0}, cu={1}", bu, cu);

Assert.IsFalse(complete);
Assert.AreEqual(12, bu);
Assert.AreEqual(12, cu);
Assert.AreEqual("OPQRSTUVWXYZ", new string(c, 0, 12));
}
}
}

___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] Mono 3.2.8 incompatibility with .NET 4.0 on Windows 7-10

2015-12-15 Thread Dan Liew
Hi,

> I've also got a link to a downloadable .zip file containing the sources and 
> the nUnit package for easy compiling on Windows as well as Linux without 
> having to create your own project (done due to size restrictions on the 
> mailing list). nUnit 2.6.4 is present, so that it compiles out of the box on 
> both platforms (sorry, not sure how best to set up two platforms 
> simultaneously, but that's another topic). The nUnit test cases are in the 
> file Test.cs.

I just tried building your test project and running the test cases
under Mono 4.2.1, they pass.

> I'm looking on advice on how to work around the differences. I can't change
> the version of Mono I'm using (I'm restricted to Ubuntu 14.04.3 for the next
> three years).

You are unlikely to get much help when reporting bugs with such an old
version of Mono.

Although you say you are restricted to using Ubuntu 14.04 that doesn't
stop you from using a newer version of Mono.

Xamarin provide repositories containing newer builds of Mono which you can use.

http://www.mono-project.com/docs/getting-started/install/linux/#debian-ubuntu-and-derivatives

You can always build from source too :)

HTH,
Dan.
___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] Mono 3.2.8 incompatibility with .NET 4.0 on Windows 7-10

2015-12-16 Thread Jason Curl

On 2015-12-15 22:36, Dan Liew wrote:

Although you say you are restricted to using Ubuntu 14.04 that doesn't
stop you from using a newer version of Mono.

Xamarin provide repositories containing newer builds of Mono which you can use.

http://www.mono-project.com/docs/getting-started/install/linux/#debian-ubuntu-and-derivatives

Thanks Dan - got everything installed and my test cases now pass.

You can always build from source too :)

Appreciate more that there are binaries for my distribution :)

Regards,
Jason.
___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list