@@ -20,11 +20,20 @@ internal static class SharedTestFunctions
20
20
{
21
21
private static readonly XmlQualifiedName AnyType = new ( "anyType" , XmlSchema . Namespace ) ;
22
22
23
- internal static void TestSamples ( ITestOutputHelper output , string name , string pattern )
23
+ internal static void TestSamples ( ITestOutputHelper output , string name , string pattern ,
24
+ List < XmlQualifiedName > typesToTest = null )
24
25
{
25
26
var assembly = Compiler . GetAssembly ( name ) ;
26
27
Assert . NotNull ( assembly ) ;
27
- DeserializeSampleXml ( output , pattern , assembly ) ;
28
+ DeserializeSampleXml ( output , pattern , assembly , typesToTest ) ;
29
+ }
30
+
31
+ internal static void TestSimple ( ITestOutputHelper output , string name , string pattern ,
32
+ List < XmlQualifiedName > typesToTest = null )
33
+ {
34
+ var assembly = Compiler . GetAssembly ( name ) ;
35
+ Assert . NotNull ( assembly ) ;
36
+ DeserializeSimpleXml ( output , pattern , assembly , typesToTest ) ;
28
37
}
29
38
30
39
internal static string Serialize ( XmlSerializer serializer , object o , IDictionary < string , string > prefixToNsMap = null )
@@ -49,7 +58,43 @@ internal static string Serialize(XmlSerializer serializer, object o, IDictionary
49
58
return serializedXml ;
50
59
}
51
60
52
- private static void DeserializeSampleXml ( ITestOutputHelper output , string pattern , Assembly assembly )
61
+ private static void DeserializeSimpleXml ( ITestOutputHelper output , string pattern , Assembly assembly ,
62
+ List < XmlQualifiedName > typesToTest = null )
63
+ {
64
+ var files = Glob . ExpandNames ( pattern ) ;
65
+
66
+ var set = new XmlSchemaSet ( ) ;
67
+ var xmlSchemaReaderSettings = new XmlReaderSettings { DtdProcessing = DtdProcessing . Ignore } ;
68
+
69
+ set . XmlResolver = new XmlUrlResolver ( ) ;
70
+
71
+ var readers = files . Select ( f => XmlReader . Create ( f , xmlSchemaReaderSettings ) ) ;
72
+
73
+ foreach ( var reader in readers )
74
+ set . Add ( null , reader ) ;
75
+
76
+ set . Compile ( ) ;
77
+
78
+ foreach ( var rootElement in set . GlobalElements . Values . Cast < XmlSchemaElement > ( ) . Where ( e =>
79
+ ! e . IsAbstract
80
+ && e . ElementSchemaType is not XmlSchemaSimpleType
81
+ && e . ElementSchemaType . QualifiedName != AnyType
82
+ && ( typesToTest == null || typesToTest . Contains ( e . QualifiedName ) ) ) )
83
+ {
84
+ var type = FindType ( assembly , rootElement . QualifiedName ) ;
85
+ var serializer = new XmlSerializer ( type ) ;
86
+ Assert . NotNull ( serializer ) ;
87
+ var o = Activator . CreateInstance ( type ) ;
88
+ var xml = Serialize ( serializer , o ) ;
89
+ Assert . NotNull ( xml ) ;
90
+ Assert . NotEmpty ( xml ) ;
91
+ var o2 = serializer . Deserialize ( new StringReader ( xml ) ) ;
92
+ AssertEx . Equal ( o , o2 ) ;
93
+ }
94
+ }
95
+
96
+ private static void DeserializeSampleXml ( ITestOutputHelper output , string pattern , Assembly assembly ,
97
+ List < XmlQualifiedName > typesToTest = null )
53
98
{
54
99
var files = Glob . ExpandNames ( pattern ) ;
55
100
@@ -71,7 +116,8 @@ private static void DeserializeSampleXml(ITestOutputHelper output, string patter
71
116
foreach ( var rootElement in set . GlobalElements . Values . Cast < XmlSchemaElement > ( ) . Where ( e =>
72
117
! e . IsAbstract
73
118
&& e . ElementSchemaType is not XmlSchemaSimpleType
74
- && e . ElementSchemaType . QualifiedName != AnyType ) )
119
+ && e . ElementSchemaType . QualifiedName != AnyType
120
+ && ( typesToTest == null || typesToTest . Contains ( e . QualifiedName ) ) ) )
75
121
{
76
122
var type = FindType ( assembly , rootElement . QualifiedName ) ;
77
123
var serializer = new XmlSerializer ( type ) ;
0 commit comments