| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766 |
- //
- // XmlTextReaderTests.cs
- //
- // Author:
- // Jason Diamond ([email protected])
- //
- // (C) 2001, 2002 Jason Diamond http://injektilo.org/
- //
- using System;
- using System.IO;
- using System.Xml;
- using NUnit.Framework;
- namespace Ximian.Mono.Tests
- {
- public class XmlTextReaderTests : TestCase
- {
- public XmlTextReaderTests () : base ("Ximian.Mono.Tests.XmlTextReaderTests testsuite") { }
- public XmlTextReaderTests (string name) : base (name) { }
- private void AssertStartDocument (XmlReader xmlReader)
- {
- Assert (xmlReader.ReadState == ReadState.Initial);
- Assert (xmlReader.NodeType == XmlNodeType.None);
- Assert (xmlReader.Depth == 0);
- Assert (!xmlReader.EOF);
- }
- private void AssertNode (
- XmlReader xmlReader,
- XmlNodeType nodeType,
- int depth,
- bool isEmptyElement,
- string name,
- string prefix,
- string localName,
- string namespaceURI,
- string value,
- int attributeCount)
- {
- Assert (xmlReader.Read ());
- Assert (xmlReader.ReadState == ReadState.Interactive);
- Assert (!xmlReader.EOF);
- }
- private void AssertNodeValues (
- XmlReader xmlReader,
- XmlNodeType nodeType,
- int depth,
- bool isEmptyElement,
- string name,
- string prefix,
- string localName,
- string namespaceURI,
- string value,
- int attributeCount)
- {
- Assert (xmlReader.NodeType == nodeType);
- Assert (xmlReader.Depth == depth);
- Assert (xmlReader.IsEmptyElement == isEmptyElement);
- Assert (
- String.Format (
- "name was {0}, expected {1}",
- xmlReader.Name,
- name),
- xmlReader.Name == name);
- Assert (
- String.Format (
- "prefix was {0}, expected {1}",
- xmlReader.Prefix,
- prefix),
- xmlReader.Prefix == prefix);
- Assert (
- String.Format (
- "localName was {0}, expected {1}",
- xmlReader.LocalName,
- localName),
- xmlReader.LocalName == localName);
- Assert (
- String.Format (
- "namespaceURI was {0}, expected {1}",
- xmlReader.NamespaceURI,
- namespaceURI),
- xmlReader.NamespaceURI == namespaceURI);
- Assert (
- String.Format (
- "hasValue was {0}, expected {1}",
- xmlReader.HasValue,
- (value != String.Empty)),
- xmlReader.HasValue == (value != String.Empty));
- Assert (
- String.Format (
- "value was {0}, expected {1}",
- xmlReader.Value,
- value),
- xmlReader.Value == value);
- Assert (
- String.Format (
- "hasAttributes was {0}, expected {1}",
- xmlReader.HasAttributes,
- (attributeCount > 0)),
- xmlReader.HasAttributes == (attributeCount > 0));
- Assert (
- String.Format (
- "attributeCount was {0}, expected {1}",
- xmlReader.AttributeCount,
- attributeCount),
- xmlReader.AttributeCount == attributeCount);
- }
- private void AssertAttribute (
- XmlReader xmlReader,
- string name,
- string prefix,
- string localName,
- string namespaceURI,
- string value)
- {
- Assert (
- String.Format (
- "value was {0}, expected {1}",
- xmlReader[name],
- value),
- xmlReader[name] == value);
- Assert (xmlReader.GetAttribute (name) == value);
- if (namespaceURI != String.Empty) {
- Assert (xmlReader[localName, namespaceURI] == value);
- Assert (xmlReader.GetAttribute (localName, namespaceURI) == value);
- }
- }
- private void AssertEndDocument (XmlReader xmlReader)
- {
- Assert (!xmlReader.Read ());
- Assert (xmlReader.NodeType == XmlNodeType.None);
- Assert (xmlReader.Depth == 0);
- Assert (xmlReader.ReadState == ReadState.EndOfFile);
- Assert (xmlReader.EOF);
- xmlReader.Close ();
- Assert (xmlReader.ReadState == ReadState.Closed);
- }
- public void TestEmptyElement ()
- {
- string xml = "<foo/>";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, // depth
- true, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertEndDocument (xmlReader);
- }
- public void TestEmptyElementWithBadName ()
- {
- string xml = "<1foo/>";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- bool caughtXmlException = false;
- try {
- xmlReader.Read();
- } catch (XmlException) {
- caughtXmlException = true;
- }
- Assert(caughtXmlException);
- }
- public void TestEmptyElementWithWhitespace ()
- {
- string xml = "<foo />";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, //depth
- true, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertEndDocument (xmlReader);
- }
- public void TestEmptyElementWithStartAndEndTag ()
- {
- string xml = "<foo></foo>";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, //depth
- false, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.EndElement, // nodeType
- 0, //depth
- false, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertEndDocument (xmlReader);
- }
- public void TestEmptyElementWithStartAndEndTagWithWhitespace ()
- {
- string xml = "<foo ></foo >";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, //depth
- false, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.EndElement, // nodeType
- 0, //depth
- false, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertEndDocument (xmlReader);
- }
- public void TestNestedEmptyTag ()
- {
- string xml = "<foo><bar/></foo>";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, //depth
- false, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 1, //depth
- true, // isEmptyElement
- "bar", // name
- String.Empty, // prefix
- "bar", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.EndElement, // nodeType
- 0, //depth
- false, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertEndDocument (xmlReader);
- }
- public void TestNestedText ()
- {
- string xml = "<foo>bar</foo>";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, //depth
- false, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Text, // nodeType
- 1, //depth
- false, // isEmptyElement
- String.Empty, // name
- String.Empty, // prefix
- String.Empty, // localName
- String.Empty, // namespaceURI
- "bar", // value
- 0 // attributeCount
- );
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.EndElement, // nodeType
- 0, //depth
- false, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertEndDocument (xmlReader);
- }
- public void TestEmptyElementWithAttribute ()
- {
- string xml = @"<foo bar=""baz""/>";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, //depth
- true, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 1 // attributeCount
- );
- AssertAttribute (
- xmlReader, // xmlReader
- "bar", // name
- String.Empty, // prefix
- "bar", // localName
- String.Empty, // namespaceURI
- "baz" // value
- );
- AssertEndDocument (xmlReader);
- }
- public void TestStartAndEndTagWithAttribute ()
- {
- string xml = @"<foo bar='baz'></foo>";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, //depth
- false, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 1 // attributeCount
- );
- AssertAttribute (
- xmlReader, // xmlReader
- "bar", // name
- String.Empty, // prefix
- "bar", // localName
- String.Empty, // namespaceURI
- "baz" // value
- );
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.EndElement, // nodeType
- 0, //depth
- false, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertEndDocument (xmlReader);
- }
- public void TestEmptyElementWithTwoAttributes ()
- {
- string xml = @"<foo bar=""baz"" quux='quuux'/>";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, //depth
- true, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 2 // attributeCount
- );
- AssertAttribute (
- xmlReader, // xmlReader
- "bar", // name
- String.Empty, // prefix
- "bar", // localName
- String.Empty, // namespaceURI
- "baz" // value
- );
- AssertAttribute (
- xmlReader, // xmlReader
- "quux", // name
- String.Empty, // prefix
- "quux", // localName
- String.Empty, // namespaceURI
- "quuux" // value
- );
- AssertEndDocument (xmlReader);
- }
- public void TestProcessingInstructionBeforeDocumentElement ()
- {
- string xml = "<?foo bar?><baz/>";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.ProcessingInstruction, // nodeType
- 0, //depth
- false, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- "bar", // value
- 0 // attributeCount
- );
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, //depth
- true, // isEmptyElement
- "baz", // name
- String.Empty, // prefix
- "baz", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertEndDocument (xmlReader);
- }
- public void TestCommentBeforeDocumentElement ()
- {
- string xml = "<!--foo--><bar/>";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Comment, // nodeType
- 0, //depth
- false, // isEmptyElement
- String.Empty, // name
- String.Empty, // prefix
- String.Empty, // localName
- String.Empty, // namespaceURI
- "foo", // value
- 0 // attributeCount
- );
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, //depth
- true, // isEmptyElement
- "bar", // name
- String.Empty, // prefix
- "bar", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertEndDocument (xmlReader);
- }
- public void TestPredefinedEntities ()
- {
- string xml = "<foo><>&'"</foo>";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, //depth
- false, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Text, // nodeType
- 1, //depth
- false, // isEmptyElement
- String.Empty, // name
- String.Empty, // prefix
- String.Empty, // localName
- String.Empty, // namespaceURI
- "<>&'\"", // value
- 0 // attributeCount
- );
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.EndElement, // nodeType
- 0, //depth
- false, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertEndDocument (xmlReader);
- }
- public void TestEntityReference ()
- {
- string xml = "<foo>&bar;</foo>";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, //depth
- false, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.EntityReference, // nodeType
- 1, //depth
- false, // isEmptyElement
- "bar", // name
- String.Empty, // prefix
- "bar", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.EndElement, // nodeType
- 0, //depth
- false, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertEndDocument (xmlReader);
- }
- public void TestEntityReferenceInsideText ()
- {
- string xml = "<foo>bar&baz;quux</foo>";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, //depth
- false, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Text, // nodeType
- 1, //depth
- false, // isEmptyElement
- String.Empty, // name
- String.Empty, // prefix
- String.Empty, // localName
- String.Empty, // namespaceURI
- "bar", // value
- 0 // attributeCount
- );
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.EntityReference, // nodeType
- 1, //depth
- false, // isEmptyElement
- "baz", // name
- String.Empty, // prefix
- "baz", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Text, // nodeType
- 1, //depth
- false, // isEmptyElement
- String.Empty, // name
- String.Empty, // prefix
- String.Empty, // localName
- String.Empty, // namespaceURI
- "quux", // value
- 0 // attributeCount
- );
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.EndElement, // nodeType
- 0, //depth
- false, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertEndDocument (xmlReader);
- }
- public void TestCharacterReferences ()
- {
- string xml = "<foo>FOO</foo>";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, //depth
- false, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Text, // nodeType
- 1, //depth
- false, // isEmptyElement
- String.Empty, // name
- String.Empty, // prefix
- String.Empty, // localName
- String.Empty, // namespaceURI
- "FOO", // value
- 0 // attributeCount
- );
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.EndElement, // nodeType
- 0, //depth
- false, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertEndDocument (xmlReader);
- }
- public void TestEntityReferenceInAttribute ()
- {
- string xml = "<foo bar='&baz;'/>";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, //depth
- true, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 1 // attributeCount
- );
- AssertAttribute (
- xmlReader, // xmlReader
- "bar", // name
- String.Empty, // prefix
- "bar", // localName
- String.Empty, // namespaceURI
- "&baz;" // value
- );
- AssertEndDocument (xmlReader);
- }
- public void TestPredefinedEntitiesInAttribute ()
- {
- string xml = "<foo bar='<>&'"'/>";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, //depth
- true, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 1 // attributeCount
- );
- AssertAttribute (
- xmlReader, // xmlReader
- "bar", // name
- String.Empty, // prefix
- "bar", // localName
- String.Empty, // namespaceURI
- "<>&'\"" // value
- );
- AssertEndDocument (xmlReader);
- }
- public void TestCharacterReferencesInAttribute ()
- {
- string xml = "<foo bar='FOO'/>";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, //depth
- true, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 1 // attributeCount
- );
- AssertAttribute (
- xmlReader, // xmlReader
- "bar", // name
- String.Empty, // prefix
- "bar", // localName
- String.Empty, // namespaceURI
- "FOO" // value
- );
- AssertEndDocument (xmlReader);
- }
- public void TestCDATA ()
- {
- string xml = "<foo><![CDATA[<>&]]></foo>";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, //depth
- false, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.CDATA, // nodeType
- 1, //depth
- false, // isEmptyElement
- String.Empty, // name
- String.Empty, // prefix
- String.Empty, // localName
- String.Empty, // namespaceURI
- "<>&", // value
- 0 // attributeCount
- );
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.EndElement, // nodeType
- 0, //depth
- false, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertEndDocument (xmlReader);
- }
- public void TestEmptyElementInNamespace ()
- {
- string xml = @"<foo:bar xmlns:foo='http://foo/' />";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, // depth
- true, // isEmptyElement
- "foo:bar", // name
- "foo", // prefix
- "bar", // localName
- "http://foo/", // namespaceURI
- String.Empty, // value
- 1 // attributeCount
- );
- AssertAttribute (
- xmlReader, // xmlReader
- "xmlns:foo", // name
- "xmlns", // prefix
- "foo", // localName
- "http://www.w3.org/2000/xmlns/", // namespaceURI
- "http://foo/" // value
- );
- AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));
- AssertEndDocument (xmlReader);
- }
- public void TestEmptyElementInDefaultNamespace ()
- {
- string xml = @"<foo xmlns='http://foo/' />";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, // depth
- true, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- "http://foo/", // namespaceURI
- String.Empty, // value
- 1 // attributeCount
- );
- AssertAttribute (
- xmlReader, // xmlReader
- "xmlns", // name
- String.Empty, // prefix
- "xmlns", // localName
- "http://www.w3.org/2000/xmlns/", // namespaceURI
- "http://foo/" // value
- );
- AssertEquals ("http://foo/", xmlReader.LookupNamespace (String.Empty));
- AssertEndDocument (xmlReader);
- }
- public void TestChildElementInNamespace ()
- {
- string xml = @"<foo:bar xmlns:foo='http://foo/'><baz:quux xmlns:baz='http://baz/' /></foo:bar>";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, // depth
- false, // isEmptyElement
- "foo:bar", // name
- "foo", // prefix
- "bar", // localName
- "http://foo/", // namespaceURI
- String.Empty, // value
- 1 // attributeCount
- );
- AssertAttribute (
- xmlReader, // xmlReader
- "xmlns:foo", // name
- "xmlns", // prefix
- "foo", // localName
- "http://www.w3.org/2000/xmlns/", // namespaceURI
- "http://foo/" // value
- );
- AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 1, // depth
- true, // isEmptyElement
- "baz:quux", // name
- "baz", // prefix
- "quux", // localName
- "http://baz/", // namespaceURI
- String.Empty, // value
- 1 // attributeCount
- );
- AssertAttribute (
- xmlReader, // xmlReader
- "xmlns:baz", // name
- "xmlns", // prefix
- "baz", // localName
- "http://www.w3.org/2000/xmlns/", // namespaceURI
- "http://baz/" // value
- );
- AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));
- AssertEquals ("http://baz/", xmlReader.LookupNamespace ("baz"));
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.EndElement, // nodeType
- 0, // depth
- false, // isEmptyElement
- "foo:bar", // name
- "foo", // prefix
- "bar", // localName
- "http://foo/", // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));
- AssertNull (xmlReader.LookupNamespace ("baz"));
- AssertEndDocument (xmlReader);
- }
- public void TestChildElementInDefaultNamespace ()
- {
- string xml = @"<foo:bar xmlns:foo='http://foo/'><baz xmlns='http://baz/' /></foo:bar>";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, // depth
- false, // isEmptyElement
- "foo:bar", // name
- "foo", // prefix
- "bar", // localName
- "http://foo/", // namespaceURI
- String.Empty, // value
- 1 // attributeCount
- );
- AssertAttribute (
- xmlReader, // xmlReader
- "xmlns:foo", // name
- "xmlns", // prefix
- "foo", // localName
- "http://www.w3.org/2000/xmlns/", // namespaceURI
- "http://foo/" // value
- );
- AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 1, // depth
- true, // isEmptyElement
- "baz", // name
- String.Empty, // prefix
- "baz", // localName
- "http://baz/", // namespaceURI
- String.Empty, // value
- 1 // attributeCount
- );
- AssertAttribute (
- xmlReader, // xmlReader
- "xmlns", // name
- String.Empty, // prefix
- "xmlns", // localName
- "http://www.w3.org/2000/xmlns/", // namespaceURI
- "http://baz/" // value
- );
- AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));
- AssertEquals ("http://baz/", xmlReader.LookupNamespace (String.Empty));
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.EndElement, // nodeType
- 0, // depth
- false, // isEmptyElement
- "foo:bar", // name
- "foo", // prefix
- "bar", // localName
- "http://foo/", // namespaceURI
- String.Empty, // value
- 0 // attributeCount
- );
- AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));
- AssertEndDocument (xmlReader);
- }
- public void TestAttributeInNamespace ()
- {
- string xml = @"<foo bar:baz='quux' xmlns:bar='http://bar/' />";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, // depth
- true, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 2 // attributeCount
- );
- AssertAttribute (
- xmlReader, // xmlReader
- "bar:baz", // name
- "bar", // prefix
- "baz", // localName
- "http://bar/", // namespaceURI
- "quux" // value
- );
- AssertAttribute (
- xmlReader, // xmlReader
- "xmlns:bar", // name
- "xmlns", // prefix
- "bar", // localName
- "http://www.w3.org/2000/xmlns/", // namespaceURI
- "http://bar/" // value
- );
- AssertEquals ("http://bar/", xmlReader.LookupNamespace ("bar"));
- AssertEndDocument (xmlReader);
- }
- // The following is #if'ed out because it's specific to the Mono
- // implementation and won't compile when testing Microsoft's code.
- // Feel free to turn it on if you want to test Mono's name tables.
- #if false
- public void TestIsFirstNameChar ()
- {
- for (int ch = 0; ch <= 0xFFFF; ++ch) {
- Assert (
- XmlChar.IsFirstNameChar (ch) ==
- IsFirstNameChar (ch));
- }
- }
- public void TestIsNameChar ()
- {
- for (int ch = 0; ch <= 0xFFFF; ++ch) {
- Assert (
- XmlChar.IsNameChar (ch) ==
- IsNameChar (ch));
- }
- }
- private static bool IsFirstNameChar (int ch)
- {
- return
- IsLetter (ch) ||
- (ch == '_') ||
- (ch == ':');
- }
- private static bool IsNameChar (int ch)
- {
- return
- IsLetter (ch) ||
- IsDigit (ch) ||
- (ch == '.') ||
- (ch == '-') ||
- (ch == '_') ||
- (ch == ':') ||
- IsCombiningChar (ch) ||
- IsExtender (ch);
- }
- private static bool IsLetter (int ch)
- {
- return
- IsBaseChar (ch) ||
- IsIdeographic (ch);
- }
- private static bool IsBaseChar (int ch)
- {
- return
- (ch >= 0x0041 && ch <= 0x005A) ||
- (ch >= 0x0061 && ch <= 0x007A) ||
- (ch >= 0x00C0 && ch <= 0x00D6) ||
- (ch >= 0x00D8 && ch <= 0x00F6) ||
- (ch >= 0x00F8 && ch <= 0x00FF) ||
- (ch >= 0x0100 && ch <= 0x0131) ||
- (ch >= 0x0134 && ch <= 0x013E) ||
- (ch >= 0x0141 && ch <= 0x0148) ||
- (ch >= 0x014A && ch <= 0x017E) ||
- (ch >= 0x0180 && ch <= 0x01C3) ||
- (ch >= 0x01CD && ch <= 0x01F0) ||
- (ch >= 0x01F4 && ch <= 0x01F5) ||
- (ch >= 0x01FA && ch <= 0x0217) ||
- (ch >= 0x0250 && ch <= 0x02A8) ||
- (ch >= 0x02BB && ch <= 0x02C1) ||
- (ch == 0x0386) ||
- (ch >= 0x0388 && ch <= 0x038A) ||
- (ch == 0x038C) ||
- (ch >= 0x038E && ch <= 0x03A1) ||
- (ch >= 0x03A3 && ch <= 0x03CE) ||
- (ch >= 0x03D0 && ch <= 0x03D6) ||
- (ch == 0x03DA) ||
- (ch == 0x03DC) ||
- (ch == 0x03DE) ||
- (ch == 0x03E0) ||
- (ch >= 0x03E2 && ch <= 0x03F3) ||
- (ch >= 0x0401 && ch <= 0x040C) ||
- (ch >= 0x040E && ch <= 0x044F) ||
- (ch >= 0x0451 && ch <= 0x045C) ||
- (ch >= 0x045E && ch <= 0x0481) ||
- (ch >= 0x0490 && ch <= 0x04C4) ||
- (ch >= 0x04C7 && ch <= 0x04C8) ||
- (ch >= 0x04CB && ch <= 0x04CC) ||
- (ch >= 0x04D0 && ch <= 0x04EB) ||
- (ch >= 0x04EE && ch <= 0x04F5) ||
- (ch >= 0x04F8 && ch <= 0x04F9) ||
- (ch >= 0x0531 && ch <= 0x0556) ||
- (ch == 0x0559) ||
- (ch >= 0x0561 && ch <= 0x0586) ||
- (ch >= 0x05D0 && ch <= 0x05EA) ||
- (ch >= 0x05F0 && ch <= 0x05F2) ||
- (ch >= 0x0621 && ch <= 0x063A) ||
- (ch >= 0x0641 && ch <= 0x064A) ||
- (ch >= 0x0671 && ch <= 0x06B7) ||
- (ch >= 0x06BA && ch <= 0x06BE) ||
- (ch >= 0x06C0 && ch <= 0x06CE) ||
- (ch >= 0x06D0 && ch <= 0x06D3) ||
- (ch == 0x06D5) ||
- (ch >= 0x06E5 && ch <= 0x06E6) ||
- (ch >= 0x0905 && ch <= 0x0939) ||
- (ch == 0x093D) ||
- (ch >= 0x0958 && ch <= 0x0961) ||
- (ch >= 0x0985 && ch <= 0x098C) ||
- (ch >= 0x098F && ch <= 0x0990) ||
- (ch >= 0x0993 && ch <= 0x09A8) ||
- (ch >= 0x09AA && ch <= 0x09B0) ||
- (ch == 0x09B2) ||
- (ch >= 0x09B6 && ch <= 0x09B9) ||
- (ch >= 0x09DC && ch <= 0x09DD) ||
- (ch >= 0x09DF && ch <= 0x09E1) ||
- (ch >= 0x09F0 && ch <= 0x09F1) ||
- (ch >= 0x0A05 && ch <= 0x0A0A) ||
- (ch >= 0x0A0F && ch <= 0x0A10) ||
- (ch >= 0x0A13 && ch <= 0x0A28) ||
- (ch >= 0x0A2A && ch <= 0x0A30) ||
- (ch >= 0x0A32 && ch <= 0x0A33) ||
- (ch >= 0x0A35 && ch <= 0x0A36) ||
- (ch >= 0x0A38 && ch <= 0x0A39) ||
- (ch >= 0x0A59 && ch <= 0x0A5C) ||
- (ch == 0x0A5E) ||
- (ch >= 0x0A72 && ch <= 0x0A74) ||
- (ch >= 0x0A85 && ch <= 0x0A8B) ||
- (ch == 0x0A8D) ||
- (ch >= 0x0A8F && ch <= 0x0A91) ||
- (ch >= 0x0A93 && ch <= 0x0AA8) ||
- (ch >= 0x0AAA && ch <= 0x0AB0) ||
- (ch >= 0x0AB2 && ch <= 0x0AB3) ||
- (ch >= 0x0AB5 && ch <= 0x0AB9) ||
- (ch == 0x0ABD) ||
- (ch == 0x0AE0) ||
- (ch >= 0x0B05 && ch <= 0x0B0C) ||
- (ch >= 0x0B0F && ch <= 0x0B10) ||
- (ch >= 0x0B13 && ch <= 0x0B28) ||
- (ch >= 0x0B2A && ch <= 0x0B30) ||
- (ch >= 0x0B32 && ch <= 0x0B33) ||
- (ch >= 0x0B36 && ch <= 0x0B39) ||
- (ch == 0x0B3D) ||
- (ch >= 0x0B5C && ch <= 0x0B5D) ||
- (ch >= 0x0B5F && ch <= 0x0B61) ||
- (ch >= 0x0B85 && ch <= 0x0B8A) ||
- (ch >= 0x0B8E && ch <= 0x0B90) ||
- (ch >= 0x0B92 && ch <= 0x0B95) ||
- (ch >= 0x0B99 && ch <= 0x0B9A) ||
- (ch == 0x0B9C) ||
- (ch >= 0x0B9E && ch <= 0x0B9F) ||
- (ch >= 0x0BA3 && ch <= 0x0BA4) ||
- (ch >= 0x0BA8 && ch <= 0x0BAA) ||
- (ch >= 0x0BAE && ch <= 0x0BB5) ||
- (ch >= 0x0BB7 && ch <= 0x0BB9) ||
- (ch >= 0x0C05 && ch <= 0x0C0C) ||
- (ch >= 0x0C0E && ch <= 0x0C10) ||
- (ch >= 0x0C12 && ch <= 0x0C28) ||
- (ch >= 0x0C2A && ch <= 0x0C33) ||
- (ch >= 0x0C35 && ch <= 0x0C39) ||
- (ch >= 0x0C60 && ch <= 0x0C61) ||
- (ch >= 0x0C85 && ch <= 0x0C8C) ||
- (ch >= 0x0C8E && ch <= 0x0C90) ||
- (ch >= 0x0C92 && ch <= 0x0CA8) ||
- (ch >= 0x0CAA && ch <= 0x0CB3) ||
- (ch >= 0x0CB5 && ch <= 0x0CB9) ||
- (ch == 0x0CDE) ||
- (ch >= 0x0CE0 && ch <= 0x0CE1) ||
- (ch >= 0x0D05 && ch <= 0x0D0C) ||
- (ch >= 0x0D0E && ch <= 0x0D10) ||
- (ch >= 0x0D12 && ch <= 0x0D28) ||
- (ch >= 0x0D2A && ch <= 0x0D39) ||
- (ch >= 0x0D60 && ch <= 0x0D61) ||
- (ch >= 0x0E01 && ch <= 0x0E2E) ||
- (ch == 0x0E30) ||
- (ch >= 0x0E32 && ch <= 0x0E33) ||
- (ch >= 0x0E40 && ch <= 0x0E45) ||
- (ch >= 0x0E81 && ch <= 0x0E82) ||
- (ch == 0x0E84) ||
- (ch >= 0x0E87 && ch <= 0x0E88) ||
- (ch == 0x0E8A) ||
- (ch == 0x0E8D) ||
- (ch >= 0x0E94 && ch <= 0x0E97) ||
- (ch >= 0x0E99 && ch <= 0x0E9F) ||
- (ch >= 0x0EA1 && ch <= 0x0EA3) ||
- (ch == 0x0EA5) ||
- (ch == 0x0EA7) ||
- (ch >= 0x0EAA && ch <= 0x0EAB) ||
- (ch >= 0x0EAD && ch <= 0x0EAE) ||
- (ch == 0x0EB0) ||
- (ch >= 0x0EB2 && ch <= 0x0EB3) ||
- (ch == 0x0EBD) ||
- (ch >= 0x0EC0 && ch <= 0x0EC4) ||
- (ch >= 0x0F40 && ch <= 0x0F47) ||
- (ch >= 0x0F49 && ch <= 0x0F69) ||
- (ch >= 0x10A0 && ch <= 0x10C5) ||
- (ch >= 0x10D0 && ch <= 0x10F6) ||
- (ch == 0x1100) ||
- (ch >= 0x1102 && ch <= 0x1103) ||
- (ch >= 0x1105 && ch <= 0x1107) ||
- (ch == 0x1109) ||
- (ch >= 0x110B && ch <= 0x110C) ||
- (ch >= 0x110E && ch <= 0x1112) ||
- (ch == 0x113C) ||
- (ch == 0x113E) ||
- (ch == 0x1140) ||
- (ch == 0x114C) ||
- (ch == 0x114E) ||
- (ch == 0x1150) ||
- (ch >= 0x1154 && ch <= 0x1155) ||
- (ch == 0x1159) ||
- (ch >= 0x115F && ch <= 0x1161) ||
- (ch == 0x1163) ||
- (ch == 0x1165) ||
- (ch == 0x1167) ||
- (ch == 0x1169) ||
- (ch >= 0x116D && ch <= 0x116E) ||
- (ch >= 0x1172 && ch <= 0x1173) ||
- (ch == 0x1175) ||
- (ch == 0x119E) ||
- (ch == 0x11A8) ||
- (ch == 0x11AB) ||
- (ch >= 0x11AE && ch <= 0x11AF) ||
- (ch >= 0x11B7 && ch <= 0x11B8) ||
- (ch == 0x11BA) ||
- (ch >= 0x11BC && ch <= 0x11C2) ||
- (ch == 0x11EB) ||
- (ch == 0x11F0) ||
- (ch == 0x11F9) ||
- (ch >= 0x1E00 && ch <= 0x1E9B) ||
- (ch >= 0x1EA0 && ch <= 0x1EF9) ||
- (ch >= 0x1F00 && ch <= 0x1F15) ||
- (ch >= 0x1F18 && ch <= 0x1F1D) ||
- (ch >= 0x1F20 && ch <= 0x1F45) ||
- (ch >= 0x1F48 && ch <= 0x1F4D) ||
- (ch >= 0x1F50 && ch <= 0x1F57) ||
- (ch == 0x1F59) ||
- (ch == 0x1F5B) ||
- (ch == 0x1F5D) ||
- (ch >= 0x1F5F && ch <= 0x1F7D) ||
- (ch >= 0x1F80 && ch <= 0x1FB4) ||
- (ch >= 0x1FB6 && ch <= 0x1FBC) ||
- (ch == 0x1FBE) ||
- (ch >= 0x1FC2 && ch <= 0x1FC4) ||
- (ch >= 0x1FC6 && ch <= 0x1FCC) ||
- (ch >= 0x1FD0 && ch <= 0x1FD3) ||
- (ch >= 0x1FD6 && ch <= 0x1FDB) ||
- (ch >= 0x1FE0 && ch <= 0x1FEC) ||
- (ch >= 0x1FF2 && ch <= 0x1FF4) ||
- (ch >= 0x1FF6 && ch <= 0x1FFC) ||
- (ch == 0x2126) ||
- (ch >= 0x212A && ch <= 0x212B) ||
- (ch == 0x212E) ||
- (ch >= 0x2180 && ch <= 0x2182) ||
- (ch >= 0x3041 && ch <= 0x3094) ||
- (ch >= 0x30A1 && ch <= 0x30FA) ||
- (ch >= 0x3105 && ch <= 0x312C) ||
- (ch >= 0xAC00 && ch <= 0xD7A3);
- }
- private static bool IsIdeographic (int ch)
- {
- return
- (ch >= 0x4E00 && ch <= 0x9FA5) ||
- (ch == 0x3007) ||
- (ch >= 0x3021 && ch <= 0x3029);
- }
- private static bool IsDigit (int ch)
- {
- return
- (ch >= 0x0030 && ch <= 0x0039) ||
- (ch >= 0x0660 && ch <= 0x0669) ||
- (ch >= 0x06F0 && ch <= 0x06F9) ||
- (ch >= 0x0966 && ch <= 0x096F) ||
- (ch >= 0x09E6 && ch <= 0x09EF) ||
- (ch >= 0x0A66 && ch <= 0x0A6F) ||
- (ch >= 0x0AE6 && ch <= 0x0AEF) ||
- (ch >= 0x0B66 && ch <= 0x0B6F) ||
- (ch >= 0x0BE7 && ch <= 0x0BEF) ||
- (ch >= 0x0C66 && ch <= 0x0C6F) ||
- (ch >= 0x0CE6 && ch <= 0x0CEF) ||
- (ch >= 0x0D66 && ch <= 0x0D6F) ||
- (ch >= 0x0E50 && ch <= 0x0E59) ||
- (ch >= 0x0ED0 && ch <= 0x0ED9) ||
- (ch >= 0x0F20 && ch <= 0x0F29);
- }
- private static bool IsCombiningChar (int ch)
- {
- return
- (ch >= 0x0300 && ch <= 0x0345) ||
- (ch >= 0x0360 && ch <= 0x0361) ||
- (ch >= 0x0483 && ch <= 0x0486) ||
- (ch >= 0x0591 && ch <= 0x05A1) ||
- (ch >= 0x05A3 && ch <= 0x05B9) ||
- (ch >= 0x05BB && ch <= 0x05BD) ||
- (ch == 0x05BF) ||
- (ch >= 0x05C1 && ch <= 0x05C2) ||
- (ch == 0x05C4) ||
- (ch >= 0x064B && ch <= 0x0652) ||
- (ch == 0x0670) ||
- (ch >= 0x06D6 && ch <= 0x06DC) ||
- (ch >= 0x06DD && ch <= 0x06DF) ||
- (ch >= 0x06E0 && ch <= 0x06E4) ||
- (ch >= 0x06E7 && ch <= 0x06E8) ||
- (ch >= 0x06EA && ch <= 0x06ED) ||
- (ch >= 0x0901 && ch <= 0x0903) ||
- (ch == 0x093C) ||
- (ch >= 0x093E && ch <= 0x094C) ||
- (ch == 0x094D) ||
- (ch >= 0x0951 && ch <= 0x0954) ||
- (ch >= 0x0962 && ch <= 0x0963) ||
- (ch >= 0x0981 && ch <= 0x0983) ||
- (ch == 0x09BC) ||
- (ch == 0x09BE) ||
- (ch == 0x09BF) ||
- (ch >= 0x09C0 && ch <= 0x09C4) ||
- (ch >= 0x09C7 && ch <= 0x09C8) ||
- (ch >= 0x09CB && ch <= 0x09CD) ||
- (ch == 0x09D7) ||
- (ch >= 0x09E2 && ch <= 0x09E3) ||
- (ch == 0x0A02) ||
- (ch == 0x0A3C) ||
- (ch == 0x0A3E) ||
- (ch == 0x0A3F) ||
- (ch >= 0x0A40 && ch <= 0x0A42) ||
- (ch >= 0x0A47 && ch <= 0x0A48) ||
- (ch >= 0x0A4B && ch <= 0x0A4D) ||
- (ch >= 0x0A70 && ch <= 0x0A71) ||
- (ch >= 0x0A81 && ch <= 0x0A83) ||
- (ch == 0x0ABC) ||
- (ch >= 0x0ABE && ch <= 0x0AC5) ||
- (ch >= 0x0AC7 && ch <= 0x0AC9) ||
- (ch >= 0x0ACB && ch <= 0x0ACD) ||
- (ch >= 0x0B01 && ch <= 0x0B03) ||
- (ch == 0x0B3C) ||
- (ch >= 0x0B3E && ch <= 0x0B43) ||
- (ch >= 0x0B47 && ch <= 0x0B48) ||
- (ch >= 0x0B4B && ch <= 0x0B4D) ||
- (ch >= 0x0B56 && ch <= 0x0B57) ||
- (ch >= 0x0B82 && ch <= 0x0B83) ||
- (ch >= 0x0BBE && ch <= 0x0BC2) ||
- (ch >= 0x0BC6 && ch <= 0x0BC8) ||
- (ch >= 0x0BCA && ch <= 0x0BCD) ||
- (ch == 0x0BD7) ||
- (ch >= 0x0C01 && ch <= 0x0C03) ||
- (ch >= 0x0C3E && ch <= 0x0C44) ||
- (ch >= 0x0C46 && ch <= 0x0C48) ||
- (ch >= 0x0C4A && ch <= 0x0C4D) ||
- (ch >= 0x0C55 && ch <= 0x0C56) ||
- (ch >= 0x0C82 && ch <= 0x0C83) ||
- (ch >= 0x0CBE && ch <= 0x0CC4) ||
- (ch >= 0x0CC6 && ch <= 0x0CC8) ||
- (ch >= 0x0CCA && ch <= 0x0CCD) ||
- (ch >= 0x0CD5 && ch <= 0x0CD6) ||
- (ch >= 0x0D02 && ch <= 0x0D03) ||
- (ch >= 0x0D3E && ch <= 0x0D43) ||
- (ch >= 0x0D46 && ch <= 0x0D48) ||
- (ch >= 0x0D4A && ch <= 0x0D4D) ||
- (ch == 0x0D57) ||
- (ch == 0x0E31) ||
- (ch >= 0x0E34 && ch <= 0x0E3A) ||
- (ch >= 0x0E47 && ch <= 0x0E4E) ||
- (ch == 0x0EB1) ||
- (ch >= 0x0EB4 && ch <= 0x0EB9) ||
- (ch >= 0x0EBB && ch <= 0x0EBC) ||
- (ch >= 0x0EC8 && ch <= 0x0ECD) ||
- (ch >= 0x0F18 && ch <= 0x0F19) ||
- (ch == 0x0F35) ||
- (ch == 0x0F37) ||
- (ch == 0x0F39) ||
- (ch == 0x0F3E) ||
- (ch == 0x0F3F) ||
- (ch >= 0x0F71 && ch <= 0x0F84) ||
- (ch >= 0x0F86 && ch <= 0x0F8B) ||
- (ch >= 0x0F90 && ch <= 0x0F95) ||
- (ch == 0x0F97) ||
- (ch >= 0x0F99 && ch <= 0x0FAD) ||
- (ch >= 0x0FB1 && ch <= 0x0FB7) ||
- (ch == 0x0FB9) ||
- (ch >= 0x20D0 && ch <= 0x20DC) ||
- (ch == 0x20E1) ||
- (ch >= 0x302A && ch <= 0x302F) ||
- (ch == 0x3099) ||
- (ch == 0x309A);
- }
- private static bool IsExtender (int ch)
- {
- return
- (ch == 0x00B7) ||
- (ch == 0x02D0) ||
- (ch == 0x02D1) ||
- (ch == 0x0387) ||
- (ch == 0x0640) ||
- (ch == 0x0E46) ||
- (ch == 0x0EC6) ||
- (ch == 0x3005) ||
- (ch >= 0x3031 && ch <= 0x3035) ||
- (ch >= 0x309D && ch <= 0x309E) ||
- (ch >= 0x30FC && ch <= 0x30FE);
- }
- #endif
- public void TestIsName ()
- {
- Assert (XmlReader.IsName ("foo"));
- Assert (!XmlReader.IsName ("1foo"));
- Assert (!XmlReader.IsName (" foo"));
- }
- public void TestIsNameToken ()
- {
- Assert (XmlReader.IsNameToken ("foo"));
- Assert (XmlReader.IsNameToken ("1foo"));
- Assert (!XmlReader.IsNameToken (" foo"));
- }
- public void TestMoveToElementFromAttribute ()
- {
- string xml = @"<foo bar=""baz"" />";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- Assert (xmlReader.Read ());
- AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
- Assert (xmlReader.MoveToFirstAttribute ());
- AssertEquals (XmlNodeType.Attribute, xmlReader.NodeType);
- Assert (xmlReader.MoveToElement ());
- AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
- }
- public void TestMoveToElementFromElement ()
- {
- string xml = @"<foo bar=""baz"" />";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- Assert (xmlReader.Read ());
- AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
- Assert (!xmlReader.MoveToElement ());
- AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
- }
- public void TestMoveToFirstAttributeWithNoAttributes ()
- {
- string xml = @"<foo />";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- Assert (xmlReader.Read ());
- AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
- Assert (!xmlReader.MoveToFirstAttribute ());
- AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
- }
- public void TestMoveToNextAttributeWithNoAttributes ()
- {
- string xml = @"<foo />";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- Assert (xmlReader.Read ());
- AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
- Assert (!xmlReader.MoveToNextAttribute ());
- AssertEquals (XmlNodeType.Element, xmlReader.NodeType);
- }
- public void TestMoveToNextAttribute()
- {
- string xml = @"<foo bar=""baz"" quux='quuux'/>";
- XmlReader xmlReader =
- new XmlTextReader (new StringReader (xml));
- AssertStartDocument (xmlReader);
- AssertNode (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, //depth
- true, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 2 // attributeCount
- );
- AssertAttribute (
- xmlReader, // xmlReader
- "bar", // name
- String.Empty, // prefix
- "bar", // localName
- String.Empty, // namespaceURI
- "baz" // value
- );
- AssertAttribute (
- xmlReader, // xmlReader
- "quux", // name
- String.Empty, // prefix
- "quux", // localName
- String.Empty, // namespaceURI
- "quuux" // value
- );
- Assert (xmlReader.MoveToNextAttribute ());
- Assert ("bar" == xmlReader.Name || "quux" == xmlReader.Name);
- Assert ("baz" == xmlReader.Value || "quuux" == xmlReader.Value);
- Assert (xmlReader.MoveToNextAttribute ());
- Assert ("bar" == xmlReader.Name || "quux" == xmlReader.Name);
- Assert ("baz" == xmlReader.Value || "quuux" == xmlReader.Value);
- Assert (!xmlReader.MoveToNextAttribute ());
- Assert (xmlReader.MoveToElement ());
- AssertNodeValues (
- xmlReader, // xmlReader
- XmlNodeType.Element, // nodeType
- 0, //depth
- true, // isEmptyElement
- "foo", // name
- String.Empty, // prefix
- "foo", // localName
- String.Empty, // namespaceURI
- String.Empty, // value
- 2 // attributeCount
- );
- AssertEndDocument (xmlReader);
- }
- }
- }
|