public void VerifyXML_MeteoData() { var model = createTestDataModel1Race1Run(); fillMandatoryFields(model); // no eather set, check if weather is absent string s = exportToXML(model.GetRace(0)); Assert.ThrowsException <Xunit.Sdk.TrueException>(() => XmlAssertion.AssertXPathExists("/dsv_alpine_raceresults/racedata/rundata[1]/meteodata", s)); model.GetRace(0).AdditionalProperties.Weather = "sunny"; s = exportToXML(model.GetRace(0)); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/rundata[1]/meteodata/weather", s, "sunny"); Assert.ThrowsException <Xunit.Sdk.TrueException>(() => XmlAssertion.AssertXPathExists("/dsv_alpine_raceresults/racedata/rundata[1]/meteodata/snowtexture", s)); model.GetRace(0).AdditionalProperties.Snow = "griffig"; s = exportToXML(model.GetRace(0)); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/rundata[1]/meteodata/snowtexture", s, "griffig"); Assert.ThrowsException <Xunit.Sdk.TrueException>(() => XmlAssertion.AssertXPathExists("/dsv_alpine_raceresults/racedata/rundata[1]/meteodata/temperature_startaltitude", s)); model.GetRace(0).AdditionalProperties.TempStart = "-2"; s = exportToXML(model.GetRace(0)); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/rundata[1]/meteodata/temperature_startaltitude", s, "-2"); Assert.ThrowsException <Xunit.Sdk.TrueException>(() => XmlAssertion.AssertXPathExists("/dsv_alpine_raceresults/racedata/rundata[1]/meteodata/temperature_finishaltitude", s)); model.GetRace(0).AdditionalProperties.TempFinish = "-1"; s = exportToXML(model.GetRace(0)); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/rundata[1]/meteodata/temperature_finishaltitude", s, "-1"); }
[Test] public void AssertXslTransformResultsWorksWithStrings() { string xslt = XsltTests.IDENTITY_TRANSFORM; string someXml = "<a><b>c</b><b/></a>"; XmlAssertion.AssertXslTransformResults(xslt, someXml, someXml); }
[Test] public void AssertStringEqualAndIdenticalToSelf() { string control = "<assert>true</assert>"; string test = "<assert>true</assert>"; XmlAssertion.AssertXmlIdentical(control, test); XmlAssertion.AssertXmlEquals(control, test); }
[Test] public void AssertXPathEvaluatesToWorksConstantExpression() { XmlAssertion.AssertXPathEvaluatesTo("true()", MY_SOLAR_SYSTEM, "True"); XmlAssertion.AssertXPathEvaluatesTo("false()", MY_SOLAR_SYSTEM, "False"); }
[Test] public void AssertDifferentStringsNotEqualNorIdentical() { string control = "<assert>true</assert>"; string test = "<assert>false</assert>"; XmlDiff xmlDiff = new XmlDiff(control, test); XmlAssertion.AssertXmlNotIdentical(xmlDiff); XmlAssertion.AssertXmlNotEquals(xmlDiff); }
[Test] public void AssertXPathExistsFailsForNonExistentXPath() { try { XmlAssertion.AssertXPathExists("//star[@name='alpha centauri']", MY_SOLAR_SYSTEM); Assertion.Fail("Expected assertion failure"); } catch (AssertionException e) { AvoidUnusedVariableCompilerWarning(e); } }
[Test] public void AssertXmlValidTrueForValidFile() { StreamReader reader = GetStreamReader(ValidatorTests.VALID_FILE); try { XmlAssertion.AssertXmlValid(reader); } finally { reader.Close(); } }
[Test] public void AssertXslTransformResultsWorksWithXmlInput() { StreamReader xsl = GetStreamReader(".\\..\\tests\\etc\\animal.xsl"); XmlInput xslt = new XmlInput(xsl); StreamReader xml = GetStreamReader(".\\..\\tests\\etc\\testAnimal.xml"); XmlInput xmlToTransform = new XmlInput(xml); XmlInput expectedXml = new XmlInput("<dog/>"); XmlAssertion.AssertXslTransformResults(xslt, xmlToTransform, expectedXml); }
public void XmlSerializer_EventResult() { string getXmlEventResult(uint _startNumber, RaceRun _rr, LiveTimingFIS.LiveTimingFIS _lt) { var _results = ViewUtilities.ViewToList <RunResultWithPosition>(_rr.GetResultView()); var _res = _results.FirstOrDefault(_r => _r.StartNumber == _startNumber); return(_lt.getXmlEventResult(_rr, _res)); } string xml; LiveTimingFIS.LiveTimingFIS lt = new LiveTimingFIS.LiveTimingFIS(); TestDataGenerator tg = new TestDataGenerator(); var rp = tg.createRaceParticipant(); rp.Participant.Code = "123"; var r = tg.Model.GetRace(0); var rr1 = r.GetRun(0); xml = getXmlEventResult(1, rr1, lt); XmlAssertion.AssertXPathEvaluatesTo("/livetiming/raceevent/finish/@bib", xml, "1"); XmlAssertion.AssertXPathEvaluatesTo("/livetiming/raceevent/finish/@correction", xml, "y"); XmlAssertion.AssertXPathEvaluatesTo("/livetiming/raceevent/finish/time", xml, "0.00"); rr1.SetStartFinishTime(r.GetParticipant(1), new TimeSpan(0, 08, 0, 0, 0), new TimeSpan(0, 08, 0, 0, 100)); xml = getXmlEventResult(1, rr1, lt); XmlAssertion.AssertXPathEvaluatesTo("/livetiming/raceevent/finish/time", xml, "0.10"); rr1.SetStartFinishTime(r.GetParticipant(1), new TimeSpan(0, 08, 0, 0, 0), new TimeSpan(0, 08, 0, 30, 100)); xml = getXmlEventResult(1, rr1, lt); XmlAssertion.AssertXPathEvaluatesTo("/livetiming/raceevent/finish/time", xml, "30.10"); rr1.SetStartFinishTime(r.GetParticipant(1), new TimeSpan(0, 08, 0, 0, 0), new TimeSpan(0, 08, 1, 30, 100)); xml = getXmlEventResult(1, rr1, lt); XmlAssertion.AssertXPathEvaluatesTo("/livetiming/raceevent/finish/time", xml, "1:30.10"); rr1.SetResultCode(r.GetParticipant(1), RunResult.EResultCode.DIS); xml = getXmlEventResult(1, rr1, lt); XmlAssertion.AssertXPathEvaluatesTo("/livetiming/raceevent/dq/@bib", xml, "1"); rr1.SetResultCode(r.GetParticipant(1), RunResult.EResultCode.NaS); xml = getXmlEventResult(1, rr1, lt); XmlAssertion.AssertXPathEvaluatesTo("/livetiming/raceevent/dns/@bib", xml, "1"); rr1.SetResultCode(r.GetParticipant(1), RunResult.EResultCode.NQ); xml = getXmlEventResult(1, rr1, lt); XmlAssertion.AssertXPathEvaluatesTo("/livetiming/raceevent/dns/@bib", xml, "1"); rr1.SetResultCode(r.GetParticipant(1), RunResult.EResultCode.NiZ); xml = getXmlEventResult(1, rr1, lt); XmlAssertion.AssertXPathEvaluatesTo("/livetiming/raceevent/dnf/@bib", xml, "1"); }
[Test] public void AssertXmlEqualsUsesOptionalDescription() { string description = "Another Optional Description"; try { XmlDiff diff = new XmlDiff(new XmlInput("<a/>"), new XmlInput("<b/>"), new DiffConfiguration(description)); XmlAssertion.AssertXmlEquals(diff); } catch (NUnit.Framework.AssertionException e) { Assertion.AssertEquals(true, e.Message.StartsWith(description)); } }
[Test] public void AssertXPathExistsFailsForNonExistentXPath() { bool caughtException = true; try { XmlAssertion.AssertXPathExists("//star[@name='alpha centauri']", MY_SOLAR_SYSTEM); caughtException = false; } catch (AssertionException e) { AvoidUnusedVariableCompilerWarning(e); } Assert.IsTrue(caughtException); }
[Test] public void AssertXmlValidFalseForInvalidFile() { StreamReader reader = GetStreamReader(ValidatorTests.INVALID_FILE); try { XmlAssertion.AssertXmlValid(reader); Assertion.Fail("Expected assertion failure"); } catch (AssertionException e) { AvoidUnusedVariableCompilerWarning(e); } finally { reader.Close(); } }
[Test] public void AssertXmlEqualsUsesOptionalDescription() { string description = "Another Optional Description"; bool caughtException = true; try { XmlDiff diff = new XmlDiff(new XmlInput("<a/>"), new XmlInput("<b/>"), new DiffConfiguration(description)); XmlAssertion.AssertXmlEquals(diff); caughtException = false; } catch (NUnit.Framework.AssertionException e) { Assert.IsTrue(e.Message.IndexOf(description) > -1); } Assert.IsTrue(caughtException); }
public void VerifyXML_MandatoryFields() { var model = createTestDataModel1Race1Run(); fillMandatoryFields(model); string s = exportToXML(model.GetRace(0)); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedescription/racedate", s, DateTime.Today.ToString("yyyy-MM-dd")); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedescription/gender", s, "A"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedescription/raceid", s, "1234"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedescription/raceorganizer", s, "WSV Glonn"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedescription/discipline", s, "RS"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedescription/category", s, "SO"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedescription/racename", s, "Test Race"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedescription/raceplace", s, "Test Location"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/useddsvlist", s, "123"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/fvalue", s, "720"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/racepenalty[@gender='L']/applied_penalty", s, "0"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/racepenalty[@gender='L']/calculated_penalty", s, "0"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/racepenalty[@gender='M']/applied_penalty", s, "0"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/racepenalty[@gender='M']/calculated_penalty", s, "0"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/racejury[@function='ChiefRace']/lastname", s, "Manager"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/racejury[@function='ChiefRace']/firstname", s, "Race"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/racejury[@function='Referee']/lastname", s, "Referee"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/racejury[@function='Referee']/firstname", s, "Race"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/racejury[@function='RepresentativeTrainer']/lastname", s, "Rep"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/racejury[@function='RepresentativeTrainer']/firstname", s, "T."); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/rundata[1]/coursedata/coursename", s, "Kurs 1"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/rundata[1]/coursedata/number_of_gates", s, "10"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/rundata[1]/coursedata/number_of_turninggates", s, "9"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/rundata[1]/coursedata/startaltitude", s, "1000"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/rundata[1]/coursedata/finishaltitude", s, "100"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/rundata[1]/coursedata/courselength", s, "1000"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/rundata[1]/coursedata/coursesetter/lastname", s, "Flossmann"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/rundata[1]/coursedata/coursesetter/firstname", s, "Sven"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/rundata[1]/coursedata/coursesetter/club", s, "WSV Glonn"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/rundata[1]/coursedata/forerunner[1]/lastname", s, "Runner"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/rundata[1]/coursedata/forerunner[1]/firstname", s, "F."); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/racedata/rundata[1]/coursedata/forerunner[1]/club", s, "WSV Glonn"); }
public void XmlSerializer() { string xml; LiveTimingFIS.LiveTimingFIS lt = new LiveTimingFIS.LiveTimingFIS(); xml = lt.getXmlKeepAlive(); XmlAssertion.AssertXPathExists("/livetiming/command/keepalive", xml); xml = lt.getXmlClearRace(); XmlAssertion.AssertXPathExists("/livetiming/command/clear", xml); xml = lt.getXmlStatusUpdateInfo("test"); XmlAssertion.AssertXPathExists("/livetiming/message", xml); XmlAssertion.AssertXPathEvaluatesTo("/livetiming/message", xml, "test"); TestDataGenerator tg = new TestDataGenerator(); var rp = tg.createRaceParticipant(); var r = tg.Model.GetRace(0); r.GetParticipant(1).Participant.Nation = "nation"; r.GetParticipant(1).Participant.Code = "123"; var rr1 = r.GetRun(0); xml = lt.getXmlEventOnStart(r.GetParticipant(1)); XmlAssertion.AssertXPathEvaluatesTo("/livetiming/raceevent/nextstart/@bib", xml, "1"); xml = lt.getXmlEventStarted(r.GetParticipant(1)); XmlAssertion.AssertXPathEvaluatesTo("/livetiming/raceevent/start/@bib", xml, "1"); xml = lt.getXmlStartList(rr1); XmlAssertion.AssertXPathEvaluatesTo("/livetiming/startlist/@runno", xml, rr1.Run.ToString()); XmlAssertion.AssertXPathEvaluatesTo("/livetiming/startlist/racer[1]/@order", xml, "1"); XmlAssertion.AssertXPathEvaluatesTo("/livetiming/startlist/racer[1]/bib", xml, "1"); XmlAssertion.AssertXPathEvaluatesTo("/livetiming/startlist/racer[1]/lastname", xml, r.GetParticipant(1).Name); XmlAssertion.AssertXPathEvaluatesTo("/livetiming/startlist/racer[1]/firstname", xml, r.GetParticipant(1).Firstname); XmlAssertion.AssertXPathEvaluatesTo("/livetiming/startlist/racer[1]/nat", xml, r.GetParticipant(1).Nation); XmlAssertion.AssertXPathEvaluatesTo("/livetiming/startlist/racer[1]/fiscode", xml, r.GetParticipant(1).Code); }
[Test] public void AssertXslTransformResultsCatchesFalsePositive() { StreamReader xsl = GetStreamReader(".\\..\\tests\\etc\\animal.xsl"); XmlInput xslt = new XmlInput(xsl); StreamReader xml = GetStreamReader(".\\..\\tests\\etc\\testAnimal.xml"); XmlInput xmlToTransform = new XmlInput(xml); XmlInput expectedXml = new XmlInput("<cat/>"); bool exceptionExpected = true; try { XmlAssertion.AssertXslTransformResults(xslt, xmlToTransform, expectedXml); exceptionExpected = false; Assertion.Fail("Expected dog not cat!"); } catch (AssertionException e) { AvoidUnusedVariableCompilerWarning(e); if (!exceptionExpected) { throw e; } } }
/// <summary> /// Merges the modified attributes into <code>AttributeStatement</code> of the assertion. /// </summary> private void InsertAttributes() { if (_assertionAttributes == null) { return; } // Generate the new AttributeStatement var attributeStatement = new AttributeStatement(); var statements = new List <object>(_encryptedAssertionAttributes.Count + _assertionAttributes.Count); statements.AddRange(_assertionAttributes.ToArray()); statements.AddRange(_encryptedAssertionAttributes.ToArray()); attributeStatement.Items = statements.ToArray(); var list = XmlAssertion.GetElementsByTagName(AttributeStatement.ElementName, Saml20Constants.Assertion); if (list.Count > 0) { // Remove the old AttributeStatement. XmlAssertion.RemoveChild(list[0]); // FIX _samlAssertion.DocumentElement.RemoveChild(list[0]); } // Only insert a new AttributeStatement if there are attributes. if (statements.Count > 0) { // Convert the new AttributeStatement to the Document Object Model and make a silent prayer that one day we will // be able to make this transition in a more elegant way. var attributeStatementDoc = Serialization.Serialize(attributeStatement); var attr = XmlAssertion.OwnerDocument.ImportNode(attributeStatementDoc.DocumentElement, true); // Insert the new statement. XmlAssertion.AppendChild(attr); } _encryptedAssertionAttributes = null; _assertionAttributes = null; }
/// <summary> /// Extracts the list of attributes from the <AttributeStatement> of the assertion, and /// stores it in <code>_assertionAttributes</code>. /// </summary> private void ExtractAttributes() { _assertionAttributes = new List <SamlAttribute>(0); _encryptedAssertionAttributes = new List <EncryptedElement>(0); var list = XmlAssertion.GetElementsByTagName(AttributeStatement.ElementName, Saml20Constants.Assertion); if (list.Count == 0) { return; } // NOTE It would be nice to implement a better-performing solution where only the AttributeStatement is converted. // NOTE Namespace issues in the xml-schema "type"-attribute prevents this, though. var assertion = Serialization.Deserialize <Assertion>(new XmlNodeReader(XmlAssertion)); var attributeStatements = assertion.GetAttributeStatements(); if (attributeStatements.Count == 0 || attributeStatements[0].Items == null) { return; } var attributeStatement = attributeStatements[0]; foreach (var item in attributeStatement.Items) { if (item is SamlAttribute) { _assertionAttributes.Add((SamlAttribute)item); } if (item is EncryptedElement) { _encryptedAssertionAttributes.Add((EncryptedElement)item); } } }
public void VerifyXML_Run1() { TestDataGenerator tg = new TestDataGenerator(); fillMandatoryFields(tg.Model); // Run 1 tg.Model.GetRace(0).GetRun(0).SetStartFinishTime(tg.createRaceParticipant(cat: tg.findCat('M')), new TimeSpan(0, 8, 0, 0), new TimeSpan(0, 8, 0, 2)); tg.Model.GetRace(0).GetRun(0).SetStartFinishTime(tg.createRaceParticipant(cat: tg.findCat('M')), new TimeSpan(0, 8, 1, 0), new TimeSpan(0, 8, 1, 4)); tg.Model.GetRace(0).GetRun(0).SetStartFinishTime(tg.createRaceParticipant(cat: tg.findCat('M')), new TimeSpan(0, 8, 2, 0), new TimeSpan(0, 8, 2, 3)); tg.Model.GetRace(0).GetRun(0).SetStartFinishTime(tg.createRaceParticipant(cat: tg.findCat('M')), new TimeSpan(0, 8, 2, 0), null); tg.Model.GetRace(0).GetRun(0).SetResultCode(tg.Model.GetRace(0).GetParticipant(4), RunResult.EResultCode.NiZ); tg.Model.GetRace(0).GetRun(0).SetResultCode(tg.createRaceParticipant(cat: tg.findCat('M')), RunResult.EResultCode.NaS); tg.Model.GetRace(0).GetRun(0).SetResultCode(tg.createRaceParticipant(cat: tg.findCat('M')), RunResult.EResultCode.DIS, "Tor 2"); // Run 2 tg.Model.GetRace(0).GetRun(1).SetStartFinishTime(tg.Model.GetRace(0).GetParticipant(1), new TimeSpan(0, 9, 0, 0), new TimeSpan(0, 9, 0, 3)); tg.Model.GetRace(0).GetRun(1).SetStartFinishTime(tg.Model.GetRace(0).GetParticipant(2), new TimeSpan(0, 9, 1, 0), null); tg.Model.GetRace(0).GetRun(1).SetResultCode(tg.Model.GetRace(0).GetParticipant(2), RunResult.EResultCode.NiZ); tg.Model.GetRace(0).GetRun(1).SetResultCode(tg.Model.GetRace(0).GetParticipant(3), RunResult.EResultCode.DIS, "Tor 1"); // no eather set, check if weather is absent string s = exportToXML(tg.Model.GetRace(0)); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/raceresults/classified_competitors/ranked[@bib='1']/competitor/lastname", s, "Name 1"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/raceresults/classified_competitors/ranked[@bib='1']/@bib", s, "1"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/raceresults/classified_competitors/ranked[@bib='1']/raceresult/totaltime", s, "00:05.00"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/raceresults/classified_competitors/ranked[@bib='1']/raceresult/runtime[@runnumber='1']", s, "00:02.00"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/raceresults/classified_competitors/ranked[@bib='1']/raceresult/runtime[@runnumber='2']", s, "00:03.00"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/raceresults/not_classified_competitiors/notranked[@bib='2']/@status", s, "DNF2"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/raceresults/not_classified_competitiors/notranked[@bib='3']/@status", s, "DSQ2"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/raceresults/not_classified_competitiors/notranked[@bib='4']/@status", s, "DNF1"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/raceresults/not_classified_competitiors/notranked[@bib='5']/@status", s, "DNS1"); XmlAssertion.AssertXPathEvaluatesTo("/dsv_alpine_raceresults/raceresults/not_classified_competitiors/notranked[@bib='6']/@status", s, "DSQ1"); }
[Test] public void AssertXPathEvaluatesToWorksForNonMatchingExpression() { XmlAssertion.AssertXPathEvaluatesTo("//planet[@position='4']/@supportsLife", MY_SOLAR_SYSTEM, ""); }
/// <summary> /// Writes the token to a writer. /// </summary> /// <param name="writer">The writer.</param> public void WriteAssertion(XmlWriter writer) { XmlAssertion.WriteTo(writer); }
[Test] public void AssertXPathExistsWorksForExistentXPath() { XmlAssertion.AssertXPathExists("//planet[@name='Earth']", MY_SOLAR_SYSTEM); }