@@ -13,6 +13,14 @@ import { Shape } from 'three';
1313import { 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+
1624test ( '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