Skip to content

Commit a6ec0af

Browse files
committed
test: verify multiple inheritance conflict resolution
Outlines solution to #36
1 parent 581d3bd commit a6ec0af

File tree

4 files changed

+80
-0
lines changed

4 files changed

+80
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"name": "Multiple Inheritance Base",
3+
"uri": "http://multiple-inheritance-base",
4+
"prefix": "b",
5+
"types": [
6+
{
7+
"name": "Element",
8+
"properties": [
9+
{ "name": "ownedElement", "type": "b:Element", "isMany": true }
10+
]
11+
},
12+
{
13+
"name": "PackageableElement",
14+
"superClass": [ "b:Element" ]
15+
}
16+
]
17+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"name": "Multiple Inheritance Glue",
3+
"uri": "http://multiple-inheritance-glue",
4+
"prefix": "g",
5+
"types": [
6+
{
7+
"name": "Diagram",
8+
"superClass": [
9+
"b:PackageableElement"
10+
],
11+
"extends": [
12+
"o:Diagram"
13+
]
14+
}
15+
]
16+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"name": "Multiple Inheritance Other",
3+
"uri": "http://multiple-inheritance-other",
4+
"prefix": "o",
5+
"types": [
6+
{
7+
"name": "DiagramElement",
8+
"properties": [
9+
{ "name": "ownedElement", "type": "DiagramElement", "isMany": true }
10+
]
11+
},
12+
{
13+
"name": "Diagram",
14+
"superClass": [
15+
"DiagramElement"
16+
]
17+
}
18+
]
19+
}

test/spec/extension.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,34 @@ describe('extension', function() {
212212

213213
});
214214

215+
216+
describe('name clashes', function() {
217+
218+
var model = createModel([
219+
'multiple-inheritance/base',
220+
'multiple-inheritance/other',
221+
'multiple-inheritance/glue'
222+
]);
223+
224+
225+
it('should handle multiple inheritance through virtual package', function() {
226+
227+
var baseElement = model.create('b:Element');
228+
229+
var otherElement = model.create('o:DiagramElement');
230+
231+
var diagram = model.create('o:Diagram', {
232+
'b:ownedElement': [ baseElement ],
233+
ownedElement: [ otherElement ]
234+
});
235+
236+
// then
237+
expect(diagram.$instanceOf('b:Element')).to.be.true;
238+
expect(diagram.$instanceOf('o:DiagramElement')).to.be.true;
239+
});
240+
241+
});
242+
215243
});
216244

217245

0 commit comments

Comments
 (0)