yzt
2023-05-26 de4278af2fd46705a40bac58ec01122db6b7f3d7
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
import {
  B3dmParser,
  Cartesian3,
  HeadingPitchRange,
} from "../../Source/Cesium.js";
import Cesium3DTilesTester from "../Cesium3DTilesTester.js";
import createScene from "../createScene.js";
 
describe(
  "Scene/B3dmParser",
  function () {
    var scene;
    var centerLongitude = -1.31968;
    var centerLatitude = 0.698874;
 
    var deprecated1Url =
      "./Data/Cesium3DTiles/Batched/BatchedDeprecated1/tileset.json";
    var deprecated2Url =
      "./Data/Cesium3DTiles/Batched/BatchedDeprecated2/tileset.json";
 
    function setCamera(longitude, latitude) {
      // One feature is located at the center, point the camera there
      var center = Cartesian3.fromRadians(longitude, latitude);
      scene.camera.lookAt(center, new HeadingPitchRange(0.0, -1.57, 15.0));
    }
 
    beforeAll(function () {
      scene = createScene();
 
      // Keep the error from logging to the console when running tests
      spyOn(B3dmParser, "_deprecationWarning");
    });
 
    afterAll(function () {
      scene.destroyForSpecs();
    });
 
    beforeEach(function () {
      setCamera(centerLongitude, centerLatitude);
    });
 
    afterEach(function () {
      scene.primitives.removeAll();
    });
 
    it("throws with invalid version", function () {
      var arrayBuffer = Cesium3DTilesTester.generateBatchedTileBuffer({
        version: 2,
      });
      Cesium3DTilesTester.loadTileExpectError(scene, arrayBuffer, "b3dm");
    });
 
    it("throws with empty gltf", function () {
      // Expect to throw DeveloperError in Model due to invalid gltf magic
      var arrayBuffer = Cesium3DTilesTester.generateBatchedTileBuffer();
      Cesium3DTilesTester.loadTileExpectError(scene, arrayBuffer, "b3dm");
    });
 
    it("throws on undefined arrayBuffer", function () {
      expect(function () {
        B3dmParser.parse(undefined);
      }).toThrowDeveloperError();
    });
 
    it("recognizes the legacy 20-byte header", function () {
      return Cesium3DTilesTester.loadTileset(scene, deprecated1Url).then(
        function (tileset) {
          expect(B3dmParser._deprecationWarning).toHaveBeenCalled();
          Cesium3DTilesTester.expectRenderTileset(scene, tileset);
          var batchTable = tileset.root.content.batchTable;
          expect(batchTable._properties).toBeDefined();
        }
      );
    });
 
    it("recognizes the legacy 24-byte header", function () {
      return Cesium3DTilesTester.loadTileset(scene, deprecated2Url).then(
        function (tileset) {
          expect(B3dmParser._deprecationWarning).toHaveBeenCalled();
          Cesium3DTilesTester.expectRenderTileset(scene, tileset);
          var batchTable = tileset.root.content.batchTable;
          expect(batchTable._properties).toBeDefined();
        }
      );
    });
 
    it("logs deprecation warning for use of BATCHID without prefixed underscore", function () {
      return Cesium3DTilesTester.loadTileset(scene, deprecated1Url).then(
        function (tileset) {
          expect(B3dmParser._deprecationWarning).toHaveBeenCalled();
          Cesium3DTilesTester.expectRenderTileset(scene, tileset);
        }
      );
    });
  },
  "WebGL"
);