Skip to content

Commit 6e46da8

Browse files
authored
Combine ways (#82)
* Update combine_ways.js * Update combine_ways.je
1 parent 02372a8 commit 6e46da8

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

test/combine_ways.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,14 @@ import { Shape } from 'three';
1313
import { BuildingShapeUtils } from '../src/extras/BuildingShapeUtils.js';
1414
// import { JSDOM } from 'jsdom';
1515

16+
test('Test no combining necessary. one open way', () => {
17+
var way1 = '<way id="1"><nd ref="1"/><nd ref="2"/><nd ref="3"/><nd ref="4"/></way>';
18+
let parser = new window.DOMParser();
19+
let xml1 = parser.parseFromString(way1, 'text/xml').getElementsByTagName('way')[0];
20+
let result = BuildingShapeUtils.combineWays([xml1]);
21+
expect(result.length).toBe(0);
22+
});
23+
1624
test('Test combining 2 ways 1->2', () => {
1725
var way1 = '<way id="1"><nd ref="1"/><nd ref="2"/><nd ref="3"/></way>';
1826
var way2 = '<way id="2"><nd ref="3"/><nd ref="4"/><nd ref="1"/></way>';
@@ -51,3 +59,34 @@ test('Test combining 2 unaligned ways', () => {
5159
let expected = parser.parseFromString(way3, 'text/xml');
5260
expect(result[0].outerHTML).toBe(way3);
5361
});
62+
63+
test('Test combining 3 ways 1->2->3', () => {
64+
var way1 = '<way id="1"><nd ref="1"/><nd ref="2"/><nd ref="3"/></way>';
65+
var way2 = '<way id="2"><nd ref="3"/><nd ref="4"/><nd ref="5"/></way>';
66+
var way3 = '<way id="3"><nd ref="5"/><nd ref="6"/><nd ref="1"/></way>';
67+
var way4 = '<way id="1"><nd ref="1"/><nd ref="2"/><nd ref="3"/><nd ref="4"/><nd ref="5"/><nd ref="6"/><nd ref="1"/></way>';
68+
let parser = new window.DOMParser();
69+
let xml1 = parser.parseFromString(way1, 'text/xml').getElementsByTagName('way')[0];
70+
let xml2 = parser.parseFromString(way2, 'text/xml').getElementsByTagName('way')[0];
71+
let xml3 = parser.parseFromString(way3, 'text/xml').getElementsByTagName('way')[0];
72+
let result = BuildingShapeUtils.combineWays([xml1, xml2, xml3]);
73+
expect(result.length).toBe(1);
74+
let expected = parser.parseFromString(way4, 'text/xml');
75+
expect(result[0].outerHTML).toBe(way3);
76+
});
77+
78+
test('Test combining 4 ways', () => {
79+
var way1 = '<way id="1"><nd ref="1"/><nd ref="2"/><nd ref="3"/></way>';
80+
var way2 = '<way id="2"><nd ref="3"/><nd ref="4"/><nd ref="5"/></way>';
81+
var way3 = '<way id="3"><nd ref="6"/><nd ref="5"/></way>';
82+
var way4 = '<way id="4"><nd ref="6"/><nd ref="1"/><nd ref="1"/></way>';
83+
var way5 = '<way id="1"><nd ref="1"/><nd ref="2"/><nd ref="3"/><nd ref="4"/><nd ref="5"/><nd ref="6"/><nd ref="1"/></way>';
84+
let parser = new window.DOMParser();
85+
let xml1 = parser.parseFromString(way1, 'text/xml').getElementsByTagName('way')[0];
86+
let xml2 = parser.parseFromString(way2, 'text/xml').getElementsByTagName('way')[0];
87+
let xml3 = parser.parseFromString(way3, 'text/xml').getElementsByTagName('way')[0];
88+
let result = BuildingShapeUtils.combineWays([xml1, xml2, xml3]);
89+
expect(result.length).toBe(1);
90+
let expected = parser.parseFromString(way4, 'text/xml');
91+
expect(result[0].outerHTML).toBe(way3);
92+
});

0 commit comments

Comments
 (0)