1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
using System.Threading;
using MonoDevelop.Ide.CodeCompletion;
using MonoDevelop.Xml.Completion;
using NUnit.Framework;
using System.Threading.Tasks;
namespace MonoDevelop.Xml.Tests.Schema
{
[TestFixture]
public class ReferencedElementsTestFixture : SchemaTestFixtureBase
{
CompletionDataList shipOrderAttributes;
CompletionDataList shipToAttributes;
XmlElementPath shipToPath;
XmlElementPath shipOrderPath;
async Task Init ()
{
if (shipOrderAttributes != null)
return;
// Get shipto attributes.
shipToPath = new XmlElementPath();
QualifiedName shipOrderName = new QualifiedName("shiporder", "http://www.w3schools.com");
shipToPath.Elements.Add(shipOrderName);
shipToPath.Elements.Add(new QualifiedName("shipto", "http://www.w3schools.com"));
shipToAttributes = await SchemaCompletionData.GetAttributeCompletionData(shipToPath, CancellationToken.None);
// Get shiporder attributes.
shipOrderPath = new XmlElementPath();
shipOrderPath.Elements.Add(shipOrderName);
shipOrderAttributes = await SchemaCompletionData.GetAttributeCompletionData(shipOrderPath, CancellationToken.None);
}
[Test]
public async Task OneShipOrderAttribute()
{
await Init ();
Assert.AreEqual(1, shipOrderAttributes.Count, "Should only have one shiporder attribute.");
}
[Test]
public async Task ShipOrderAttributeName()
{
await Init ();
Assert.IsTrue(SchemaTestFixtureBase.Contains(shipOrderAttributes,"id"),
"Incorrect shiporder attribute name.");
}
[Test]
public async Task OneShipToAttribute()
{
await Init ();
Assert.AreEqual(1, shipToAttributes.Count, "Should only have one shipto attribute.");
}
[Test]
public async Task ShipToAttributeName()
{
await Init ();
Assert.IsTrue(SchemaTestFixtureBase.Contains(shipToAttributes, "address"),
"Incorrect shipto attribute name.");
}
[Test]
public async Task ShipOrderChildElementsCount()
{
await Init ();
Assert.AreEqual(1, (await SchemaCompletionData.GetChildElementCompletionData(shipOrderPath, CancellationToken.None)).Count,
"Should be one child element.");
}
[Test]
public async Task ShipOrderHasShipToChildElement()
{
await Init ();
CompletionDataList data = await SchemaCompletionData.GetChildElementCompletionData(shipOrderPath, CancellationToken.None);
Assert.IsTrue(SchemaTestFixtureBase.Contains(data, "shipto"),
"Incorrect child element name.");
}
[Test]
public async Task ShipToChildElementsCount()
{
await Init ();
Assert.AreEqual(2, (await SchemaCompletionData.GetChildElementCompletionData(shipToPath, CancellationToken.None)).Count,
"Should be 2 child elements.");
}
[Test]
public async Task ShipToHasNameChildElement()
{
await Init ();
CompletionDataList data = await SchemaCompletionData.GetChildElementCompletionData(shipToPath, CancellationToken.None);
Assert.IsTrue(SchemaTestFixtureBase.Contains(data, "name"),
"Incorrect child element name.");
}
[Test]
public async Task ShipToHasAddressChildElement()
{
await Init ();
CompletionDataList data = await SchemaCompletionData.GetChildElementCompletionData(shipToPath, CancellationToken.None);
Assert.IsTrue(SchemaTestFixtureBase.Contains(data, "address"),
"Incorrect child element name.");
}
protected override string GetSchema()
{
return "<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" targetNamespace=\"http://www.w3schools.com\" xmlns=\"http://www.w3schools.com\">\r\n" +
"\r\n" +
"<!-- definition of simple elements -->\r\n" +
"<xs:element name=\"name\" type=\"xs:string\"/>\r\n" +
"<xs:element name=\"address\" type=\"xs:string\"/>\r\n" +
"\r\n" +
"<!-- definition of complex elements -->\r\n" +
"<xs:element name=\"shipto\">\r\n" +
" <xs:complexType>\r\n" +
" <xs:sequence>\r\n" +
" <xs:element ref=\"name\"/>\r\n" +
" <xs:element ref=\"address\"/>\r\n" +
" </xs:sequence>\r\n" +
" <xs:attribute name=\"address\"/>\r\n" +
" </xs:complexType>\r\n" +
"</xs:element>\r\n" +
"\r\n" +
"<xs:element name=\"shiporder\">\r\n" +
" <xs:complexType>\r\n" +
" <xs:sequence>\r\n" +
" <xs:element ref=\"shipto\"/>\r\n" +
" </xs:sequence>\r\n" +
" <xs:attribute name=\"id\"/>\r\n" +
" </xs:complexType>\r\n" +
"</xs:element>\r\n" +
"\r\n" +
"</xs:schema>";
}
}
}
|