@@ -105,7 +105,6 @@ private static IEnumerable<string> ConvertXml(string name, string xsd, Generator
105
105
const string DtsxPattern = "xsd/dtsx/dtsx2.xsd" ;
106
106
const string WfsPattern = "xsd/wfs/schemas.opengis.net/wfs/2.0/wfs.xsd" ;
107
107
const string EppPattern = "xsd/epp/*.xsd" ;
108
- const string XbrlPattern = "xsd/xbrl/xhtml-inlinexbrl-1_1.xsd" ;
109
108
110
109
// IATA test takes too long to perform every time
111
110
@@ -528,17 +527,67 @@ public void TestEpp()
528
527
[ UseCulture ( "en-US" ) ]
529
528
public void TestXbrl ( )
530
529
{
531
- var output = new FileWatcherOutputWriter ( Path . Combine ( "output" , "xbrl" ) ) ;
532
- var generator = new Generator
530
+ var outputPath = Path . Combine ( "output" , "xbrl" ) ;
531
+
532
+ var gen = new Generator
533
533
{
534
- OutputWriter = output ,
534
+ OutputFolder = outputPath ,
535
535
GenerateInterfaces = false ,
536
536
UniqueTypeNamesAcrossNamespaces = true ,
537
537
} ;
538
- generator . NamespaceProvider . Add ( new NamespaceKey ( "http://www.xbrl.org/2003/XLink" ) , "XbrlLink" ) ;
539
- var assembly = Compiler . Generate ( "xbrl" , XbrlPattern , generator ) ;
538
+
539
+ gen . NamespaceProvider . Add ( new NamespaceKey ( "http://www.xbrl.org/2003/XLink" ) , "XbrlLink" ) ;
540
+
541
+ var xsdFiles = new [ ]
542
+ {
543
+ "xhtml-inlinexbrl-1_1.xsd" ,
544
+ } . Select ( x => Path . Combine ( Directory . GetCurrentDirectory ( ) , "xsd" , "xbrl" , x ) ) . ToList ( ) ;
545
+
546
+ var assembly = Compiler . GenerateFiles ( "Xbrl" , xsdFiles , gen ) ;
540
547
Assert . NotNull ( assembly ) ;
541
- //TestSamples("xbrl", XbrlPattern);
548
+
549
+ var testFiles = new Dictionary < string , string >
550
+ {
551
+ { "Schaltbau.xhtml" , "XhtmlPeriodHtmlPeriodType" } ,
552
+ } ;
553
+
554
+ foreach ( var testFile in testFiles )
555
+ {
556
+ var type = assembly . GetTypes ( ) . SingleOrDefault ( t => t . Name == testFile . Value ) ;
557
+ Assert . NotNull ( type ) ;
558
+
559
+ var serializer = new XmlSerializer ( type ) ;
560
+ serializer . UnknownNode += new XmlNodeEventHandler ( UnknownNodeHandler ) ;
561
+ serializer . UnknownAttribute += new XmlAttributeEventHandler ( UnknownAttributeHandler ) ;
562
+ var unknownNodeError = false ;
563
+ var unknownAttrError = false ;
564
+
565
+ void UnknownNodeHandler ( object sender , XmlNodeEventArgs e )
566
+ {
567
+ unknownNodeError = true ;
568
+ }
569
+
570
+ void UnknownAttributeHandler ( object sender , XmlAttributeEventArgs e )
571
+ {
572
+ unknownAttrError = true ;
573
+ }
574
+
575
+ var xmlString = File . ReadAllText ( $ "xml/xbrl_tests/{ testFile . Key } ") ;
576
+ xmlString = Regex . Replace ( xmlString , "xsi:schemaLocation=\" [^\" ]*\" " , string . Empty ) ;
577
+ var reader = XmlReader . Create ( new StringReader ( xmlString ) , new XmlReaderSettings { IgnoreWhitespace = true } ) ;
578
+
579
+ var isDeserializable = serializer . CanDeserialize ( reader ) ;
580
+ Assert . True ( isDeserializable ) ;
581
+
582
+ var deserializedObject = serializer . Deserialize ( reader ) ;
583
+ Assert . False ( unknownNodeError ) ;
584
+ Assert . False ( unknownAttrError ) ;
585
+
586
+ var serializedXml = Serialize ( serializer , deserializedObject , GetNamespacesFromSource ( xmlString ) ) ;
587
+
588
+ var deserializedXml = serializer . Deserialize ( new StringReader ( serializedXml ) ) ;
589
+ AssertEx . Equal ( deserializedObject , deserializedXml ) ;
590
+ }
542
591
}
543
592
544
593
private void TestSamples ( string name , string pattern )
0 commit comments