15832144755
2022-01-06 7b4c8991dca9cf2a809a95e239d144697d3afb56
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import { Cartesian3 } from "../../Source/Cesium.js";
import { JulianDate } from "../../Source/Cesium.js";
import { ReferenceFrame } from "../../Source/Cesium.js";
import { ConstantPositionProperty } from "../../Source/Cesium.js";
import { PositionPropertyArray } from "../../Source/Cesium.js";
import { SampledPositionProperty } from "../../Source/Cesium.js";
 
describe("DataSources/PositionPropertyArray", function () {
  var time = JulianDate.now();
 
  it("default constructor sets expected values", function () {
    var property = new PositionPropertyArray();
    expect(property.isConstant).toBe(true);
    expect(property.getValue(time)).toBeUndefined();
  });
 
  it("constructor sets expected values", function () {
    var expected = [Cartesian3.UNIT_X, Cartesian3.UNIT_Z];
    var value = [
      new ConstantPositionProperty(Cartesian3.UNIT_X),
      new ConstantPositionProperty(Cartesian3.UNIT_Z),
    ];
    var property = new PositionPropertyArray(value);
    expect(property.getValue(time)).toEqual(expected);
  });
 
  it("setValue raises definitionChanged event", function () {
    var property = new PositionPropertyArray();
    var listener = jasmine.createSpy("listener");
    property.definitionChanged.addEventListener(listener);
    property.setValue([]);
    expect(listener).toHaveBeenCalledWith(property);
  });
 
  it("changing array member raises definitionChanged event", function () {
    var property = new PositionPropertyArray();
    var item = new ConstantPositionProperty(Cartesian3.UNIT_X);
    property.setValue([item]);
    var listener = jasmine.createSpy("listener");
    property.definitionChanged.addEventListener(listener);
    item.setValue(Cartesian3.UNIT_Z);
    expect(listener).toHaveBeenCalledWith(property);
  });
 
  it("works with result parameter", function () {
    var expected = [Cartesian3.UNIT_X, Cartesian3.UNIT_Z];
    var expectedResult = [];
    var value = [
      new ConstantPositionProperty(Cartesian3.UNIT_X),
      new ConstantPositionProperty(Cartesian3.UNIT_Z),
    ];
    var property = new PositionPropertyArray(value);
    var result = property.getValue(time, expectedResult);
    expect(result).toEqual(expected);
    expect(result).toBe(expectedResult);
  });
 
  it("works with  reference frame parameter", function () {
    var value = [
      new ConstantPositionProperty(Cartesian3.UNIT_X, ReferenceFrame.INERTIAL),
      new ConstantPositionProperty(Cartesian3.UNIT_Z, ReferenceFrame.FIXED),
    ];
    var expected = [
      value[0].getValueInReferenceFrame(time, ReferenceFrame.INERTIAL),
      value[1].getValueInReferenceFrame(time, ReferenceFrame.INERTIAL),
    ];
    var property = new PositionPropertyArray(value);
    var result = property.getValueInReferenceFrame(
      time,
      ReferenceFrame.INERTIAL
    );
    expect(result).toEqual(expected);
  });
 
  it("works with undefined value", function () {
    var property = new PositionPropertyArray();
    property.setValue(undefined);
    expect(property.getValue(time)).toBeUndefined();
  });
 
  it("works with undefined propertyvalue", function () {
    var property = new PositionPropertyArray();
    property.setValue([new ConstantPositionProperty()]);
    expect(property.getValue(time)).toEqual([]);
  });
 
  it("works with empty array", function () {
    var property = new PositionPropertyArray();
    property.setValue([]);
    expect(property.getValue(time)).toEqual([]);
  });
 
  it("equals works", function () {
    var left = new PositionPropertyArray([
      new ConstantPositionProperty(Cartesian3.UNIT_X),
    ]);
    var right = new PositionPropertyArray([
      new ConstantPositionProperty(Cartesian3.UNIT_X),
    ]);
 
    expect(left.equals(right)).toEqual(true);
 
    right = new PositionPropertyArray([
      new ConstantPositionProperty(Cartesian3.UNIT_Z),
    ]);
    expect(left.equals(right)).toEqual(false);
 
    left = new PositionPropertyArray();
    right = new PositionPropertyArray();
    expect(left.equals(right)).toEqual(true);
  });
 
  it("isConstant is true only if all members are constant", function () {
    var property = new PositionPropertyArray();
 
    property.setValue([new ConstantPositionProperty(Cartesian3.UNIT_X)]);
    expect(property.isConstant).toBe(true);
 
    var sampledProperty = new SampledPositionProperty();
    sampledProperty.addSample(time, Cartesian3.UNIT_X);
    property.setValue([
      new ConstantPositionProperty(Cartesian3.UNIT_Z),
      sampledProperty,
    ]);
 
    expect(property.isConstant).toBe(false);
  });
});