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
import { FeatureDetection } from "../../../Source/Cesium.js";
import createScene from "../../createScene.js";
import DomEventSimulator from "../../DomEventSimulator.js";
import { SceneModePicker } from "../../../Source/Cesium.js";
 
describe(
  "Widgets/SceneModePicker/SceneModePicker",
  function () {
    var scene;
 
    beforeAll(function () {
      scene = createScene();
    });
 
    afterAll(function () {
      scene.destroyForSpecs();
    });
 
    it("can create and destroy", function () {
      var container = document.createElement("span");
      container.id = "testContainer";
      document.body.appendChild(container);
 
      var widget = new SceneModePicker("testContainer", scene);
      expect(widget.container.id).toBe(container.id);
      expect(widget.isDestroyed()).toEqual(false);
 
      widget.destroy();
      expect(widget.isDestroyed()).toEqual(true);
 
      document.body.removeChild(container);
    });
 
    function addCloseOnInputSpec(name, func) {
      it(
        name + " event closes dropdown if target is not inside container",
        function () {
          var container = document.createElement("span");
          container.id = "testContainer";
          document.body.appendChild(container);
 
          var widget = new SceneModePicker("testContainer", scene);
 
          widget.viewModel.dropDownVisible = true;
          func(document.body);
          expect(widget.viewModel.dropDownVisible).toEqual(false);
 
          widget.viewModel.dropDownVisible = true;
          func(container.firstChild);
          expect(widget.viewModel.dropDownVisible).toEqual(true);
 
          widget.destroy();
          document.body.removeChild(container);
        }
      );
    }
 
    if (FeatureDetection.supportsPointerEvents()) {
      addCloseOnInputSpec("pointerDown", DomEventSimulator.firePointerDown);
    } else {
      addCloseOnInputSpec("mousedown", DomEventSimulator.fireMouseDown);
      addCloseOnInputSpec("touchstart", DomEventSimulator.fireTouchStart);
    }
 
    it("constructor throws with no transitioner", function () {
      expect(function () {
        return new SceneModePicker(document.body, undefined);
      }).toThrowDeveloperError();
    });
 
    it("constructor throws with no element", function () {
      expect(function () {
        return new SceneModePicker(undefined, scene);
      }).toThrowDeveloperError();
    });
 
    it("constructor throws with string element that does not exist", function () {
      expect(function () {
        return new SceneModePicker("does not exist", scene);
      }).toThrowDeveloperError();
    });
  },
  "WebGL"
);