You've already forked linux-packaging-mono
Imported Upstream version 3.12.0
Former-commit-id: cf92446697332992ec36726e78eb8703e1f259d7
This commit is contained in:
116
mcs/class/corlib/Test/System.Text/EncodingTester.cs
Normal file
116
mcs/class/corlib/Test/System.Text/EncodingTester.cs
Normal file
@ -0,0 +1,116 @@
|
||||
//
|
||||
// EncodingTester.cs
|
||||
//
|
||||
// Author:
|
||||
// Marcos Henrich <marcos.henrich@xamarin.com>
|
||||
//
|
||||
// (C) 2014 Xamarin, Inc.
|
||||
//
|
||||
|
||||
using NUnit.Framework;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace MonoTests.System.Text
|
||||
{
|
||||
class EncodingTester
|
||||
{
|
||||
class DecoderTestFallbackBuffer : DecoderFallbackBuffer
|
||||
{
|
||||
DecoderFallbackBuffer buffer;
|
||||
private FallbackDelegate fallbackAction;
|
||||
|
||||
public DecoderTestFallbackBuffer (DecoderReplacementFallback fallback, FallbackDelegate fallbackAction)
|
||||
{
|
||||
this.fallbackAction = fallbackAction;
|
||||
buffer = new DecoderReplacementFallbackBuffer (fallback);
|
||||
}
|
||||
|
||||
public override bool Fallback (byte [] bytesUnknown, int index)
|
||||
{
|
||||
fallbackAction (bytesUnknown, index);
|
||||
return buffer.Fallback (bytesUnknown, index);
|
||||
}
|
||||
|
||||
public override char GetNextChar ()
|
||||
{
|
||||
return buffer.GetNextChar ();
|
||||
}
|
||||
|
||||
public override bool MovePrevious ()
|
||||
{
|
||||
return buffer.MovePrevious ();
|
||||
}
|
||||
|
||||
public override int Remaining
|
||||
{
|
||||
get { return buffer.Remaining; }
|
||||
}
|
||||
|
||||
public override void Reset ()
|
||||
{
|
||||
buffer.Reset ();
|
||||
}
|
||||
}
|
||||
|
||||
class DecoderTestFallback : DecoderFallback
|
||||
{
|
||||
private DecoderReplacementFallback fallback;
|
||||
private FallbackDelegate fallbackAction;
|
||||
|
||||
public DecoderTestFallback (FallbackDelegate fallbackAction)
|
||||
{
|
||||
this.fallbackAction = fallbackAction;
|
||||
}
|
||||
|
||||
public override DecoderFallbackBuffer CreateFallbackBuffer ()
|
||||
{
|
||||
fallback = new DecoderReplacementFallback ();
|
||||
return new DecoderTestFallbackBuffer (fallback, fallbackAction);
|
||||
}
|
||||
|
||||
public override int MaxCharCount
|
||||
{
|
||||
get { return fallback.MaxCharCount; }
|
||||
}
|
||||
}
|
||||
|
||||
public delegate void FallbackDelegate (byte [] bytesUnknown, int index);
|
||||
|
||||
Encoding encoding;
|
||||
|
||||
byte [][] expectedUnknownBytes;
|
||||
int expectedUnknownBytesIndex;
|
||||
|
||||
public EncodingTester (string encodingName)
|
||||
{
|
||||
var decoderFallback = new DecoderTestFallback (this.DecoderFallback);
|
||||
encoding = Encoding.GetEncoding (encodingName, new EncoderReplacementFallback(), decoderFallback);
|
||||
}
|
||||
|
||||
private void DecoderFallback (byte [] bytesUnknown, int index)
|
||||
{
|
||||
if (expectedUnknownBytesIndex == expectedUnknownBytes.Length)
|
||||
expectedUnknownBytesIndex = 0;
|
||||
|
||||
var expectedBytes = expectedUnknownBytes [expectedUnknownBytesIndex++];
|
||||
Assert.AreEqual (expectedBytes, bytesUnknown);
|
||||
}
|
||||
|
||||
public void TestDecoderFallback (byte [] data, string expectedString, params byte [][] expectedUnknownBytes)
|
||||
{
|
||||
lock (this)
|
||||
{
|
||||
this.expectedUnknownBytes = expectedUnknownBytes;
|
||||
this.expectedUnknownBytesIndex = 0;
|
||||
|
||||
Assert.AreEqual (expectedString.Length, encoding.GetCharCount (data));
|
||||
Assert.AreEqual (expectedUnknownBytesIndex, expectedUnknownBytes.Length);
|
||||
|
||||
Assert.AreEqual (expectedString, encoding.GetString (data));
|
||||
Assert.AreEqual (expectedUnknownBytesIndex, expectedUnknownBytes.Length);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user