| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915 |
- //
- // ResXResourceReaderTest.cs: Unit Tests for ResXResourceReader.
- //
- // Authors:
- // Gert Driesen <[email protected]>
- // Olivier Dufour <[email protected]>
- // Gary Barnett <[email protected]>
- using System;
- using System.Collections;
- using System.Drawing;
- using System.Globalization;
- using System.IO;
- using System.Resources;
- using System.Text;
- using System.Windows.Forms;
- using System.Xml;
- using System.Runtime.Serialization;
- using NUnit.Framework;
- using System.Reflection;
- namespace MonoTests.System.Resources {
- [TestFixture]
- public class ResXResourceReaderTest : MonoTests.System.Windows.Forms.TestHelper
- {
- private string _tempDirectory;
- private string _otherTempDirectory;
- [SetUp]
- protected override void SetUp ()
- {
- _tempDirectory = Path.Combine (Path.GetTempPath (), "ResXResourceReaderTest");
- _otherTempDirectory = Path.Combine (_tempDirectory, "in");
- if (!Directory.Exists (_otherTempDirectory)) {
- Directory.CreateDirectory (_otherTempDirectory);
- }
- base.SetUp ();
- }
- [TearDown]
- protected override void TearDown ()
- {
- if (Directory.Exists (_tempDirectory))
- Directory.Delete (_tempDirectory, true);
- base.TearDown ();
- }
- [Test] // ctor (Stream)
- public void Constructor1_Stream_InvalidContent ()
- {
- MemoryStream ms = new MemoryStream ();
- ms.WriteByte (byte.MaxValue);
- ms.Position = 0;
- ResXResourceReader r = new ResXResourceReader (ms);
- try {
- r.GetEnumerator ();
- Assert.Fail ("#1");
- } catch (ArgumentException ex) {
- // Invalid ResX input
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
- Assert.IsNotNull (ex.Message, "#3");
- Assert.IsNull (ex.ParamName, "#4");
- Assert.IsNotNull (ex.InnerException, "#5");
- }
- }
- [Test] // ctor (Stream)
- [Category ("NotDotNet")] // MS throws a NullReferenceException in GetEnumerator ()
- public void Constructor1_Stream_Null ()
- {
- try {
- new ResXResourceReader ((Stream) null);
- Assert.Fail ("#1");
- } catch (ArgumentNullException ex) {
- Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
- Assert.IsNull (ex.InnerException, "#3");
- Assert.IsNotNull (ex.Message, "#4");
- Assert.AreEqual ("stream", ex.ParamName, "#5");
- }
- }
- [Test] // ctor (String)
- public void Constructor2_FileName_DoesNotExist ()
- {
- ResXResourceReader r = new ResXResourceReader ((string) "definitelydoesnotexist.zzz");
- try {
- r.GetEnumerator ();
- Assert.Fail ("#1");
- } catch (FileNotFoundException ex) {
- Assert.AreEqual (typeof (FileNotFoundException), ex.GetType (), "#2");
- Assert.IsNotNull (ex.FileName, "#3");
- Assert.IsNotNull (ex.Message, "#4");
- Assert.IsNull (ex.InnerException, "#5");
- }
- }
- [Test] // ctor (TextReader)
- public void Constructor3_Reader_InvalidContent ()
- {
- StringReader sr = new StringReader ("</definitelyinvalid<");
- ResXResourceReader r = new ResXResourceReader (sr);
- try {
- r.GetEnumerator ();
- Assert.Fail ("#1");
- } catch (ArgumentException ex) {
- // Invalid ResX input
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
- Assert.IsNotNull (ex.Message, "#3");
- Assert.IsNull (ex.ParamName, "#4");
- Assert.IsNotNull (ex.InnerException, "#5");
- Assert.AreEqual (typeof (XmlException), ex.InnerException.GetType (), "#6");
- }
- }
- [Test]
- public void Close_FileName ()
- {
- string fileName = Path.Combine (Path.Combine ("Test", "System.Resources"), "compat_1_1.resx");
- if (!File.Exists (fileName))
- fileName = String.Format ("..{0}System.Resources{0}compat_1_1.resx", Path.DirectorySeparatorChar);
- ResXResourceReader r1 = new ResXResourceReader (fileName);
- r1.GetEnumerator ();
- r1.Close ();
- r1.GetEnumerator ();
- ResXResourceReader r2 = new ResXResourceReader (fileName);
- r2.Close ();
- r2.GetEnumerator ();
- r2.Close ();
- }
- [Test]
- public void Close_Reader ()
- {
- string fileName = Path.Combine (Path.Combine ("Test", "System.Resources"), "compat_1_1.resx");
- if (!File.Exists (fileName))
- fileName = String.Format ("..{0}System.Resources{0}compat_1_1.resx", Path.DirectorySeparatorChar);
- using (StreamReader sr = new StreamReader (fileName)) {
- ResXResourceReader r = new ResXResourceReader (sr);
- Assert.IsFalse (sr.Peek () == -1, "#A1");
- r.GetEnumerator ();
- Assert.IsTrue (sr.Peek () == -1, "#A2");
- r.Close ();
- try {
- sr.Peek ();
- Assert.Fail ("#A3");
- } catch (ObjectDisposedException) {
- }
- r.GetEnumerator ();
- }
- using (StreamReader sr = new StreamReader (fileName)) {
- ResXResourceReader r = new ResXResourceReader (sr);
- r.Close ();
- try {
- sr.Peek ();
- Assert.Fail ("#B1");
- } catch (ObjectDisposedException) {
- }
- try {
- r.GetEnumerator ();
- Assert.Fail ("#B2");
- } catch (NullReferenceException) { // MS
- } catch (InvalidOperationException) { // Mono
- }
- }
- }
- [Test]
- public void Close_Stream ()
- {
- string fileName = Path.Combine (Path.Combine ("Test", "System.Resources"), "compat_1_1.resx");
- if (!File.Exists (fileName))
- fileName = String.Format ("..{0}System.Resources{0}compat_1_1.resx", Path.DirectorySeparatorChar);
- using (FileStream fs = File.OpenRead (fileName)) {
- ResXResourceReader r = new ResXResourceReader (fs);
- Assert.AreEqual (0, fs.Position, "#A1");
- r.GetEnumerator ();
- Assert.IsFalse (fs.Position == 0, "#A2");
- Assert.IsTrue (fs.CanRead, "#A3");
- r.Close ();
- Assert.IsTrue (fs.CanRead, "#A4");
- r.GetEnumerator ().MoveNext ();
- }
- using (FileStream fs = File.OpenRead (fileName)) {
- ResXResourceReader r = new ResXResourceReader (fs);
- r.Close ();
- Assert.AreEqual (0, fs.Position, "#B1");
- r.GetEnumerator ();
- Assert.IsFalse (fs.Position == 0, "#B2");
- }
- }
- [Test]
- public void ExternalFileReference_Icon ()
- {
- string refFile = Path.Combine (_tempDirectory, "32x32.ico");
- WriteEmbeddedResource ("32x32.ico", refFile);
- string resxFile = Path.Combine (_tempDirectory, "resources.resx");
- using (StreamWriter sw = new StreamWriter (resxFile, false, Encoding.UTF8)) {
- sw.Write (string.Format (CultureInfo.InvariantCulture,
- _resXFileRefTemplate, ResXResourceWriter.ResMimeType, "1.0",
- Consts.AssemblySystem_Windows_Forms, refFile,
- typeof (Bitmap).AssemblyQualifiedName, string.Empty,
- Consts.AssemblyCorlib));
- }
- using (ResXResourceReader r = new ResXResourceReader (resxFile)) {
- IDictionaryEnumerator enumerator = r.GetEnumerator ();
- enumerator.MoveNext ();
- Assert.IsNotNull (enumerator.Current, "#A1");
- Assert.AreEqual ("foo", enumerator.Key, "#A2");
- Bitmap bitmap = enumerator.Value as Bitmap;
- Assert.IsNotNull (bitmap, "#A3");
- Assert.AreEqual (32, bitmap.Height, "#A4");
- Assert.AreEqual (32, bitmap.Width, "#A5");
- }
- File.Delete (refFile);
- File.Delete (resxFile);
- refFile = Path.Combine (_tempDirectory, "32x32.ICO");
- WriteEmbeddedResource ("32x32.ico", refFile);
- using (StreamWriter sw = new StreamWriter (resxFile, false, Encoding.UTF8)) {
- sw.Write (string.Format (CultureInfo.InvariantCulture,
- _resXFileRefTemplate, ResXResourceWriter.ResMimeType, "1.0",
- Consts.AssemblySystem_Windows_Forms, refFile,
- typeof (Bitmap).AssemblyQualifiedName, string.Empty,
- Consts.AssemblyCorlib));
- }
- using (ResXResourceReader r = new ResXResourceReader (resxFile)) {
- IDictionaryEnumerator enumerator = r.GetEnumerator ();
- enumerator.MoveNext ();
- Assert.IsNotNull (enumerator.Current, "#B1");
- Assert.AreEqual ("foo", enumerator.Key, "#B2");
- Bitmap bitmap = enumerator.Value as Bitmap;
- Assert.IsNotNull (bitmap, "#B3");
- Assert.AreEqual (96, bitmap.Height, "#B4");
- Assert.AreEqual (96, bitmap.Width, "#B5");
- }
- }
- [Test]
- public void ExternalFileReference_RelativePath ()
- {
- string refFile = Path.Combine (_otherTempDirectory, "string.txt");
- string relRefFile = Path.Combine ("in", "string.txt");
- using (StreamWriter sw = new StreamWriter (refFile, false, Encoding.UTF8)) {
- sw.Write ("hello");
- }
- string resxFile = Path.Combine (_tempDirectory, "resources.resx");
- using (StreamWriter sw = new StreamWriter (resxFile, false, Encoding.UTF8)) {
- sw.Write (string.Format (CultureInfo.InvariantCulture,
- _resXFileRefTemplate, ResXResourceWriter.ResMimeType, "1.0",
- Consts.AssemblySystem_Windows_Forms,
- "in" + Path.DirectorySeparatorChar + "string.txt",
- typeof (StreamReader).AssemblyQualifiedName, string.Empty,
- Consts.AssemblyCorlib));
- }
- using (ResXResourceReader r = new ResXResourceReader (resxFile)) {
- try {
- r.GetEnumerator ();
- Assert.Fail ("#A1");
- } catch (ArgumentException ex) {
- // Invalid ResX input
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
- Assert.IsNotNull (ex.InnerException, "#A3");
- Assert.IsNotNull (ex.Message, "#A4");
- Assert.IsNull (ex.ParamName, "#A5");
- // Could not find a part of the path "<current dir>\in\string.txt".
- // Line 1, position 821
- XmlException inner = ex.InnerException as XmlException;
- Assert.IsNotNull (inner, "#A6");
- Assert.AreEqual (typeof (XmlException), inner.GetType (), "#A7");
- Assert.IsNotNull (inner.InnerException, "#A8");
- Assert.AreEqual (1, inner.LineNumber, "#A9");
- // Assert.AreEqual (821, inner.LinePosition, "#A10");
- Assert.IsNotNull (inner.Message, "#A11");
- Assert.IsTrue (inner.Message.IndexOf (Path.Combine (
- Directory.GetCurrentDirectory (), relRefFile)) != -1, "#A12");
- // Could not find a part of the path "<current dir>\in\string.txt"
- Exception inner2 = inner.InnerException;
- Assert.AreEqual (typeof (DirectoryNotFoundException), inner2.GetType (), "#A13");
- Assert.IsNull (inner2.InnerException, "#A14");
- Assert.IsNotNull (inner2.Message, "#A15");
- Assert.IsTrue (inner2.Message.IndexOf (Path.Combine (
- Directory.GetCurrentDirectory (), relRefFile)) != -1, "#A16");
- }
- Assert.IsNull (r.BasePath, "#A17");
- }
- string originalCurrentDir = Directory.GetCurrentDirectory ();
- Directory.SetCurrentDirectory (_tempDirectory);
- try {
- using (ResXResourceReader r = new ResXResourceReader (resxFile)) {
- IDictionaryEnumerator enumerator = r.GetEnumerator ();
- enumerator.MoveNext ();
- Assert.IsNotNull (enumerator.Current, "#B1");
- Assert.AreEqual ("foo", enumerator.Key, "#B2");
- using (StreamReader sr = enumerator.Value as StreamReader) {
- Assert.IsNotNull (sr, "#B3");
- Assert.AreEqual ("hello", sr.ReadToEnd (), "#B4");
- }
- Assert.IsNull (r.BasePath, "#B5");
- }
- } finally {
- // restore original current directory
- Directory.SetCurrentDirectory (originalCurrentDir);
- }
- using (ResXResourceReader r = new ResXResourceReader (resxFile)) {
- r.BasePath = _tempDirectory;
- IDictionaryEnumerator enumerator = r.GetEnumerator ();
- enumerator.MoveNext ();
- Assert.IsNotNull (enumerator.Current, "#C1");
- Assert.AreEqual ("foo", enumerator.Key, "#C2");
- using (StreamReader sr = enumerator.Value as StreamReader) {
- Assert.IsNotNull (sr, "#C3");
- Assert.AreEqual ("hello", sr.ReadToEnd (), "#C4");
- }
- Assert.AreEqual (_tempDirectory, r.BasePath, "#C5");
- }
- using (ResXResourceReader r = new ResXResourceReader (resxFile)) {
- r.BasePath = Path.GetTempPath ();
- try {
- r.GetEnumerator ();
- Assert.Fail ("#D1");
- } catch (ArgumentException ex) {
- // Invalid ResX input
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#D2");
- Assert.IsNotNull (ex.InnerException, "#D3");
- Assert.IsNotNull (ex.Message, "#D4");
- Assert.IsNull (ex.ParamName, "#D5");
- // Could not find a part of the path "<temp path>\in\string.txt".
- // Line 1, position 821
- XmlException inner = ex.InnerException as XmlException;
- Assert.IsNotNull (inner, "#D6");
- Assert.AreEqual (typeof (XmlException), inner.GetType (), "#D7");
- Assert.IsNotNull (inner.InnerException, "#D8");
- Assert.AreEqual (1, inner.LineNumber, "#D9");
- // Assert.AreEqual (821, inner.LinePosition, "#D10");
- Assert.IsNotNull (inner.Message, "#D11");
- Assert.IsTrue (inner.Message.IndexOf (Path.Combine (
- Path.GetTempPath (), relRefFile)) != -1, "#D12");
- // Could not find a part of the path "<temp path>\in\string.txt"
- Exception inner2 = inner.InnerException as Exception;
- Assert.AreEqual (typeof (DirectoryNotFoundException), inner2.GetType (), "#D13");
- Assert.IsNull (inner2.InnerException, "#D14");
- Assert.IsNotNull (inner2.Message, "#D15");
- Assert.IsTrue (inner2.Message.IndexOf (Path.Combine (
- Path.GetTempPath (), relRefFile)) != -1, "#D16");
- }
- Assert.AreEqual (Path.GetTempPath (), r.BasePath, "#D17");
- }
- }
- [Test]
- public void FileRef_String_UTF7 ()
- {
- string refFile = Path.Combine (_otherTempDirectory, "string.txt");
- using (StreamWriter sw = new StreamWriter (refFile, false, Encoding.UTF7)) {
- sw.Write ("\u0021\u0026\u002A\u003B");
- }
- string resxFile = Path.Combine (_tempDirectory, "resources.resx");
- using (StreamWriter sw = new StreamWriter (resxFile, false, Encoding.UTF8)) {
- sw.Write (string.Format (CultureInfo.InvariantCulture,
- _resXFileRefTemplate, ResXResourceWriter.ResMimeType, "1.0",
- Consts.AssemblySystem_Windows_Forms, refFile,
- typeof (string).AssemblyQualifiedName, string.Empty,
- Consts.AssemblyCorlib));
- }
- using (ResXResourceReader r = new ResXResourceReader (resxFile)) {
- IDictionaryEnumerator enumerator = r.GetEnumerator ();
- enumerator.MoveNext ();
- Assert.IsNotNull (enumerator.Current, "#A1");
- Assert.AreEqual ("foo", enumerator.Key, "#A2");
- Assert.IsFalse ("\u0021\u0026\u002A\u003B" == (string) enumerator.Value, "#A3");
- }
- resxFile = Path.Combine (_tempDirectory, "resources.resx");
- using (StreamWriter sw = new StreamWriter (resxFile, false, Encoding.UTF8)) {
- sw.Write (string.Format (CultureInfo.InvariantCulture,
- _resXFileRefTemplate, ResXResourceWriter.ResMimeType, "1.0",
- Consts.AssemblySystem_Windows_Forms, refFile,
- typeof (string).AssemblyQualifiedName, ";utf-7",
- Consts.AssemblyCorlib));
- }
- using (ResXResourceReader r = new ResXResourceReader (resxFile)) {
- IDictionaryEnumerator enumerator = r.GetEnumerator ();
- enumerator.MoveNext ();
- Assert.IsNotNull (enumerator.Current, "#B1");
- Assert.AreEqual ("foo", enumerator.Key, "#B2");
- Assert.AreEqual ("\u0021\u0026\u002A\u003B", (string) enumerator.Value, "#B3");
- }
- }
- [Test]
- public void FileRef_String_UTF8 ()
- {
- string refFile = Path.Combine (_otherTempDirectory, "string.txt");
- using (StreamWriter sw = new StreamWriter (refFile, false, Encoding.UTF8)) {
- sw.Write ("\u0041\u2262\u0391\u002E");
- }
- string resxFile = Path.Combine (_tempDirectory, "resources.resx");
- using (StreamWriter sw = new StreamWriter (resxFile, false, Encoding.UTF8)) {
- sw.Write (string.Format (CultureInfo.InvariantCulture,
- _resXFileRefTemplate, ResXResourceWriter.ResMimeType, "1.0",
- Consts.AssemblySystem_Windows_Forms, refFile,
- typeof (string).AssemblyQualifiedName, string.Empty,
- Consts.AssemblyCorlib));
- }
- using (ResXResourceReader r = new ResXResourceReader (resxFile)) {
- IDictionaryEnumerator enumerator = r.GetEnumerator ();
- enumerator.MoveNext ();
- Assert.IsNotNull (enumerator.Current, "#A1");
- Assert.AreEqual ("foo", enumerator.Key, "#A2");
- Assert.AreEqual ("\u0041\u2262\u0391\u002E", (string) enumerator.Value, "#A3");
- }
- resxFile = Path.Combine (_tempDirectory, "resources.resx");
- using (StreamWriter sw = new StreamWriter (resxFile, false, Encoding.UTF8)) {
- sw.Write (string.Format (CultureInfo.InvariantCulture,
- _resXFileRefTemplate, ResXResourceWriter.ResMimeType, "1.0",
- Consts.AssemblySystem_Windows_Forms, refFile,
- typeof (string).AssemblyQualifiedName, ";utf-8",
- Consts.AssemblyCorlib));
- }
- using (ResXResourceReader r = new ResXResourceReader (resxFile)) {
- IDictionaryEnumerator enumerator = r.GetEnumerator ();
- enumerator.MoveNext ();
- Assert.IsNotNull (enumerator.Current, "#B1");
- Assert.AreEqual ("foo", enumerator.Key, "#B2");
- Assert.AreEqual ("\u0041\u2262\u0391\u002E", (string) enumerator.Value, "#B3");
- }
- }
- [Test]
- public void Namespaces ()
- {
- const string resXTemplate =
- "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
- "<o:Document xmlns:x=\"http://www.mono-project.com\" xmlns:o=\"http://tempuri.org\">" +
- " <o:Content>" +
- " <x:DaTa name=\"name\">" +
- " <o:value>de Icaza</o:value>" +
- " </x:DaTa>" +
- " <x:data name=\"firstName\">" +
- " <x:value />" +
- " </x:data>" +
- " <o:data name=\"Address\" />" +
- " <o:data name=\"city\">" +
- " <x:value>Boston </x:value>" +
- " </o:data>" +
- " <o:data name=\"country\">" +
- " United States " +
- " </o:data>" +
- " <o:data name=\"\">" +
- " BO " +
- " </o:data>" +
- " <o:data name=\"country\">" +
- " <x:value>Belgium</x:value>" +
- " </o:data>" +
- " <data name=\"zip\">" +
- " <value><![CDATA[ <3510> ]]></value>" +
- " </data>" +
- " </o:Content>" +
- " <o:Paragraph>" +
- " <o:resheader name=\"resmimetype\">" +
- " <o:value>{0}</o:value>" +
- " </o:resheader>" +
- " <x:resheader name=\"version\">" +
- " <o:value>{1}</o:value>" +
- " </x:resheader>" +
- " </o:Paragraph>" +
- " <x:Section>" +
- " <o:resheader name=\"reader\">" +
- " <x:value>System.Resources.ResXResourceReader, {2}</x:value>" +
- " </o:resheader>" +
- " <x:resheader name=\"writer\">" +
- " <x:value>System.Resources.ResXResourceWriter, {2}</x:value>" +
- " </x:resheader>" +
- " </x:Section>" +
- "</o:Document>";
- string resxFile = Path.Combine (_tempDirectory, "resources.resx");
- using (StreamWriter sw = new StreamWriter (resxFile, false, Encoding.UTF8)) {
- sw.Write (string.Format (CultureInfo.InvariantCulture,
- resXTemplate, ResXResourceWriter.ResMimeType, "1.0",
- Consts.AssemblySystem_Windows_Forms));
- }
- // Stream
- using (FileStream fs = new FileStream (resxFile, FileMode.Open, FileAccess.Read, FileShare.Read)) {
- using (ResXResourceReader r = new ResXResourceReader (fs)) {
- IDictionaryEnumerator enumerator = r.GetEnumerator ();
- int entries = 0;
- while (enumerator.MoveNext ()) {
- entries++;
- switch ((string) enumerator.Key) {
- case "":
- Assert.IsNotNull (enumerator.Value, "#A1");
- Assert.AreEqual ("BO", enumerator.Value, "#A2");
- break;
- case "Address":
- Assert.IsNotNull (enumerator.Value, "#B1");
- Assert.AreEqual (string.Empty, enumerator.Value, "#B2");
- break;
- case "country":
- Assert.IsNotNull (enumerator.Value, "#C1");
- Assert.AreEqual (string.Empty, enumerator.Value, "#C2");
- break;
- case "firstName":
- Assert.IsNull (enumerator.Value, "#D");
- break;
- case "zip":
- Assert.IsNotNull (enumerator.Value, "#E1");
- Assert.AreEqual (" <3510> ", enumerator.Value, "#E2");
- break;
- default:
- Assert.Fail ("#F:" + enumerator.Key);
- break;
- }
- }
- Assert.AreEqual (5, entries, "#G");
- }
- }
- }
- [Test]
- public void ResHeader_Missing ()
- {
- const string resXTemplate =
- "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
- "<root>" +
- " <data name=\"name\">" +
- " <value>de Icaza</value>" +
- " </data>" +
- " <data name=\"firstName\">" +
- " <value />" +
- " </data>" +
- " <data name=\"address\" />" +
- "</root>";
- string resxFile = Path.Combine (_tempDirectory, "resources.resx");
- using (StreamWriter sw = new StreamWriter (resxFile, false, Encoding.UTF8)) {
- sw.Write (resXTemplate);
- }
- // Stream
- using (FileStream fs = new FileStream (resxFile, FileMode.Open, FileAccess.Read, FileShare.Read)) {
- using (ResXResourceReader r = new ResXResourceReader (fs)) {
- try {
- r.GetEnumerator ();
- Assert.Fail ("#A1");
- } catch (ArgumentException ex) {
- //Invalid ResX input. Could not find valid \"resheader\"
- // tags for the ResX reader & writer type names
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
- Assert.IsNull (ex.InnerException, "#A3");
- Assert.IsNotNull (ex.Message, "#A4");
- Assert.IsTrue (ex.Message.IndexOf ("\"resheader\"") != -1, "#A5");
- Assert.IsNull (ex.ParamName, "#A6");
- }
- }
- }
- // File
- using (ResXResourceReader r = new ResXResourceReader (resxFile)) {
- try {
- r.GetEnumerator ();
- Assert.Fail ("#B1");
- } catch (ArgumentException ex) {
- //Invalid ResX input. Could not find valid \"resheader\"
- // tags for the ResX reader & writer type names
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
- Assert.IsNull (ex.InnerException, "#B3");
- Assert.IsNotNull (ex.Message, "#B4");
- Assert.IsTrue (ex.Message.IndexOf ("\"resheader\"") != -1, "#B5");
- Assert.IsNull (ex.ParamName, "#B6");
- }
- }
- // TextReader
- using (StreamReader sr = new StreamReader (resxFile, Encoding.UTF8)) {
- using (ResXResourceReader r = new ResXResourceReader (sr)) {
- try {
- r.GetEnumerator ();
- Assert.Fail ("#C1");
- } catch (ArgumentException ex) {
- //Invalid ResX input. Could not find valid \"resheader\"
- // tags for the ResX reader & writer type names
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
- Assert.IsNull (ex.InnerException, "#C3");
- Assert.IsNotNull (ex.Message, "#C4");
- Assert.IsTrue (ex.Message.IndexOf ("\"resheader\"") != -1, "#C5");
- Assert.IsNull (ex.ParamName, "#C6");
- }
- }
- }
- }
- [Test]
- public void ResHeader_ResMimeType ()
- {
- const string resXTemplate =
- "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
- "<root>" +
- " <resheader name=\"resMIMEtype\">" +
- " {0}" +
- " </resheader>" +
- " <resheader name=\"version\">" +
- " <value>{1}</value>" +
- " </resheader>" +
- " <resheader name=\"reAder\">" +
- " <value>System.Resources.ResXResourceReader, {2}</value>" +
- " </resheader>" +
- " <resheader name=\"wriTer\">" +
- " <value>System.Resources.ResXResourceWriter, {2}</value>" +
- " </resheader>" +
- "</root>";
- string resXContent = null;
- // <value> element, exact case
- resXContent = string.Format (CultureInfo.InvariantCulture,
- resXTemplate, ResXResourceWriter.ResMimeType, "1.0",
- Consts.AssemblySystem_Windows_Forms);
- using (ResXResourceReader r = new ResXResourceReader (new StringReader (resXContent))) {
- r.GetEnumerator ();
- }
- // <value> element, uppercase
- resXContent = string.Format (CultureInfo.InvariantCulture,
- resXTemplate, ResXResourceWriter.ResMimeType.ToUpper (), "1.0",
- Consts.AssemblySystem_Windows_Forms);
- using (ResXResourceReader r = new ResXResourceReader (new StringReader (resXContent))) {
- try {
- r.GetEnumerator ();
- Assert.Fail ("#A1");
- } catch (ArgumentException ex) {
- //Invalid ResX input. Could not find valid \"resheader\"
- // tags for the ResX reader & writer type names
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
- Assert.IsNull (ex.InnerException, "#A3");
- Assert.IsNotNull (ex.Message, "#A4");
- Assert.IsTrue (ex.Message.IndexOf ("\"resheader\"") != -1, "#A5");
- Assert.IsNull (ex.ParamName, "#A6");
- }
- }
- // text, exact case
- resXContent = string.Format (CultureInfo.InvariantCulture,
- resXTemplate, ResXResourceWriter.ResMimeType, "1.0",
- Consts.AssemblySystem_Windows_Forms);
- using (ResXResourceReader r = new ResXResourceReader (new StringReader (resXContent))) {
- r.GetEnumerator ();
- }
- // text, uppercase
- resXContent = string.Format (CultureInfo.InvariantCulture,
- resXTemplate, ResXResourceWriter.ResMimeType.ToUpper (), "1.0",
- Consts.AssemblySystem_Windows_Forms);
- using (ResXResourceReader r = new ResXResourceReader (new StringReader (resXContent))) {
- try {
- r.GetEnumerator ();
- Assert.Fail ("#B1");
- } catch (ArgumentException ex) {
- //Invalid ResX input. Could not find valid \"resheader\"
- // tags for the ResX reader & writer type names
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
- Assert.IsNull (ex.InnerException, "#B3");
- Assert.IsNotNull (ex.Message, "#B4");
- Assert.IsTrue (ex.Message.IndexOf ("\"resheader\"") != -1, "#B5");
- Assert.IsNull (ex.ParamName, "#B6");
- }
- }
- // CDATA, exact case
- resXContent = string.Format (CultureInfo.InvariantCulture,
- resXTemplate, "<![CDATA[" +ResXResourceWriter.ResMimeType + "]]>",
- "1.0", Consts.AssemblySystem_Windows_Forms);
- using (ResXResourceReader r = new ResXResourceReader (new StringReader (resXContent))) {
- r.GetEnumerator ();
- }
- // CDATA, uppercase
- resXContent = string.Format (CultureInfo.InvariantCulture,
- resXTemplate, "<![CDATA[" + ResXResourceWriter.ResMimeType.ToUpper () + "]]>",
- "1.0", Consts.AssemblySystem_Windows_Forms);
- using (ResXResourceReader r = new ResXResourceReader (new StringReader (resXContent))) {
- try {
- r.GetEnumerator ();
- Assert.Fail ("#C1");
- } catch (ArgumentException ex) {
- //Invalid ResX input. Could not find valid \"resheader\"
- // tags for the ResX reader & writer type names
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
- Assert.IsNull (ex.InnerException, "#C3");
- Assert.IsNotNull (ex.Message, "#C4");
- Assert.IsTrue (ex.Message.IndexOf ("\"resheader\"") != -1, "#C5");
- Assert.IsNull (ex.ParamName, "#C6");
- }
- }
- // <whatever> element, exact case
- resXContent = string.Format (CultureInfo.InvariantCulture,
- resXTemplate, "<whatever>" + ResXResourceWriter.ResMimeType + "</whatever>",
- "1.0", Consts.AssemblySystem_Windows_Forms);
- using (ResXResourceReader r = new ResXResourceReader (new StringReader (resXContent))) {
- r.GetEnumerator ();
- }
- // <whatever> element, uppercase
- resXContent = string.Format (CultureInfo.InvariantCulture,
- resXTemplate, "<whatever>" + ResXResourceWriter.ResMimeType.ToUpper () + "</whatever>",
- "1.0", Consts.AssemblySystem_Windows_Forms);
- using (ResXResourceReader r = new ResXResourceReader (new StringReader (resXContent))) {
- try {
- r.GetEnumerator ();
- Assert.Fail ("#D1");
- } catch (ArgumentException ex) {
- //Invalid ResX input. Could not find valid \"resheader\"
- // tags for the ResX reader & writer type names
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#D2");
- Assert.IsNull (ex.InnerException, "#D3");
- Assert.IsNotNull (ex.Message, "#D4");
- Assert.IsTrue (ex.Message.IndexOf ("\"resheader\"") != -1, "#D5");
- Assert.IsNull (ex.ParamName, "#D6");
- }
- }
- }
- [Test]
- public void ResHeader_ResMimeType_Empty ()
- {
- const string resXTemplate =
- "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
- "<root>" +
- " <resheader name=\"resmimetype\"></resheader>" +
- "</root>";
- using (ResXResourceReader r = new ResXResourceReader (new StringReader (resXTemplate))) {
- try {
- r.GetEnumerator ();
- Assert.Fail ("#1");
- } catch (ArgumentException ex) {
- //Invalid ResX input. Could not find valid \"resheader\"
- // tags for the ResX reader & writer type names
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
- Assert.IsNull (ex.InnerException, "#3");
- Assert.IsNotNull (ex.Message, "#4");
- Assert.IsTrue (ex.Message.IndexOf ("\"resheader\"") != -1, "#5");
- Assert.IsNull (ex.ParamName, "#6");
- }
- }
- }
- [Test]
- public void ResHeader_ResMimeType_Invalid ()
- {
- const string resXTemplate =
- "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
- "<root>" +
- " <resheader name=\"resmimetype\">" +
- " <value>{0}</value>" +
- " </resheader>" +
- " <resheader name=\"version\">" +
- " <value>{1}</value>" +
- " </resheader>" +
- " <resheader name=\"reader\">" +
- " <value>System.Resources.ResXResourceReader, {2}</value>" +
- " </resheader>" +
- " <resheader name=\"writer\">" +
- " <value>System.Resources.ResXResourceWriter, {2}</value>" +
- " </resheader>" +
- " <data name=\"name\">" +
- " <value>de Icaza</value>" +
- " </data>" +
- " <data name=\"firstName\">" +
- " <value />" +
- " </data>" +
- " <data name=\"Address\" />" +
- "</root>";
- string resxFile = Path.Combine (_tempDirectory, "resources.resx");
- using (StreamWriter sw = new StreamWriter (resxFile, false, Encoding.UTF8)) {
- sw.Write (string.Format (CultureInfo.InvariantCulture,
- resXTemplate, "notvalid", "1.0", Consts.AssemblySystem_Windows_Forms
- ));
- }
- // Stream
- using (FileStream fs = new FileStream (resxFile, FileMode.Open, FileAccess.Read, FileShare.Read)) {
- using (ResXResourceReader r = new ResXResourceReader (fs)) {
- try {
- r.GetEnumerator ();
- Assert.Fail ("#A1");
- } catch (ArgumentException ex) {
- //Invalid ResX input. Could not find valid \"resheader\"
- // tags for the ResX reader & writer type names
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
- Assert.IsNull (ex.InnerException, "#A3");
- Assert.IsNotNull (ex.Message, "#A4");
- Assert.IsTrue (ex.Message.IndexOf ("\"resheader\"") != -1, "#A5");
- Assert.IsNull (ex.ParamName, "#A6");
- }
- }
- }
- // File
- using (ResXResourceReader r = new ResXResourceReader (resxFile)) {
- try {
- r.GetEnumerator ();
- Assert.Fail ("#B1");
- } catch (ArgumentException ex) {
- //Invalid ResX input. Could not find valid \"resheader\"
- // tags for the ResX reader & writer type names
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
- Assert.IsNull (ex.InnerException, "#B3");
- Assert.IsNotNull (ex.Message, "#B4");
- Assert.IsTrue (ex.Message.IndexOf ("\"resheader\"") != -1, "#B5");
- Assert.IsNull (ex.ParamName, "#B6");
- }
- }
- // TextReader
- using (StreamReader sr = new StreamReader (resxFile, Encoding.UTF8)) {
- using (ResXResourceReader r = new ResXResourceReader (sr)) {
- try {
- r.GetEnumerator ();
- Assert.Fail ("#C1");
- } catch (ArgumentException ex) {
- //Invalid ResX input. Could not find valid \"resheader\"
- // tags for the ResX reader & writer type names
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
- Assert.IsNull (ex.InnerException, "#C3");
- Assert.IsNotNull (ex.Message, "#C4");
- Assert.IsTrue (ex.Message.IndexOf ("\"resheader\"") != -1, "#C5");
- Assert.IsNull (ex.ParamName, "#C6");
- }
- }
- }
- }
- [Test]
- public void ResHeader_ResMimeType_Null ()
- {
- const string resXTemplate =
- "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
- "<root>" +
- " <resheader name=\"resmimetype\" />" +
- "</root>";
- using (ResXResourceReader r = new ResXResourceReader (new StringReader (resXTemplate))) {
- try {
- r.GetEnumerator ();
- Assert.Fail ("#1");
- } catch (ArgumentException ex) {
- //Invalid ResX input. Could not find valid \"resheader\"
- // tags for the ResX reader & writer type names
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
- Assert.IsNull (ex.InnerException, "#3");
- Assert.IsNotNull (ex.Message, "#4");
- Assert.IsTrue (ex.Message.IndexOf ("\"resheader\"") != -1, "#5");
- Assert.IsNull (ex.ParamName, "#6");
- }
- }
- }
- [Test]
- public void ResHeader_Reader_Invalid ()
- {
- const string resXTemplate =
- "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
- "<root>" +
- " <resheader name=\"resmimetype\">" +
- " {0}" +
- " </resheader>" +
- " <resheader name=\"version\">" +
- " <value>{1}</value>" +
- " </resheader>" +
- " <resheader name=\"reader\">" +
- " <value>System.Resources.InvalidResXResourceReader, {2}</value>" +
- " </resheader>" +
- " <resheader name=\"writer\">" +
- " <value>System.Resources.ResXResourceWriter, {2}</value>" +
- " </resheader>" +
- "</root>";
- string resXContent = string.Format (CultureInfo.InvariantCulture,
- resXTemplate, ResXResourceWriter.ResMimeType, "1.0",
- Consts.AssemblySystem_Windows_Forms);
- using (ResXResourceReader r = new ResXResourceReader (new StringReader (resXContent))) {
- try {
- r.GetEnumerator ();
- Assert.Fail ("#1");
- } catch (ArgumentException ex) {
- //Invalid ResX input. Could not find valid \"resheader\"
- // tags for the ResX reader & writer type names
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
- Assert.IsNull (ex.InnerException, "#3");
- Assert.IsNotNull (ex.Message, "#4");
- Assert.IsTrue (ex.Message.IndexOf ("\"resheader\"") != -1, "#5");
- Assert.IsNull (ex.ParamName, "#6");
- }
- }
- }
- [Test]
- public void ResHeader_Reader_Missing ()
- {
- const string resXTemplate =
- "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
- "<root>" +
- " <resheader name=\"resmimetype\">" +
- " {0}" +
- " </resheader>" +
- " <resheader name=\"version\">" +
- " <value>{1}</value>" +
- " </resheader>" +
- " <resheader name=\"writer\">" +
- " <value>System.Resources.ResXResourceWriter, {2}</value>" +
- " </resheader>" +
- "</root>";
- string resXContent = string.Format (CultureInfo.InvariantCulture,
- resXTemplate, ResXResourceWriter.ResMimeType, "1.0",
- Consts.AssemblySystem_Windows_Forms);
- using (ResXResourceReader r = new ResXResourceReader (new StringReader (resXContent))) {
- try {
- r.GetEnumerator ();
- Assert.Fail ("#1");
- } catch (ArgumentException ex) {
- //Invalid ResX input. Could not find valid \"resheader\"
- // tags for the ResX reader & writer type names
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
- Assert.IsNull (ex.InnerException, "#3");
- Assert.IsNotNull (ex.Message, "#4");
- Assert.IsTrue (ex.Message.IndexOf ("\"resheader\"") != -1, "#5");
- Assert.IsNull (ex.ParamName, "#6");
- }
- }
- }
- [Test]
- public void ResHeader_Reader_Null ()
- {
- const string resXTemplate =
- "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
- "<root>" +
- " <resheader name=\"resmimetype\">" +
- " {0}" +
- " </resheader>" +
- " <resheader name=\"version\">" +
- " <value>{1}</value>" +
- " </resheader>" +
- " <resheader name=\"reader\" />" +
- " <resheader name=\"writer\">" +
- " <value>System.Resources.ResXResourceWriter, {2}</value>" +
- " </resheader>" +
- "</root>";
- string resXContent = string.Format (CultureInfo.InvariantCulture,
- resXTemplate, ResXResourceWriter.ResMimeType, "1.0",
- Consts.AssemblySystem_Windows_Forms);
- using (ResXResourceReader r = new ResXResourceReader (new StringReader (resXContent))) {
- try {
- r.GetEnumerator ();
- Assert.Fail ("#1");
- } catch (ArgumentException ex) {
- //Invalid ResX input. Could not find valid \"resheader\"
- // tags for the ResX reader & writer type names
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
- Assert.IsNull (ex.InnerException, "#3");
- Assert.IsNotNull (ex.Message, "#4");
- Assert.IsTrue (ex.Message.IndexOf ("\"resheader\"") != -1, "#5");
- Assert.IsNull (ex.ParamName, "#6");
- }
- }
- }
- [Test]
- public void ResHeader_Writer_Invalid ()
- {
- const string resXTemplate =
- "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
- "<root>" +
- " <resheader name=\"resmimetype\">" +
- " {0}" +
- " </resheader>" +
- " <resheader name=\"version\">" +
- " <value>{1}</value>" +
- " </resheader>" +
- " <resheader name=\"reader\">" +
- " <value>System.Resources.ResXResourceReader, {2}</value>" +
- " </resheader>" +
- " <resheader name=\"writer\">" +
- " <value>System.Resources.InvalidResXResourceWriter, {2}</value>" +
- " </resheader>" +
- "</root>";
- string resXContent = string.Format (CultureInfo.InvariantCulture,
- resXTemplate, ResXResourceWriter.ResMimeType, "1.0",
- Consts.AssemblySystem_Windows_Forms);
- using (ResXResourceReader r = new ResXResourceReader (new StringReader (resXContent))) {
- try {
- r.GetEnumerator ();
- Assert.Fail ("#1");
- } catch (ArgumentException ex) {
- //Invalid ResX input. Could not find valid \"resheader\"
- // tags for the ResX reader & writer type names
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
- Assert.IsNull (ex.InnerException, "#3");
- Assert.IsNotNull (ex.Message, "#4");
- Assert.IsTrue (ex.Message.IndexOf ("\"resheader\"") != -1, "#5");
- Assert.IsNull (ex.ParamName, "#6");
- }
- }
- }
- [Test]
- public void ResHeader_Writer_Missing ()
- {
- const string resXTemplate =
- "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
- "<root>" +
- " <resheader name=\"resmimetype\">" +
- " {0}" +
- " </resheader>" +
- " <resheader name=\"version\">" +
- " <value>{1}</value>" +
- " </resheader>" +
- " <resheader name=\"reader\">" +
- " <value>System.Resources.ResXResourceReader, {2}</value>" +
- " </resheader>" +
- "</root>";
- string resXContent = string.Format (CultureInfo.InvariantCulture,
- resXTemplate, ResXResourceWriter.ResMimeType, "1.0",
- Consts.AssemblySystem_Windows_Forms);
- using (ResXResourceReader r = new ResXResourceReader (new StringReader (resXContent))) {
- try {
- r.GetEnumerator ();
- Assert.Fail ("#1");
- } catch (ArgumentException ex) {
- //Invalid ResX input. Could not find valid \"resheader\"
- // tags for the ResX reader & writer type names
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
- Assert.IsNull (ex.InnerException, "#3");
- Assert.IsNotNull (ex.Message, "#4");
- Assert.IsTrue (ex.Message.IndexOf ("\"resheader\"") != -1, "#5");
- Assert.IsNull (ex.ParamName, "#6");
- }
- }
- }
- [Test]
- public void ResHeader_Writer_Null ()
- {
- const string resXTemplate =
- "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
- "<root>" +
- " <resheader name=\"resmimetype\">" +
- " {0}" +
- " </resheader>" +
- " <resheader name=\"version\">" +
- " <value>{1}</value>" +
- " </resheader>" +
- " <resheader name=\"reader\">" +
- " <value>System.Resources.ResXResourceReader, {2}</value>" +
- " </resheader>" +
- " <resheader name=\"writer\" />" +
- "</root>";
- string resXContent = string.Format (CultureInfo.InvariantCulture,
- resXTemplate, ResXResourceWriter.ResMimeType, "1.0",
- Consts.AssemblySystem_Windows_Forms);
- using (ResXResourceReader r = new ResXResourceReader (new StringReader (resXContent))) {
- try {
- r.GetEnumerator ();
- Assert.Fail ("#1");
- } catch (ArgumentException ex) {
- //Invalid ResX input. Could not find valid \"resheader\"
- // tags for the ResX reader & writer type names
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
- Assert.IsNull (ex.InnerException, "#3");
- Assert.IsNotNull (ex.Message, "#4");
- Assert.IsTrue (ex.Message.IndexOf ("\"resheader\"") != -1, "#5");
- Assert.IsNull (ex.ParamName, "#6");
- }
- }
- }
- [Test]
- public void ResHeader_Unknown ()
- {
- const string resXTemplate =
- "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
- "<root>" +
- " <resheader name=\"resmimetype\">" +
- " {0}" +
- " </resheader>" +
- " <resheader name=\"version\">" +
- " <value>{1}</value>" +
- " </resheader>" +
- " <resheader name=\"reader\">" +
- " <value> System.Resources.ResXResourceReader , {2}</value>" +
- " </resheader>" +
- " <resheader name=\"writer\">" +
- " <value> System.Resources.ResXResourceWriter , {2}</value>" +
- " </resheader>" +
- " <resheader name=\"UNKNOWN\">" +
- " <value>whatever</value>" +
- " </resheader>" +
- "</root>";
- string resXContent = string.Format (CultureInfo.InvariantCulture,
- resXTemplate, ResXResourceWriter.ResMimeType, "1.0",
- Consts.AssemblySystem_Windows_Forms);
- using (ResXResourceReader r = new ResXResourceReader (new StringReader (resXContent))) {
- r.GetEnumerator ();
- }
- }
- [Test]
- public void ResName_Null ()
- {
- const string resXContent =
- "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
- "<root>" +
- " <resheader name=\"resmimetype\">" +
- " <value>invalid</value>" +
- " </resheader>" +
- " <data name=\"name\">" +
- " <value>de Icaza</value>" +
- " </data>" +
- " <data>" +
- " <value>whatever</value>" +
- " </data>" +
- "</root>";
- using (StringReader sr = new StringReader (resXContent)) {
- using (ResXResourceReader r = new ResXResourceReader (sr)) {
- try {
- r.GetEnumerator ();
- Assert.Fail ("#1");
- } catch (ArgumentException ex) {
- // Invalid ResX input.
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
- Assert.IsNotNull (ex.InnerException, "#3");
- Assert.IsNotNull (ex.Message, "#4");
- Assert.IsNull (ex.ParamName, "#5");
- // Could not find a name for a resource. The resource
- // value was 'whatever'. Line 1, position 200
- XmlException inner = ex.InnerException as XmlException;
- Assert.IsNotNull (inner, "#6");
- Assert.AreEqual (typeof (XmlException), inner.GetType (), "#7");
- Assert.IsNotNull (inner.InnerException, "#8");
- Assert.AreEqual (1, inner.LineNumber, "#9");
- // Assert.AreEqual (200, inner.LinePosition, "#10");
- Assert.IsNotNull (inner.Message, "#11");
- Assert.IsTrue (inner.Message.IndexOf ("'whatever'") != -1, "#12");
- Assert.IsTrue (inner.Message.IndexOf (" 1") != -1, "#13");
- //Assert.IsTrue (inner.Message.IndexOf ("200") != -1, "#14");
- // Could not find a name for a resource. The resource
- // value was 'whatever'
- ArgumentException inner2 = inner.InnerException as ArgumentException;
- Assert.IsNotNull (inner2, "#15");
- Assert.AreEqual (typeof (ArgumentException), inner2.GetType (), "#16");
- Assert.IsNull (inner2.InnerException, "#17");
- Assert.IsNotNull (inner2.Message, "#18");
- Assert.IsTrue (inner2.Message.IndexOf ("'whatever'") != -1, "#19");
- Assert.IsNull (inner2.ParamName, "#20");
- }
- }
- }
- }
- static string resXWithEmptyName =
- @"<?xml version=""1.0"" encoding=""utf-8""?>
- <root>
- <resheader name=""resmimetype"">
- <value>text/microsoft-resx</value>
- </resheader>
- <resheader name=""version"">
- <value>2.0</value>
- </resheader>
- <resheader name=""reader"">
- <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <resheader name=""writer"">
- <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <data name="""">
- <value>a resource with no name</value>
- </data>
- </root>";
- static string resxWithNullRef =
- @"<?xml version=""1.0"" encoding=""utf-8""?>
- <root>
- <resheader name=""resmimetype"">
- <value>text/microsoft-resx</value>
- </resheader>
- <resheader name=""version"">
- <value>2.0</value>
- </resheader>
- <resheader name=""reader"">
- <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <resheader name=""writer"">
- <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <data name=""NullRef"" type=""System.Resources.ResXNullRef, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"">
- <value></value>
- </data>
- </root>";
- [Test]
- public void ResName_Empty ()
- {
- using (StringReader sr = new StringReader (resXWithEmptyName)) {
- using (ResXResourceReader r = new ResXResourceReader (sr)) {
- IDictionaryEnumerator enumerator = r.GetEnumerator ();
- enumerator.MoveNext ();
- Assert.AreEqual ("", enumerator.Key, "#A1");
- Assert.AreEqual ("a resource with no name", (string) enumerator.Value, "#A2");
- }
- }
- }
- [Test]
- public void ResXNullRef ()
- {
- using (StringReader sr = new StringReader (resxWithNullRef)) {
- using (ResXResourceReader r = new ResXResourceReader (sr)) {
- IDictionaryEnumerator enumerator = r.GetEnumerator ();
- enumerator.MoveNext ();
- Assert.AreEqual ("NullRef", enumerator.Key, "#A1");
- Assert.IsNull (enumerator.Value, "#A2");
- }
- }
- }
- [Test]
- public void ResValue ()
- {
- string resXContent = string.Format (CultureInfo.CurrentCulture,
- "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
- "<root>" +
- " <resheader name=\"resmimetype\">" +
- " <value>{0}</value>" +
- " </resheader>" +
- " <resheader name=\"reader\">" +
- " <value>System.Resources.ResXResourceReader, {1}</value>" +
- " </resheader>" +
- " <resheader name=\"writer\">" +
- " <value>System.Resources.ResXResourceWriter, {1}</value>" +
- " </resheader>" +
- " <data name=\"name1\">" +
- " <value><![CDATA[ <value1> ]]></value>" +
- " </data>" +
- " <data name=\"name2\">" +
- " <value> <![CDATA[<value2>]]> </value>" +
- " </data>" +
- " <data name=\"name3\">" +
- " <![CDATA[<value3>]]> " +
- " </data>" +
- " <data name=\"name4\">" +
- " <value> value4 </value>" +
- " </data>" +
- " <data name=\"name5\">" +
- " test<value>value5</value>" +
- " </data>" +
- " <data name=\"name6\">" +
- " test1<value>value6</value>test2" +
- " </data>" +
- " <data name=\"name7\">" +
- " <value>value7a</value>" +
- " <whatever>value7b</whatever>" +
- " </data>" +
- " <data name=\"name8\">" +
- " <whatever>value8</whatever>" +
- " </data>" +
- " <data name=\"name9\">" +
- " <whatever>value9a</whatever>" +
- " <whatever>value9b</whatever>" +
- " </data>" +
- " <data name=\"name10\">" +
- " test<whatever>value10</whatever>" +
- " </data>" +
- " <data name=\"name11\">" +
- " test1<whatever>value11</whatever>test2" +
- " </data>" +
- " <data name=\"name12\">" +
- " <value> test <![CDATA[<value12>]]> </value>" +
- " </data>" +
- " <data name=\"name13\">" +
- " test <![CDATA[<value13>]]> " +
- " </data>" +
- " <data name=\"name14\" />" +
- " <data name=\"name15\"></data>" +
- " <data name=\"name16\">value16</data>" +
- " <data name=\"name17\">value17</data>" +
- " <data name=\"name18\">" +
- " <value>value18</value>" +
- " <data name=\"name19\">" +
- " <value>value18</value>" +
- " </data>" +
- " </data>" +
- "</root>",
- ResXResourceWriter.ResMimeType, Consts.AssemblySystem_Windows_Forms);
- using (StringReader sr = new StringReader (resXContent)) {
- using (ResXResourceReader r = new ResXResourceReader (sr)) {
- IDictionaryEnumerator enumerator = r.GetEnumerator ();
- int entries = 0;
- while (enumerator.MoveNext ()) {
- entries++;
- switch ((string) enumerator.Key) {
- case "name1":
- Assert.IsNotNull (enumerator.Value, "#A1");
- Assert.AreEqual (" <value1> ", enumerator.Value, "#A2");
- break;
- case "name2":
- Assert.IsNotNull (enumerator.Value, "#B1");
- Assert.AreEqual ("<value2>", enumerator.Value, "#B2");
- break;
- case "name3":
- Assert.IsNotNull (enumerator.Value, "#C1");
- Assert.AreEqual ("<value3>", enumerator.Value, "#C2");
- break;
- case "name4":
- Assert.IsNotNull (enumerator.Value, "#D1");
- Assert.AreEqual (" value4 ", enumerator.Value, "#D2");
- break;
- case "name5":
- Assert.IsNotNull (enumerator.Value, "#E1");
- Assert.AreEqual ("value5", enumerator.Value, "#E2");
- break;
- case "name6":
- Assert.IsNotNull (enumerator.Value, "#F1");
- Assert.AreEqual ("test2", enumerator.Value, "#F2");
- break;
- case "name7":
- Assert.IsNotNull (enumerator.Value, "#G1");
- Assert.AreEqual (string.Empty, enumerator.Value, "#G2");
- break;
- case "name8":
- Assert.IsNotNull (enumerator.Value, "#H1");
- Assert.AreEqual (string.Empty, enumerator.Value, "#H2");
- break;
- case "name9":
- Assert.IsNotNull (enumerator.Value, "#I1");
- Assert.AreEqual (string.Empty, enumerator.Value, "#I2");
- break;
- case "name10":
- Assert.IsNotNull (enumerator.Value, "#J1");
- Assert.AreEqual (string.Empty, enumerator.Value, "#J2");
- break;
- case "name11":
- Assert.IsNotNull (enumerator.Value, "#K1");
- Assert.AreEqual ("test2", enumerator.Value, "#K2");
- break;
- case "name12":
- Assert.IsNotNull (enumerator.Value, "#L1");
- Assert.AreEqual (" test <value12>", enumerator.Value, "#L2");
- break;
- case "name13":
- Assert.IsNotNull (enumerator.Value, "#M1");
- Assert.AreEqual ("<value13>", enumerator.Value, "#M2");
- break;
- case "name14":
- Assert.IsNull (enumerator.Value, "#N1");
- break;
- case "name16":
- Assert.IsNotNull (enumerator.Value, "#O1");
- Assert.AreEqual ("value16", enumerator.Value, "#O2");
- break;
- case "name17":
- Assert.IsNotNull (enumerator.Value, "#P1");
- Assert.AreEqual ("value17", enumerator.Value, "#P2");
- break;
- case "name18":
- Assert.IsNotNull (enumerator.Value, "#Q1");
- Assert.AreEqual ("value18", enumerator.Value, "#Q2");
- break;
- default:
- Assert.Fail ("#Q:" + enumerator.Key);
- break;
- }
- }
- Assert.AreEqual (17, entries, "#Q");
- }
- }
- }
- [Test]
- public void EnumeratorOrderSameAsResx ()
- {
- string resXContent = string.Format (CultureInfo.CurrentCulture,
- "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
- "<root>" +
- " <resheader name=\"resmimetype\">" +
- " <value>{0}</value>" +
- " </resheader>" +
- " <resheader name=\"reader\">" +
- " <value>System.Resources.ResXResourceReader, {1}</value>" +
- " </resheader>" +
- " <resheader name=\"writer\">" +
- " <value>System.Resources.ResXResourceWriter, {1}</value>" +
- " </resheader>" +
- " <data name=\"name2\">" +
- " <value> value5 </value>" +
- " </data>" +
- " <data name=\"name1\">" +
- " <value> value4 </value>" +
- " </data>" +
- " <data name=\"aaa\">" +
- " <value> value3 </value>" +
- " </data>" +
- " <data name=\"zzzz\">" +
- " <value> value2 </value>" +
- " </data>" +
- " <data name=\"bbbbbb\">" +
- " <value> value1 </value>" +
- " </data>" +
- "</root>",
- ResXResourceWriter.ResMimeType, Consts.AssemblySystem_Windows_Forms);
- using (StringReader sr = new StringReader (resXContent)) {
- using (ResXResourceReader r = new ResXResourceReader (sr)) {
- IDictionaryEnumerator enumerator = r.GetEnumerator ();
- enumerator.MoveNext ();
- Assert.AreEqual ("name2", enumerator.Key, "#1");
- enumerator.MoveNext ();
- Assert.AreEqual ("name1", enumerator.Key, "#2");
- enumerator.MoveNext ();
- Assert.AreEqual ("aaa", enumerator.Key, "#3");
- enumerator.MoveNext ();
- Assert.AreEqual ("zzzz", enumerator.Key, "#4");
- enumerator.MoveNext ();
- Assert.AreEqual ("bbbbbb", enumerator.Key, "#5");
- }
- }
- }
- [Test]
- public void UseResXDataNodes ()
- {
- string refFile = Path.Combine (_tempDirectory, "32x32.ico");
- WriteEmbeddedResource ("32x32.ico", refFile);
- string resxFile = Path.Combine (_tempDirectory, "resources.resx");
- using (StreamWriter sw = new StreamWriter (resxFile, false, Encoding.UTF8)) {
- sw.Write (string.Format (CultureInfo.InvariantCulture,
- _resXFileRefTemplate, ResXResourceWriter.ResMimeType, "1.0",
- Consts.AssemblySystem_Windows_Forms, refFile,
- typeof (Bitmap).AssemblyQualifiedName, string.Empty,
- Consts.AssemblyCorlib));
- }
- using (ResXResourceReader r = new ResXResourceReader (resxFile)) {
- r.UseResXDataNodes = true;
- IDictionaryEnumerator enumerator = r.GetEnumerator ();
- int entries = 0;
- while (enumerator.MoveNext ()) {
- entries++;
- ResXDataNode node = enumerator.Value as ResXDataNode;
- switch ((string) enumerator.Key) {
- case "foo":
- Assert.AreEqual ("foo", node.Name, "#A1");
- Bitmap bitmap = node.GetValue (new AssemblyName[] {typeof (Bitmap).Assembly.GetName ()}) as Bitmap;
- Assert.IsNotNull (bitmap, "#A2");
- break;
- case "panel_label.Locked":
- Assert.AreEqual ("panel_label.Locked", node.Name, "#B1");
- Assert.AreEqual (true, node.GetValue (new AssemblyName[] {typeof (int).Assembly.GetName ()}), "#B2");
- break;
- default:
- Assert.Fail ("#C:" + enumerator.Key);
- break;
- }
- }
- Assert.AreEqual (2, entries, "#D");
- }
- }
-
- [Test]
- [Category ("NotWorking")]
- public void ResXDataNode_GetNodePosition ()
- {
- // This test relies on a hashtable's enumerator being ordered,
- // when the ordering is not guaranteed.
- string refFile = Path.Combine (_tempDirectory, "32x32.ico");
- WriteEmbeddedResource ("32x32.ico", refFile);
- string resxFile = Path.Combine (_tempDirectory, "resources.resx");
- using (StreamWriter sw = new StreamWriter (resxFile, false, Encoding.UTF8)) {
- sw.Write (string.Format (CultureInfo.InvariantCulture,
- _resXFileRefTemplate, ResXResourceWriter.ResMimeType, "1.0",
- Consts.AssemblySystem_Windows_Forms, refFile,
- typeof (Bitmap).AssemblyQualifiedName, string.Empty,
- Consts.AssemblyCorlib));
- }
- using (ResXResourceReader r = new ResXResourceReader (resxFile)) {
- r.UseResXDataNodes = true;
- IDictionaryEnumerator enumerator = r.GetEnumerator ();
- enumerator.MoveNext ();
- ResXDataNode node = enumerator.Value as ResXDataNode;
- Assert.IsNotNull (node, "#A1");
- Assert.AreEqual(new Point(1, 717), node.GetNodePosition (), "#A2");
- }
- }
- [Test]
- public void GetMetadataEnumerator ()
- {
- string refFile = Path.Combine (_tempDirectory, "32x32.ico");
- WriteEmbeddedResource ("32x32.ico", refFile);
- string resxFile = Path.Combine (_tempDirectory, "resources.resx");
- using (StreamWriter sw = new StreamWriter (resxFile, false, Encoding.UTF8)) {
- sw.Write (string.Format (CultureInfo.InvariantCulture,
- _resXFileRefTemplate, ResXResourceWriter.ResMimeType, "1.0",
- Consts.AssemblySystem_Windows_Forms, refFile,
- typeof (Bitmap).AssemblyQualifiedName, string.Empty,
- Consts.AssemblyCorlib));
- }
- using (ResXResourceReader r = new ResXResourceReader (resxFile)) {
- IDictionaryEnumerator enumerator = r.GetMetadataEnumerator ();
- Assert.IsTrue (enumerator.MoveNext (), "#A1");
- Assert.IsNotNull (enumerator.Current, "#A2");
- Assert.AreEqual ("panel_label.Locked", enumerator.Key, "#A3");
- Assert.AreEqual(typeof(bool), enumerator.Value.GetType(), "#A4");
- Assert.IsTrue ((bool) enumerator.Value, "#A5");
- Assert.IsFalse (enumerator.MoveNext (), "#A6");
- }
- using (ResXResourceReader r = new ResXResourceReader (resxFile)) {
- r.UseResXDataNodes = true;
- IDictionaryEnumerator enumerator = r.GetMetadataEnumerator ();
- Assert.IsFalse (enumerator.MoveNext (), "#B1");
- }
- }
- [Test]
- public void TypeConversion ()
- {
- string resXContent = string.Format (CultureInfo.CurrentCulture,
- "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
- "<root>" +
- " <resheader name=\"resmimetype\">" +
- " <value>{0}</value>" +
- " </resheader>" +
- " <resheader name=\"reader\">" +
- " <value>System.Resources.ResXResourceReader, {1}</value>" +
- " </resheader>" +
- " <resheader name=\"writer\">" +
- " <value>System.Resources.ResXResourceWriter, {1}</value>" +
- " </resheader>" +
- " <data name=\"AnchorStyle\" type=\"System.Windows.Forms.AnchorStyles, {1}\">" +
- " <value>Bottom, Left</value>" +
- " </data>" +
- " <data name=\"BackgroundImage\" type=\"{2}\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">" +
- " <value>" +
- " Qk12BQAAAAAAADYEAAAoAAAAEgAAABAAAAABAAgAAAAAAAAAAAAgHAAAIBwAAAABAAAAAQAAAAAA/wAA" +
- " M/8AAGb/AACZ/wAAzP8AAP//ADMA/wAzM/8AM2b/ADOZ/wAzzP8AM///AGYA/wBmM/8AZmb/AGaZ/wBm" +
- " zP8AZv//AJkA/wCZM/8AmWb/AJmZ/wCZzP8Amf//AMwA/wDMM/8AzGb/AMyZ/wDMzP8AzP//AP8A/wD/" +
- " M/8A/2b/AP+Z/wD/zP8A////MwAA/zMAM/8zAGb/MwCZ/zMAzP8zAP//MzMA/zMzM/8zM2b/MzOZ/zMz" +
- " zP8zM///M2YA/zNmM/8zZmb/M2aZ/zNmzP8zZv//M5kA/zOZM/8zmWb/M5mZ/zOZzP8zmf//M8wA/zPM" +
- " M/8zzGb/M8yZ/zPMzP8zzP//M/8A/zP/M/8z/2b/M/+Z/zP/zP8z////ZgAA/2YAM/9mAGb/ZgCZ/2YA" +
- " zP9mAP//ZjMA/2YzM/9mM2b/ZjOZ/2YzzP9mM///ZmYA/2ZmM/9mZmb/ZmaZ/2ZmzP9mZv//ZpkA/2aZ" +
- " M/9mmWb/ZpmZ/2aZzP9mmf//ZswA/2bMM/9mzGb/ZsyZ/2bMzP9mzP//Zv8A/2b/M/9m/2b/Zv+Z/2b/" +
- " zP9m////mQAA/5kAM/+ZAGb/mQCZ/5kAzP+ZAP//mTMA/5kzM/+ZM2b/mTOZ/5kzzP+ZM///mWYA/5lm" +
- " M/+ZZmb/mWaZ/5lmzP+ZZv//mZkA/5mZM/+ZmWb/mZmZ/5mZzP+Zmf//mcwA/5nMM/+ZzGb/mcyZ/5nM" +
- " zP+ZzP//mf8A/5n/M/+Z/2b/mf+Z/5n/zP+Z////zAAA/8wAM//MAGb/zACZ/8wAzP/MAP//zDMA/8wz" +
- " M//MM2b/zDOZ/8wzzP/MM///zGYA/8xmM//MZmb/zGaZ/8xmzP/MZv//zJkA/8yZM//MmWb/zJmZ/8yZ" +
- " zP/Mmf//zMwA/8zMM//MzGb/zMyZ/8zMzP/MzP//zP8A/8z/M//M/2b/zP+Z/8z/zP/M/////wAA//8A" +
- " M///AGb//wCZ//8AzP//AP///zMA//8zM///M2b//zOZ//8zzP//M////2YA//9mM///Zmb//2aZ//9m" +
- " zP//Zv///5kA//+ZM///mWb//5mZ//+ZzP//mf///8wA///MM///zGb//8yZ///MzP//zP////8A////" +
- " M////2b///+Z////zP//////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA" +
- " AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA" +
- " AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA" +
- " AAAAAAAAAAwMDAwAAAAAAAAAAAAAAAAAAAAAAAwMDAwAAAAAAAAAAAAAAAAAAAAAAAwMDAAAAAAAAAAA" +
- " AAAAAAAAAAAAAAwMDAAAAAAAAAAAAAAAAAAAAAAADAwMAAAAAAAAAAAADAAAAAAAAAAMDA0AAAAAAAAA" +
- " AAwMDQAAABMTExMTExMTNwAAAAAMDAwMDQAAABMTExMTExMAAAAANzc3Nzc3NwAAAD4+Pj4+AAAAAD4+" +
- " Pj4+Pj4+PgAAAGJiYgAAAAAAAAAAYmJiAAAAAAAAAGIAAAAAAAAAAABiYmIAAAAAAAAAAAAAAAAAAAAA" +
- " AGJiYgAAAAAAAAAAAAAAAAAAAAAAAGJiYgAAAAAAAAAAAAAAAAAAAAAAAGJiYgAAAAAAAAAAAAAAAAAA" +
- " AAAAAGJiYgAAAAAAAAAAAAAA" +
- " </value>" +
- " </data>" +
- " <data name=\"Buffer\" type=\"{3}\">" +
- " <value>BQIH</value>" +
- " </data>" +
- " <data name=\"Data\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">" +
- " <value>Random Thoughts</value>" +
- " </data>" +
- /*s*/" <data name=\"Foo\" type=\"System.Windows.Forms.Application, {1}\">" +
- " <value>A B C</value>" +
- " </data>" +
- " <data name=\"Image\" type=\"{2}\">" +
- " <value>Summer.jpg</value>" +
- " </data>" +
- /*e*/" <data name=\"Text\">" +
- " <value>OK</value>" +
- " </data>" +
- " <data name=\"Unknown\" mimetype=\"application/xxx\">" +
- " <value>MIA</value>" +
- " </data>" +
- " <data name=\"Wrong\" typeof=\"{2}\" mimetype=\"application/xxx\">" +
- " <value>SuperUnknown</value>" +
- " </data>" +
- /*s*/" <data name=\"Xtra\" type=\"System.Windows.Forms.AnchorStyles, {1}\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">" +
- " <value>LeftRight</value>" +
- " </data>" +
- /*e*/"</root>",
- ResXResourceWriter.ResMimeType, Consts.AssemblySystem_Windows_Forms,
- typeof (Bitmap).AssemblyQualifiedName, typeof (byte []).AssemblyQualifiedName);
- using (StringReader sr = new StringReader (resXContent)) {
- using (ResXResourceReader r = new ResXResourceReader (sr)) {
- IDictionaryEnumerator enumerator = r.GetEnumerator ();
- int entries = 0;
- while (enumerator.MoveNext ()) {
- entries++;
- switch ((string) enumerator.Key) {
- case "AnchorStyle":
- Assert.IsNotNull (enumerator.Value, "#A1");
- Assert.AreEqual (AnchorStyles.Bottom | AnchorStyles.Left, enumerator.Value, "#A2");
- break;
- case "BackgroundImage":
- Assert.IsNotNull (enumerator.Value, "#B1");
- Assert.AreEqual (typeof (Bitmap), enumerator.Value.GetType (), "#B2");
- break;
- case "Buffer":
- Assert.IsNotNull (enumerator.Value, "#C1");
- Assert.AreEqual (new byte [] { 5, 2, 7 }, enumerator.Value, "#C2");
- break;
- case "Data":
- Assert.IsNull (enumerator.Value, "#D1");
- break;
- case "Foo":
- Assert.IsNull (enumerator.Value, "#E1");
- break;
- case "Image":
- Assert.IsNull (enumerator.Value, "#F1");
- break;
- case "Text":
- Assert.IsNotNull (enumerator.Value, "#G1");
- Assert.AreEqual ("OK", enumerator.Value, "#G2");
- break;
- case "Unknown":
- Assert.IsNull (enumerator.Value, "#H1");
- break;
- case "Wrong":
- Assert.IsNull (enumerator.Value, "#I1");
- break;
- case "Xtra":
- Assert.IsNull (enumerator.Value, "#J1");
- break;
- default:
- Assert.Fail ("#J:" + enumerator.Key);
- break;
- }
- }
- Assert.AreEqual (10, entries, "#G");
- }
- }
- }
- [Test, ExpectedException (typeof (SerializationException))]
- public void DeSerializationErrorBubbles ()
- {
- using (StringReader sr = new StringReader (serializedResXCorruped)) {
- using (ResXResourceReader r = new ResXResourceReader (sr)) {
- IDictionaryEnumerator enumerator = r.GetEnumerator ();
- // should throw exception
- }
- }
- }
- [Test, ExpectedException (typeof (TargetInvocationException))]
- public void FileRef_DeserializationFails ()
- {
- string corruptFile = Path.GetTempFileName ();
- ResXFileRef fileRef = new ResXFileRef (corruptFile, typeof (serializable).AssemblyQualifiedName);
- File.AppendAllText (corruptFile,"corrupt");
- StringBuilder sb = new StringBuilder();
- using (StringWriter sw = new StringWriter (sb)) {
- using (ResXResourceWriter writer = new ResXResourceWriter (sw)) {
- writer.AddResource ("test", fileRef);
- }
- }
- using (StringReader sr = new StringReader (sb.ToString ())) {
- using (ResXResourceReader reader = new ResXResourceReader (sr)) {
- reader.GetEnumerator ();
- }
- }
- }
- [Test, ExpectedException (typeof (ArgumentException))]
- public void FileRef_TypeCantBeResolved ()
- {
- string aFile = Path.GetTempFileName ();
- ResXFileRef fileRef = new ResXFileRef (aFile, "a.type.doesnt.exist");
- StringBuilder sb = new StringBuilder ();
- using (StringWriter sw = new StringWriter (sb)) {
- using (ResXResourceWriter writer = new ResXResourceWriter (sw)) {
- writer.AddResource ("test", fileRef);
- }
- }
- using (StringReader sr = new StringReader (sb.ToString ())) {
- using (ResXResourceReader reader = new ResXResourceReader (sr)) {
- reader.GetEnumerator ();
- }
- }
- }
- [Test]
- public void TypeConverter_AssemblyNamesUsed ()
- {
- string aName = "DummyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null";
- AssemblyName [] assemblyNames = new AssemblyName [] { new AssemblyName (aName) };
- StringReader sr = new StringReader (convertableResXWithoutAssemblyName);
- using (ResXResourceReader rr = new ResXResourceReader (sr, assemblyNames)) {
- IDictionaryEnumerator en = rr.GetEnumerator ();
- en.MoveNext ();
- object obj = ((DictionaryEntry) en.Current).Value;
- Assert.IsNotNull (obj, "#A1");
- Assert.AreEqual ("DummyAssembly.Convertable, " + aName, obj.GetType ().AssemblyQualifiedName, "#A2");
- }
- }
- [Test]
- public void TypeConverter_ITRSUsed ()
- {
- ResXDataNode dn = new ResXDataNode ("test", 34L);
- StringBuilder sb = new StringBuilder ();
- using (StringWriter sw = new StringWriter (sb)) {
- using (ResXResourceWriter writer = new ResXResourceWriter (sw)) {
- writer.AddResource (dn);
- }
- }
- using (StringReader sr = new StringReader (sb.ToString ())) {
- ResXResourceReader rr = new ResXResourceReader (sr, new ReturnIntITRS ());
- IDictionaryEnumerator en = rr.GetEnumerator ();
- en.MoveNext ();
- object o = ((DictionaryEntry) en.Current).Value;
- Assert.IsNotNull (o, "#A1");
- Assert.IsInstanceOfType (typeof (int), o,"#A2");
- Assert.AreEqual (34, o,"#A3");
- rr.Close ();
- }
- }
- [Test]
- public void Serializable_ITRSUsed ()
- {
- serializable ser = new serializable ("aaaaa", "bbbbb");
- ResXDataNode dn = new ResXDataNode ("test", ser);
- StringBuilder sb = new StringBuilder ();
- using (StringWriter sw = new StringWriter (sb)) {
- using (ResXResourceWriter writer = new ResXResourceWriter (sw)) {
- writer.AddResource (dn);
- }
- }
- using (StringReader sr = new StringReader (sb.ToString ())) {
- ResXResourceReader rr = new ResXResourceReader (sr, new ReturnSerializableSubClassITRS ());
-
- IDictionaryEnumerator en = rr.GetEnumerator ();
- en.MoveNext ();
- object o = ((DictionaryEntry) en.Current).Value;
- Assert.IsNotNull (o, "#A1");
- Assert.IsInstanceOfType (typeof (serializableSubClass), o,"#A2");
- rr.Close ();
- }
- }
- static string convertableResXWithoutAssemblyName =
- @"<?xml version=""1.0"" encoding=""utf-8""?>
- <root>
-
- <resheader name=""resmimetype"">
- <value>text/microsoft-resx</value>
- </resheader>
- <resheader name=""version"">
- <value>2.0</value>
- </resheader>
- <resheader name=""reader"">
- <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <resheader name=""writer"">
- <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
-
- <data name=""test"" type=""DummyAssembly.Convertable"">
- <value>im a name im a value</value>
- </data>
- </root>";
- static string serializedResXCorruped =
- @"<?xml version=""1.0"" encoding=""utf-8""?>
- <root>
-
- <resheader name=""resmimetype"">
- <value>text/microsoft-resx</value>
- </resheader>
- <resheader name=""version"">
- <value>2.0</value>
- </resheader>
- <resheader name=""reader"">
- <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <resheader name=""writer"">
- <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <data name=""test"" mimetype=""application/x-microsoft.net.object.binary.base64"">
- <value>
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- </value>
- </data>
- </root>";
- private static void WriteEmbeddedResource (string name, string filename)
- {
- const int size = 512;
- byte [] buffer = new byte [size];
- int count = 0;
- Stream input = typeof (ResXResourceReaderTest).Assembly.
- GetManifestResourceStream (name);
- Stream output = File.Open (filename, FileMode.Create);
- try {
- while ((count = input.Read (buffer, 0, size)) > 0) {
- output.Write (buffer, 0, count);
- }
- } finally {
- output.Close ();
- }
- }
- private const string _resXFileRefTemplate =
- "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
- "<root>" +
- " <resheader name=\"resmimetype\">" +
- " <value>{0}</value>" +
- " </resheader>" +
- " <resheader name=\"version\">" +
- " <value>{1}</value>" +
- " </resheader>" +
- " <resheader name=\"reader\">" +
- " <value>System.Resources.ResXResourceReader, {2}</value>" +
- " </resheader>" +
- " <resheader name=\"writer\">" +
- " <value>System.Resources.ResXResourceWriter, {2}</value>" +
- " </resheader>" +
- " <metadata name=\"panel_label.Locked\" type=\"System.Boolean, {6}\">" +
- " <value>True</value>" +
- " </metadata>" +
- " <data name=\"foo\" type=\"System.Resources.ResXFileRef, {2}\">" +
- " <value>{3};{4}{5}</value>" +
- " </data>" +
- "</root>";
- }
- }
|