@@ -133,6 +133,45 @@ describe("Core/CesiumTerrainProvider", function () {
133
133
) ;
134
134
}
135
135
136
+ function returnParentUrlTileJsonWithMetadataAvailability ( ) {
137
+ const paths = [
138
+ "Data/CesiumTerrainTileJson/ParentUrlAvailability.tile.json" ,
139
+ "Data/CesiumTerrainTileJson/ParentAvailability.tile.json" ,
140
+ ] ;
141
+ let i = 0 ;
142
+ const oldLoad = Resource . _Implementations . loadWithXhr ;
143
+ Resource . _Implementations . loadWithXhr = function (
144
+ url ,
145
+ responseType ,
146
+ method ,
147
+ data ,
148
+ headers ,
149
+ deferred ,
150
+ overrideMimeType
151
+ ) {
152
+ if ( url . indexOf ( "layer.json" ) >= 0 ) {
153
+ Resource . _DefaultImplementations . loadWithXhr (
154
+ paths [ i ++ ] ,
155
+ responseType ,
156
+ method ,
157
+ data ,
158
+ headers ,
159
+ deferred
160
+ ) ;
161
+ } else {
162
+ return oldLoad (
163
+ url ,
164
+ responseType ,
165
+ method ,
166
+ data ,
167
+ headers ,
168
+ deferred ,
169
+ overrideMimeType
170
+ ) ;
171
+ }
172
+ } ;
173
+ }
174
+
136
175
async function waitForTile ( level , x , y , requestNormals , requestWaterMask , f ) {
137
176
const terrainProvider = await CesiumTerrainProvider . fromUrl ( "made/up/url" , {
138
177
requestVertexNormals : requestNormals ,
@@ -899,6 +938,43 @@ describe("Core/CesiumTerrainProvider", function () {
899
938
expect ( terrainProvider . availability . isTileAvailable ( 1 , 0 , 0 ) ) . toBe ( true ) ;
900
939
} ) ;
901
940
941
+ it ( "provides QuantizedMeshTerrainData with multiple layers and with Metadata availability " , async function ( ) {
942
+ Resource . _Implementations . loadWithXhr = function (
943
+ url ,
944
+ responseType ,
945
+ method ,
946
+ data ,
947
+ headers ,
948
+ deferred ,
949
+ overrideMimeType
950
+ ) {
951
+ Resource . _DefaultImplementations . loadWithXhr (
952
+ "Data/CesiumTerrainTileJson/tile.metadataavailability.terrain" ,
953
+ responseType ,
954
+ method ,
955
+ data ,
956
+ headers ,
957
+ deferred
958
+ ) ;
959
+ } ;
960
+
961
+ returnParentUrlTileJsonWithMetadataAvailability ( ) ;
962
+
963
+ const terrainProvider = await CesiumTerrainProvider . fromUrl (
964
+ "made/up/url"
965
+ ) ;
966
+
967
+ expect ( terrainProvider . hasMetadata ) . toBe ( true ) ;
968
+ const layers = terrainProvider . _layers ;
969
+ expect ( layers . length ) . toBe ( 2 ) ;
970
+
971
+ expect ( terrainProvider . availability . isTileAvailable ( 1 , 0 , 0 ) ) . toBe ( false ) ;
972
+
973
+ const loadedData = await terrainProvider . requestTileGeometry ( 0 , 0 , 1 ) ;
974
+ expect ( loadedData ) . toBeInstanceOf ( QuantizedMeshTerrainData ) ;
975
+ expect ( terrainProvider . availability . isTileAvailable ( 1 , 0 , 0 ) ) . toBe ( true ) ;
976
+ } ) ;
977
+
902
978
it ( "returns undefined if too many requests are already in progress" , async function ( ) {
903
979
const baseUrl = "made/up/url" ;
904
980
0 commit comments