DecoderReplacementFallbackBufferTest.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. //
  2. // DecoderReplacementFallbackBuffer.cs
  3. //
  4. // Author:
  5. // Atsushi Enomoto <[email protected]>
  6. //
  7. // Copyright (C) 2005 Novell, Inc. http://www.novell.com
  8. //
  9. #if NET_2_0
  10. using System;
  11. using System.IO;
  12. using System.Text;
  13. using NUnit.Framework;
  14. using Buffer = System.Text.DecoderReplacementFallbackBuffer;
  15. namespace MonoTests.System.Text
  16. {
  17. [TestFixture]
  18. public class DecoderReplacementFallbackBufferTest
  19. {
  20. private Buffer NewInstance ()
  21. {
  22. return new Buffer (new DecoderReplacementFallback ());
  23. }
  24. [Test]
  25. public void FallbackEmptyDefault ()
  26. {
  27. Buffer b = NewInstance ();
  28. Assert.IsTrue (b.Fallback (new byte [] {}, 0), "#0");
  29. Assert.IsFalse (b.MovePrevious (), "#1");
  30. Assert.AreEqual (1, b.Remaining, "#2");
  31. Assert.AreEqual ('?', b.GetNextChar (), "#3");
  32. Assert.AreEqual (0, b.Remaining, "#4");
  33. // the string is already consumed.
  34. Assert.AreEqual (char.MinValue, b.GetNextChar (), "#5");
  35. }
  36. [Test]
  37. public void FallbackEmptyForEncodingUTF8 ()
  38. {
  39. Buffer b = Encoding.UTF8.DecoderFallback.CreateFallbackBuffer () as Buffer;
  40. Assert.IsFalse (b.Fallback (new byte [] {}, 0), "#1");
  41. Assert.IsFalse (b.MovePrevious (), "#2");
  42. Assert.AreEqual (0, b.Remaining, "#3");
  43. // the string does not exist.
  44. Assert.AreEqual (char.MinValue, b.GetNextChar (), "#4");
  45. }
  46. [Test]
  47. public void FallbackSequential ()
  48. {
  49. Buffer b = NewInstance ();
  50. b.Fallback (new byte [] {}, 0);
  51. b.GetNextChar ();
  52. b.Fallback (new byte [] {}, 0);
  53. }
  54. [Test]
  55. [ExpectedException (typeof (ArgumentException))]
  56. public void FallbackRecursiveError ()
  57. {
  58. Buffer b = NewInstance ();
  59. b.Fallback (new byte [] {}, 0);
  60. b.Fallback (new byte [] {}, 0);
  61. }
  62. [Test]
  63. public void Iterate ()
  64. {
  65. Assert.AreEqual ('\0', Encoding.UTF8.DecoderFallback
  66. .CreateFallbackBuffer ().GetNextChar (), "#1");
  67. Buffer b = NewInstance ();
  68. Assert.AreEqual (1, b.Remaining, "#2");
  69. Assert.AreEqual ('?', b.GetNextChar (), "#3");
  70. Assert.AreEqual (0, b.Remaining, "#4");
  71. Assert.AreEqual ('\0', b.GetNextChar (), "#5");
  72. Assert.IsTrue (b.MovePrevious (), "#6");
  73. Assert.AreEqual (1, b.Remaining, "#7");
  74. Assert.IsFalse (b.MovePrevious (), "#8");
  75. Assert.AreEqual ('?', b.GetNextChar (), "#9");
  76. }
  77. }
  78. }
  79. #endif